安装
1、首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。
命令行提供的命令
- mkdir 创建目录(make directory)
- && 并且(可以同时执行多个命令)
- cd 改变目录(change directory)
mkdir myapp && cd myapp
2、通过 npm init 命令为你的应用创建一个 package.json 文件。
npm init
此命令将要求你输入几个参数,例如,此应用的名称和版本。 你可以直接按“回车”键接受大部分默认设置即可。
3、接下来在 myapp 目录下安装 Express 并将其保存到项目的依赖列表中。如下:
npm install express --save
4、在myapp目录下创建app.js文件,并使用express创建一个简单的应用:
// 导入 express 函数
const express = require('express');
// 使用 express() 函数创建一个应用
const app = express();
// 配置路由,接收访问服务器根目录的 GET 请求
app.get('/', (request, response) => {
// 响应请求
request.send('Hello World!');
});
// 监听特定的端口
app.listen(3000, () => {
console.log('Myapp listening on port 3000');
});
设置路由
/news --> callback1 --> callback2 --> callback3
app.get('/news', (request, response, next) => {
console.log('callback1')
next();
},
(request, response, next) => {
console.log('callback2')
next();
},
(request, response, next) => {
console.log('callback3')
response.send('end');
});
使用中间件
中间件会拦截所有以特定路径开头的请求,做出相应处理后,调用next()方法放行。最后才开始一个接一个地匹配后面设置的路由。
'/student/add'
// 拦截所有以 '/' 开头的请求
app.use('/', (request, response, next) => {
console.log('/')
next();
});
// 拦截所有以 '/student' 开头的请求
app.use('/student', (request, response, next) => {
console.log('/student')
next();
});
// 接收来自于 '/student/add' 的请求
app.post('/student/add', (request, response) => {
console.log('/student/add')
response.send('/news')
});
当我们向’/student/add’发送POST请求时,请求先会被 ‘/’ 拦截到,调用next()放行,然后被 ‘/student’ 拦截到,再次调用next() 方法放行,最后被接收POST请求的 ‘/student/add’ 路由匹配到,由它为浏览器响应数据。
使用模板引擎
1、安装 ejs 模板解析引擎
npm install ejs --save
2、新建views目录,并告诉 Express EJS模板的位置
// 告诉 Express 模版在 views 目录下
app.set('views', path.join(__dirname, 'views'));
3、将 EJS 配置成 Express 模板引擎
// 配置 EJS 模板引擎
app.set('view engine', 'ejs');
4、配置路由,当路由被匹配时,渲染响应的模板
// 配置路由
app.get('/', function(request, response){
response.render('index', {greeting: 'Hello World!'});
});
app.get('/about', function(request, response){
response.render('about', {message: 'About Page'});
});
托管静态资源
新建public目录,然后将静态资源放入其中,让Express帮我们托管public中的资源
// 让 Express 帮我们托管静态资源
app.use(express.static(path.join(__dirname, 'public')));
然后我们就可以在模板文件中使用这些静态资源
<%# 使用 public 目录下的样式文件 %>
<link rel="stylesheet" href="/css/index.css">
<%# 使用 public 目录下的图片文件 %>
<img src="/images/fuwoqilai.jpeg" alt="扶我起来">
拆分路由
在项目根目录下,新建routes目录,然在目录下新建student.js文件,其内容如下:
const express = require('express');
// 创建 router 对象
const router = express.Router();
// 配置路由
router.get('/', (request, response) => {
response.render('student/index', {title: '学生界面'})
});
router.get('/add', (request, response) => {
response.render('student/add', {title: '添加学生界面'})
});
router.post('/add/submit', (request, response) => {
// 其他代码...
});
router.get('/edit', (request, response) => {
// 其他代码...
});
router.post('/edit/submit', (request, response) => {
// 其他代码...
});
// 导出路由对象
exports = module.exports = router;