nodeJS里面的Express架构

Express

网址:https://www.expressjs.com.cn/

Express执行原理:先查找有没有对应的静态资源,看有没有静态资源,有静态资源就执行静态资源,如果没有静态资源就去查找路由匹配动态资源,查找到动态资源,就执行动态资源,没有的话就执行404.

中间件:中间件主要是指封装所有Http请求细节处理的方法,是从Http请求发起到响应结束过程中的处理方法。它最大的特点,就是一个中间件处理完,再传递给下一个中间件。

全局安装

  1. 安装生成器到全局
    npm install -g express-generator

  2. 创建一个新的目录,并命令行进入该目录下

  3. 执行生成项目骨架的命令

    express

  4. 执行命令下载所有依赖包

    npm install

  5. 执行命令启动服务器

    npm start

局部安装

  1. 创建一个新的目录,并命令行进入该目录下

  2. 通过npx生成项目骨架

    npx express-generator

  3. 执行命令下载所有依赖包

    npm install

    缩写:npm i

  4. 执行命令启动服务器

    npm start

里面内容介绍

package.json中运行

 "scripts": {
    "start": "node ./bin/www",   //这个要启动的话直接npm startjiuxing 
    "hello": "node ./bin/www"	 //这个不是start的话就要npm run hello才行
  },

如果想要修改端口号的话,就在bin文件下的www下面修改

var port = normalizePort(process.env.PORT || '3000');

路由

用于动态资源

概念:

搭建 Web 服务器,一个最基本的功能就是要处理 HTTP 请求,并且根据请求返回正确的内容。对于不同的 HTTP 请求,就需要建立路由来进行处理。本文将简单介绍 Express 中的路由中间件。

参数获取
  1. request.params
  2. request.query :get提交获取参数的方法
  3. request.body :post提交获取参数的方法
  4. res.send:消息返回
一级路由

app.js里面

//一级路由
//访问一级路由:http://localhost:3000/users
app.use('/', indexRouter);
app.use('/users', usersRouter);
二级路由

routes里面的文件夹里面

//二级路由
//访问二级路由:http://localhost:3000/users/reg
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});
router.get('/reg', function(req, res) {
  res.send('respond with a resource reg');
});

get和post的区别

获取参数:在有表单的时候就用post提交,没有表单的就用get提交

get:

1.访问更加直接和简单

2.请求路劲的长度有限制,不同的浏览器限制不同

3.参数是跟在路径后面的,安全性较低

4.参数是有历史记录的

获取参数的方法
router.get('/reg', function(req, res) {
  let {username,pwd} = req.query;
  console.log("用户名和密码",username,pwd);
  res.send('get提交成功');
});
post:

1.必须使用表单或者AJAX发起请求

2.没有路径和参数的长度限制

3.参数是放在请求消息体中,安全性相对较高

4.参数没有历史记录

获取参数的方法
 <form action="/users/login" method="post">
            <label for="username">用户名:</label>
            <input type="text" name="username" id="username">
            <br>
            <label for="pwd">密码:</label>
            <input type="text" name="pwd" id="pwd">
            <br>
            <input type="submit" value="提交">
 </form>
 
 router.post('/login', function(req, res) {
  let {username,pwd} = req.body;
  console.log("用户名和密码:",username,pwd);
  res.send('post提交成功');
 });
    

分层

作用

职责更加清晰

增加代码的灵活性和扩展性

提高可维护性

三层架构

在这里插入图片描述

1.表现层

主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

2.业务层

主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

3持久层

主要看数据层里面有没有包含逻辑处理,实际上它的各个函数主要完成各个对数据文件的操作。而不必管其他操作。

MVC三层架构

只属于表现层

分页

1.作用
  1. 提高渲染效果
  2. 提高用户的体验感
2.如何分页
前端分页
  • ui组件分装好的分页控件
后端分页
  • 程序代码分页
    • 优点:通用性
    • 缺点:内存消耗过大,性能降低
  • 数据库查询分页‘(主要使用)
    • 优点:内存消耗小,性能高
    • 缺点:通用性低
3.核心概念
  1. 页码
  2. 每页显示数
  3. 数据总数
  4. 总页码=Math.ceil(数据总数/每页显示数)
db.getCollection("students").find({}).limit(5).skip(10);
//页码减1*显示数
//limit:显示条数 skip:从第几条显示

用)

  • 优点:内存消耗小,性能高
  • 缺点:通用性低
3.核心概念
  1. 页码
  2. 每页显示数
  3. 数据总数
  4. 总页码=Math.ceil(数据总数/每页显示数)
db.getCollection("students").find({}).limit(5).skip(10);
//页码减1*显示数
//limit:显示条数 skip:从第几条显示
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值