常见的基于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编写模版
网友评论