开发者学堂课程【Node.js 入门与实战:封装路由模块(express)】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/588/detail/8320
封装路由模块(express)
内容介绍:
一、 授课内容
二、 下载插件
三、 启动服务
一、 授课内容
.复习 hackernews 实现
.模块化改造 Hacker News 思路(5个模块)
.通过设置响应报文头让浏览器实现弹框下载功能.网页中的./和../等相对路径的含义
+相对于请求当前页面的 url 来计算,根据这个url计算出上一级url或者本级url等
+最终浏览器会根据相对 url(相对路径)计算出绝对路径然后再请求服务器(向服务器发起请求). Buffer 类型介绍
express 介绍- express 介绍
express 实现 hello worldexpress 脚手架
express 简单路由
express 正则表达式路由+/A/index(1/.+)?$/express处理静态资源
express 中的 res.send()和 res.end()区别
res.json()等价于 res.send(json)、res.sendFile()、res.redirect()、res.status(code).end()- app.use()、app.get()、app.all()区别
-中间件介绍
. ejs 模板引擎介绍
. express 中集成模板引擎. body-parser 介绍
3.通过 express 改造 Hacker News1. MongoDb
二、下载插件
新建 js 文件,在终端新建,
代码:npm install -y(
在安装 save()
App 代码:
// app.js模块职责:负责启动服务l/ 1.加载express模块
var exprfess = require( ' express ');
//
2.创建 app 对象
var app = express();
// 3.注册路由
// 4.启动服务app.listenl;
Config代码:
module.exports ={
port: 9o
90
}
;
有了则这个模块之后,加载 config 模块(代码如下:)
var config =require( './ config.js ');
启动服务代码(如下:)
// 4.启动服务
app.listen(config.port, function {
console.log( 'http: / / iocalhost: ' + config.port););
要新建一个 router 模块:(代码如下:)
// 3.注册路由
app.get( ' / ', function (req, res) {/ / body . . .
});
app.get( ' /index ' , function (req, res){/l/ body . . .
});
app.get( ' /submit', function (req,res) {// body . . .
});
app.get( ' /item', function (req, res)i/ / body . . .
});
app.get( ' /add' , function- (req, -res)-{--/ body . ..
});
我们已经了解 HTTP 请求的基本应用,而路由决定了由谁(指定脚本)去响应客户端请求。
在 HTTP 请求中,我们可以通过路由提取出请求的 URL 以及 GET/POST 参数。
上面的步骤做完之后 就是对它进行设置,还是右击 windowsè 设置 è 选项 è 选中总是启用 è 添加 è 在宿主机随便选着一个目录 è 下一步(如果不允许它共享就点击只读就行了)è 完成,完成之后打开计算机,在下面就有一个文件夹,文件夹里面就有刚刚添加的文件夹了。
然后就是把 prthan-3.64 amd64和python-3.5.3- amd64 传上去,也可以复制上去,于添加的文件夹平级。随便装那个版本,不要忘记把团 Add Python 3.6 to PATH 勾上。这个是把它放在 path 路劲里面,就是配置 python 的环境变量,配置环境变量在高级设置里面的环境变量设置。你是用系统环境变量还是当前环境变量都行,只要放在环境变量里面就行了,最后就点击 install now 让它自己安装就行了。
三、启动服务
扩展 Hello World,添加一些功能来处理更多类型的 HTTP 请求。
代码:
案例:
var express = require('express');
var app = express();
// 主页输出 "Hello World"
app.get('/', function (req, res) {
console.log
("主页 GET 请求");
res.send('Hello GET');
})
// POST 请求
app.post('/', function (req, res) {
console.log("主页 POST 请求");
res.send('Hello POST');
})
// /del_user 页面响应
app.get('/del_user', function (req, res) {
console.log("/del_user
响应 DELETE 请求");
res.send
('删除页面');
})
// /list_user 页面 GET 请求
app.get('/list_user', function (req, res) {
console.log("/list_user GET
请求");
res.send
('用户列表页面');
})
// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求
app.get('/ab*cd', function(req, res) {
console.log
("/ab*cd GET 请求");
res.send
('正则匹配');
}) var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port console.log
("应用实例,访问地址为 http://%s:%s", host, port)
})
图形解释:
Router.js 代码:
//路由模块,主要负责路由判断
// 1.创建一 router 对象 (router 对象既是一个对象,也是一个函数)
var express = require( ' express ' );var router = express.Router(;
// 2.通过router 对象设置(挂载)路由
app.get( ' / ', function (req, res) {/ / body . . .
});
app.get( ' /index ' , function (req, res){/l/ body . . .
});
app.get( ' /submit', function (req,res) {// body . . .
});
app.get( ' /item', function (req, res)i/ / body . . .
});
app.get( ' /add' , function- (req, -res)-{--/ body . ..
});
// 3.返回 router 对象
module.exports =router;
执行:
$ node express_demo2.js
应用实例,访问地址为 http://0.0.0.0:8081
输出:
用户列表页面
正则匹配