2020-10-27——node.js的web框架-expres

2020-10-27  本文已影响0人  有事留言Thank

 常见的基于node.js的web框架-----市场占有率来区分程度

1.Express 基于node.js的web框架  庞大

2.koa.js  Express 幕后的原班人马打造,更小,更精简!

3.egg.js 阿里开源的框架,面向企业

npm 项目初始化

npm init  (名字)  初始化生成npm文件

npm init -y  快速初始化

npm istall  下载包

npm i  下载包

链式调用

链式原理

dependencies  依赖

path 请求路径

get  回调函数

自动重启node服务器的库:nodemon库

npm install -g  安装方法

-g  全局安装 不是安装在项目 安装在系统目录里面

nodemon index.js  使用方法

get可以设置不同接口

/userLogin 接口

post 与 get 可以同时使用,  路径相同是没有冲突的。

请求post 响应(拦截)post

请求get 返回(拦截)get

postman  自动帮我们转译中文编码

res.setHeader('content-type','text/plain;charset=utf-8') 设置响应头

res.end ()方法  发送没有自动编译

res.send()方法 是express给我们提供更便捷的方法,可以自动设置响应头,解决中文乱码问题

app.all() 方法  同时拦截get和post请求

express获取get请求方式的参数

req.qurery 得到请求参数的对象

express获取post请求方式的参数

body-parser 是一个中间件,不是express自带,使用前需要重新安装

npm install body-parser

app.use(bodyParser.urlencoded({}))

urlencoded

extended:false _____默认false 普通的解析 常用

extended:true_______  特殊的解析 不用

(body-parse )中间件的基本概念  express 中间件处理的原料是response对象

express设置静态资源目录 (静态资源配置)

静态文件:一些普通的html,css,js,图片,当用户访问到什么就显示什么

app.use(express。sratic('public  路径'))

node服务器根目录——当前路径

(__dirname, 'public') 定义是按代码的优先级来解析的

app.use('虚拟目录',express.static(public))

虚拟目录:不存在的目录,但是为了安全

异常处理 

**`try...catch`**语句标记要尝试的语句块,并指定一个出现异常时抛出的响应。

try{  编写业务代码

} catch(e){

e表示异常信息  } 

express统一 异常处理的方法

因为代码中大量重复的try catch

app.use(function(err异常信息,req请求对象,res响应对象,next中间件特有对象){

​ console.error(err.stack) 异常堆栈  分析bug从开始哪里出错

res.status(500 状态码).send('发送-服务器异常')  //给客户端返回状态码为500的值,

})

stcak 堆 栈

express 处理404异常 统一异常处理是没有顺序关系的。

但是404异常处理和二人处理都要放在逻辑代码的后面,否则会出现拦截代码无法执行的情况

app.use(function (req, res, next) {

  res.status(404).send('发送路径')  //给客户端返回状态码为404的值,

})

Express路由中间件() 大项目使用。实现文件拆 分  router 路由

为什么要使用路由中间件 :所有接口都写在一个文件中,会导致文件庞大,很难维护

模块不能互相调用, 会出现死循环

导出单个对象的区别

把整个文件格式化成对象,然后再把这个对象导出?  可以这么理解?

客户端渲染的问题

1.会增加请求导致宽带小号

2.SEO问题,ajax没触发,点击进去页面才能生成关键字,搜索找不到关键字,所以会降低网页的排

engine 增加art模板解析引擎

app.set('view engine ' ,'art')

res.render('') 出发

———————————————————————————————————————————————————————————————

express是一个简洁而灵活的node.js web应用框架。提供了一系列强大特性帮助你创建各种web应用。

框架只是对原生JS做二次封装,提供更便捷的方式给开发者开发应用。

1.express安装与使用  npm install express 

2.创建服务器 

// 引入express框架constexpress=require("express");

// 通过构造函数创建服务器constapp=express();

// 监听8080端口app.listen(8080)

;// 监听请求和设置请求回调,就算返回中文也不需要设置响应头,因为框架已经帮我们处理了app.get("/",(req,res)=>res.send("你好,express"));


接受get和post请求

express().get(‘路径’,请求与响应)

express().post(‘路径’,请求与响应)

get获取参数

假设访问URL为/getUser?name=tom需要获取name的值,可以通过req.query获取,res.query返回的是一个对象

post获取参数

使用body-parser中间件处理

2.中间件的基本概念

中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。

3.设置静态资源

express提供了专门用于处理静态资源的中间件express.static('静态目录')

app.use("/static",express.static("public"));

4 路由中间件

Express中的路由,负责路由的代码,也是可以放到一个独立文件的,我们一般把这个文件叫router.js

5.异常处理

异常表示程序执行过程中出现非预期情况,为了捕获这个异常,我们常用try catch语法

5.1 Express异常处理

// 记得放在路由后面app.use((err,req,res,next)=>{res.status(500).send({code:500,msg:"服务器异常"});});

5.2 404 资源找不到异常

服务端往往还有一种异常就是访问不存在的资源,也就是我们常见的404错误。

// 处理资源找不到异常app.use((req,res)=>{res.status(404).send({code:404,msg:"资源找不到"});});

5.3

设置跨域

app.all('*',function(req,res,next){res.header('Access-Control-Allow-Origin','*');next();});

6 客户端渲染

客户端渲染有两个问题,第一个问题:需要发送两次请求,第一次请求页面,第二次ajax请求数据。第二个问题:客户端渲染由于第一次请求是没有数据的,导致搜索引擎没法收录页面,也就是SEO问题

7服务端渲染

服务端渲染意思是把页面渲染这步骤放在服务端,减少客户端二次请求。

下图是服务端渲染的流程图,可以

看到页面渲染被移动到服务端处理了。

1、安装

npminstall--save art-templatenpminstall--save express-art-template

2、配置模版引擎

3、使用art-template编写模版

上一篇 下一篇

猜你喜欢

热点阅读