框架:是一整套解决方案,简化了已有的功能,添加了之前没有的功能。
1.express框架
基于Node.js平台,快速、开放、极简的WEB开发框架
网址:www.expressjs.com.cn
属于第三方的模块,需要先去下载安装
npm install express
const express = require('express'); const app = express();//创建WEB服务器 app.listen(8080); //设置端口 |
(1)路由
路由用来处理不同的请求,根据请求的URL和请求的方法来做出特定的响应。
路由的三要素:请求的URL、请求的方法、回调函数
req 请求对象
req.url 获取请求的URL
req.method 获取请求的方法
req.query 获取查询字符串传递的数据
res 响应对象
res.send() 设置响应的内容并发送
res.redirect() 设置响应的重定向并发送
res.sendFile() 设置响应的文件并发送,文件必须使用绝对路径(__dirname)
以上响应在一个路由中只能调用一次 |
练习:编写03_express.js,引入express,创建web服务器并设置端口为8080;添加路由(get /search),响应文件search.html
‘<h2>用户搜索</h2>’
练习:根据表单的请求添加路由(get /mysearch),响应'搜索成功'
练习:添加路由(get /login),响应文件login.html
练习:用户输入用户名和密码,点击提交;添加对应的路由(post /mylogin),响应‘登录成功’
传递方式 | 格式 | 路由获取 |
get传递 | 查询字符串 http://127.0.0.1:8080/mysearch?kw=笔记本&id=2 | req.query 格式为对象 |
post传递 | 采用流的方式,不可见 | 通过事件的方式 req.on('data', (chunk)=>{ chunk 获取的数据,格式为buffer,转字符串后为查询字符串,需要借助查询字符串模块解析为对象 }) |
路由传参 | http://127.0.0.1:8080/package/express | app.get('/package/:pname',(req,res)=>{ req.params 获取路由传参的数据,格式为对象 }) |
对比get和post传递数据的区别
get传递的数据格式为查询字符串,URL中可见;post传递的方式用流的方式,URL中不可见;post传递更加安全,通常注册、登录会使用;get传递的速度更快,通常搜索的时候使用
get传递的数据有大小限制,根据不同的浏览器大小不同,范围2~8k之间,post没有大小限制
练习:创建添加到购物车的路由(get /shopping),传递商品的编号lid、购买的数量count、用户的编号uid,最后响应以下内容
商品的编号:xx
购买的数量:xx
用户的编号:xx
/shopping/30&1&5
课后任务
(1)复习今天内容,整理思维导图
(2)练习:创建WEB服务器,设置端口,添加路由(get /reg),响应注册的文件reg.html,点击提交向服务器发送请求(post /myreg),创建路由接收请求,并获取传递的数据,响应“注册成功”
(3)预习nodejs第5天 中间件、正则表达式