基础版
优化版
模块化版
js文件可以作为一个模块, 每个模块都有自己的作用域
require("包名")require("模块的路径")
module.exportsexports
var 导出项 = require("")
整个应用程序的逻辑全部由框架控制,我们只需要提供相应的代码,这些代码框架会自动在合适的时机进行调用!
好莱坞原则: dont call us, we will call you!
类库中给我们提供了一系列的方法,这些方法具体在哪里调用,完全由我们来控制!
控制反转(IoC)
根据不同的url地址返回不同的内容
请求方式必须和方法名一致
请求的路径页必须和注册路由的路径一致
app.get(路由路径, function(req, res){
//
})
app.post(路由路径, function(req, res){
//
})
app.delete(路由路径, function(req, res){
//
})
任意请求方式都可以
请求的路径必须和注册路由的路径一致
app.all(路由路径, function(req, res){
})
任意请求方式都可以
请求的路径只要以注册的路由路径开头即可!
如果省略了路由路径,则默认为 "/"
app.use(路由路径,function(req, res){
})
res.send 向浏览器响应数据,这个方法可以接收的参数(字符串,对象,数组,数字(状态码),buffer对象)
res.send方法中会自动调用end
res.send方法只可以调用一次!
res.download 想浏览器响应文件,并且打开下载保存窗口!(下载文件的!!)
res.status 设置状态码,可以进行链式编程
res.jsonp 可以返回jsonp格式的数据 请求的时候需要传递callback参数!
res.redirect 重定向
res.sendFile 向浏览器响应文件!
res.render
req.body 是用来获取post请求参数的!但是不能直接使用
req.query 是用来获取get请求参数的
req.originalUrl 是用来获取原始的url地址 类似于之前的req.url
req.params 是用来获取路由参数的
req.path 是用来获取请求的路径的 类似于 urlObj.pathname
在注册路由规则的时候,可以指定路由路径中的某一部分为参数
app.get("/details/:id", function(req, res){
})
中间件其实就是一个函数,这个函数有三个参数, req, res, next
req: 请求对象res: 响应对象next: 用来调用下一个中间件
基础班
基础优化版
基础优化-模块化版
var express = require('express');
var app = express();
app.get('/index', function(req, res){
res.send("ok")
})
app.listen(8888, function(){
console.log('http://localhost:8888');
})
app.METHOD METHOD指的就是请求方式 get post delete ...
请求方式必须和注册路由的方法名一致
请求的路径必须和注册路由的路径完全一致
app.all
请求方式不限
请求的路径必须和注册路由的路径完全一致
app.use
请求方式不限
请求的路径只要是以注册路由的路径开头即可
app.METHOD("路由路径", function(req, res){
})
app.all("路由路径", function(req, res){
})
app.use("路由路径", function(req, res){
})
req
req.query 获取get请求参数
req.body 获取post请求参数 但是需要配合body-parser使用
req.orinalUrl 获取请求的url原始地址
req.path 获取请求的路径 urlObj.pathname
req.get(key) 获取请求头中key对应的信息
req.params 获取路由参数 /index/:参数名 http://localhost/index/1
res.send 给浏览器返回数据,自动调用end,只能调用一次: 能接受anything作为参数,如果是数字作为参数,则会被当做状态码!
res.sendFile 给浏览器返回文件
res.render 渲染模板返回结果给浏览器 必须进行配置才能使用
res.download 给浏览器进行文件下载
res.status 设置状态码,可以进行链式编程
res.redirect 跳转页面 重定向
res.jsonp 返回jsonp格式的数据,需要在请求的时候传递callback参数
什么是中间件
中间件就是一个函数,这个函数有三个参数,req, res, nextreq: 请求对象res: 响应对象next: 可以用来调用下一个中间件
中间件中必须做如下两件事儿中的一个:
结束响应
调用下一个中间件
中间件可以对照自来水厂的处理流程进行理解,在整个中间件处理流程中,req, res对象是不会变。
作用: 可以用来给req.body设置值,获取post请求参数
使用:
app.use(require('body-parser').urlencoded())
app.use(require('body-parser').json())
app.use(function(req, res, next){
var bufferList = [];
req.on('data', function(chunk){
bufferList.push(chunk);
})
req.on('end', function(){
var result = Buffer.concat(bufferList);
result = result.toString();
if(req.get('content-type').indexOf('json') != -1){
req.body = JSON.parse(result)
}else if(req.get('content-type').indexOf('urlencoded') != -1){
req.body = querystring.parse(result);
}else{
req.body = {}
}
next();
})
})
//1. 设置模板引擎
app.engine('html', require('express-art-template'));
//2. 设置模板文件存放的文件夹路径 (可选的,默认回去views文件夹中查找)
app.set('views', 文件夹路径)
//3. 设置默认的后缀名 (可选的)
app.set('view engine', '文件后缀名')
app.use(express.static('静态资源目录路径'))