美文网首页
2020-10-27——node.js的web框架-expres

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

作者: 有事留言Thank | 来源:发表于2020-10-27 23:27 被阅读0次

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

    相关文章

      网友评论

          本文标题:2020-10-27——node.js的web框架-expres

          本文链接:https://www.haomeiwen.com/subject/ebpfvktx.html