网址:https://www.expressjs.com.cn/
Express执行原理:先查找有没有对应的静态资源,看有没有静态资源,有静态资源就执行静态资源,如果没有静态资源就去查找路由匹配动态资源,查找到动态资源,就执行动态资源,没有的话就执行404.
中间件:中间件主要是指封装所有Http请求细节处理的方法,是从Http请求发起到响应结束过程中的处理方法。它最大的特点,就是一个中间件处理完,再传递给下一个中间件。
安装生成器到全局
npm install -g express-generator
创建一个新的目录,并命令行进入该目录下
执行生成项目骨架的命令
express
执行命令下载所有依赖包
npm install
执行命令启动服务器
npm start
创建一个新的目录,并命令行进入该目录下
通过npx生成项目骨架
npx express-generator
执行命令下载所有依赖包
npm install
缩写:npm i
执行命令启动服务器
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 中的路由中间件。
request.params
request.query
:get提交获取参数的方法request.body
:post提交获取参数的方法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');
});
获取参数:在有表单的时候就用post提交,没有表单的就用get提交
1.访问更加直接和简单
2.请求路劲的长度有限制,不同的浏览器限制不同
3.参数是跟在路径后面的,安全性较低
4.参数是有历史记录的
router.get('/reg', function(req, res) {
let {username,pwd} = req.query;
console.log("用户名和密码",username,pwd);
res.send('get提交成功');
});
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提交成功');
});
职责更加清晰
增加代码的灵活性和扩展性
提高可维护性
主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
主要看数据层里面有没有包含逻辑处理,实际上它的各个函数主要完成各个对数据文件的操作。而不必管其他操作。
只属于表现层
Math.ceil(数据总数/每页显示数)
db.getCollection("students").find({}).limit(5).skip(10);
//页码减1*显示数
//limit:显示条数 skip:从第几条显示
用)
Math.ceil(数据总数/每页显示数)
db.getCollection("students").find({}).limit(5).skip(10);
//页码减1*显示数
//limit:显示条数 skip:从第几条显示