初始化一个express项目
新建目录 npm init
生成package.json
;
安装 express
并写入package.json(--save)
dependencies:依赖关系
"dependencies": {
"express": "^4.16.3"
}
npm install express --save
写个简单实例
const express = require('express');
const app = express();
app.get('/',function(req,res){
res.send('hello,express')
})
app.listen(3000);
根目录命令行node index.js
打开浏览器访问 localhost:3000 时,页面应显示 hello,express。
生成一个 express 实例 app,挂载了一个根路由控制器,然后监听 3000 端口并启动程序
supervisor
在开发过程中,每次修改代码保存后,我们都需要手动重启程序,才能查看改动的效果。使用 supervisor 可以解决这个繁琐的问题,全局安装 supervisor
npm install supervisor -g
supervisor index.js
更改后刷新浏览器即可。
路由
app.get('/users/:name',res) {
res.send('hello,'+ req.params.name)
})
req 包含了请求来的相关信息,res 则用来返回该请求的响应
req.query: 解析后的 url 中的 querystring,如 ?name=haha,req.query 的值为 {name: 'haha'}
req.params: 解析 url 中的占位符,如 /:name,访问 /haha,req.params 的值为 {name: 'haha'}
req.body: 解析后请求体,需使用相关的模块,如 body-parser,请求体为 {"name": "haha"},则 req.body 为 {name: 'haha'}res.send():返回请求
express.Router
3.2.1 express.Router
上面只是很简单的路由使用的例子(将所有路由控制函数都放到了 index.js),但在实际开发中通常有几十甚至上百的路由,都写在 index.js 既臃肿又不好维护,这时可以使用 express.Router 实现更优雅的路由解决方案。 创建空文件夹 routes,在 routes 目录下创建 index.js 和 user.js。最后代码如下:
index.js
const express = require('express')
const app = express()
const indexRoute = require('./routes/index.js')
const usersRoute = require('./routes/users.js')
app.use('/',indexRoute)
app.use('/user',usersRoute)
app.listen(3000)
routes/index.js
const express = require('express')
const router = express.Router()
router.get('/',res){
res.send('hello,express')
})
module.exports = router;
routes/users.js
const express = require('express')
const router = express.Router()
router.get('/:name',res) {
res.send('hello,' + req.params.name)
})
module.exports = router;
将 / 和 /users/:name 的路由分别放到了 routes/index.js 和 routes/users.js 中,每个路由文件通过生成一个 express.Router 实例 router 并导出,通过 app.use 挂载到不同的路径。这两种代码实现了相同的功能,但在实际开发中推荐使用 express.Router 将不同的路由分离到不同的路由文件中。
ejs(模板引擎)
npm i ejs --save
修改index.js:
const path = require('path');
app.set('views',path.join(__dirname,'views'))// 设置存放模板文件的目录
app.set('view engine','ejs')// 设置模板引擎为 ejs
通过 app.set 设置模板引擎为 ejs 和存放模板的目录。在 myblog 下新建 views 文件夹,在 views 下新建 users.ejs,添加如下代码:
views/footer.ejs
views/users.ejs
<%- include('header') %>
<%= name.toUpperCase() %>
hello,<%= name %>
<%- include('footer') %>