ES6对象的简写方法
---------------------------------------
1. 对象的简写方法
1.1 如果对象的属性名和属性值同名,对象的属性可以简写为如下:
eg:
var name = "laowang";
var obj = {name:name}; => var obj = {name}
2.2 对象的方法可以简写为
eg1:
var obj = { getName:()=>{}};
eg2:
var obj = { getName(){}};
eg3: function getName(){} var obj = {getName};
2. 字符串模板
eg:
var name = "laowang";
var str = `哈哈,${name}我爱你`;
console.log(str)
输出结果: 哈哈,老王我爱你
原理:正则表达式的替换
优点:相比字符串和变量拼接,非常方便
-----------------------------------------
NodeJs 之 Express 框架
1. 什么是express
# Express框架是后台的javascript框架
2. 为什么要使用express
原生Node开发,会发现有很多问题。比如:
呈递静态页面很不方便,需要处理每个HTTP请求,还要考虑304问题
路由处理代码不直观清晰,需要写很多个条件分支
总之:不能集中精力写业务,要考虑很多其他的东西
所以,express可以帮助我们解决上述问题
3. 安装Express框架,就是使用npm的命令。
方法一:npm install --save express
方法二:npm install express --save
# --save参数,表示自动修改package.json文件,自动添加依赖项
4. 路由
app.get("路由路径",callback(req,res));
# 当用get请求访问一个网址的时候,做什么事情
app.post("路由路径",callback(req,res))
# 用post访问一个网址的时候,做什么事情
app.all("路由路径",callback(req,res));
# 不管是get请求还是post请求都会处理这个路由路径
路由模糊匹配
app.get("/:teacher/:number",callback(req,res));
# 表示模糊匹配路由路径内容,可以匹配任何路由路径的形式为/sfdsfdsf/sdsfsf
# 可以把teacher和number当做变量 然后通过req.params 来拿到值
# req.params为对象通过teacher和number变量来拿到teacher和number变量的值
注意:
1. 路由路径,可以忽略大小写
2. 可以采用链式调用方法处理不同的路由
3. res.send() 可以发送任何数据类型的数据
4. 如果想使用不同的状态码,可以:
res.status(404).send('内容');
5. 如果想使用不同的Content-Type,可以:
res.set('Content-Type', 'Mime类型');
5. send() 发送的数据类型可以有多种,原生的nodejs发送的数据类型只能为字符串或者buffer
5.1 send("字符串")
# 自动添加请求头text/html
5.2 send(数组或对象)
# 自动添加请求头application/json
# json 是一种数据传输格式,json包含有json数组和json对象
# 在发送对象或者数组的时候已经将数组或者对象进行转换为json字符串了
5.3 send(buffer)
# 自动添加请求头 applicaiton/octet-stream
6. 为什么res.send() 内容为buffer对象的时候浏览器会下载?
因为在send的时候,express会自动识别内容,然后添加相对用的content-type类型
当发送的内容为buffer对象的时候,添加的content-type类型为 application/octet-stream,
而这个流是一个不能被浏览器解析的流,必须被下载
7.静态文件处理
app.use(express.static("文件夹"));
8. 模板引擎
需要在应用中进行如下设置才能让 Express 渲染模板文件:
views, 放模板文件的目录,比如: app.set('views', './views') 默认为这个目录
view engine, 模板引擎,比如: app.set('view engine', 'ejs')
9. 在express中路由路径的匹配是从上往下匹配的,如果有一个匹配成功,就不会再去匹配下面的路由路径,
这个时候如果想让他继续去匹配其他的路由就需要使用next中间件了
eg:
app.get("/",(req,res,next))
如何理解中间件的作用?
# 中间件可以预先处理所有请求再转交给特定的路由来进行处理。
10. app.use();
# 匹配路由前缀,只要前缀匹配成功,那么所有的路由都会被执行
# 当路由路径为根路径的时候,express规定路由路径参数可以不写
11. GET请求和POST请求的参数
11.1 get请求
GET请求的参数在URL中,在原生Node中,需要使用url模块来识别参数字符串。在Express中,不需要使用url模块了。可以直接使用req.query对象。
12.2 post请求
POST请求在express中不能直接获得,必须使用body-parser模块。使用后,将可以用req.body得到参数。但是如果表单中含有文件上传,那么还是需要使用formidable模块
浙公网安备 33010602011771号