Express 框架的基本使用
express 4.x 文档: http://www.expressjs.com.cn/4x/api.html#express
安装
npm install express --save
基本使用
// 引入模块并实例化对象
const app = require("express")();
// 监听端口
app.listen(3000);
app.get("/", (request, response) => {
response.end("hello world");
});
托管静态文件
在设置好后静态文件托管目录后, 访问指定的目录, 就会自动读取并且返回
js
// 引入模块
const express = require("express");
const app = express();
// 设置静态文件托管目录
// 第一种方式设置, 不加路由, 按路径访问
app.use(express.static(__dirname + "/public"));
// 第二种方式设置, 使用路由, 必须按路由访问
app.use(express.);
模板中 (index.css 位于 /public 目录下)
路由 (请求)
- GET 请求
const app = require("express")();
// app.get("请求路径", (req, res)=>{ ... });
app.get("/get", (request, response) => {
response.end("hello world");
});
- POST 请求
const app = require("express")();
// app.get("请求路径", (req, res)=>{ ... });
app.post("/post", (request, response) => {
response.end("hello world");
});
- 路由参数 路由参数,主要是针对 get 请求, post请求可以使用
formidable
这个包
js 中设置和获取路由参数
// 设置模板引擎
app.set('views', './view');
app.engine('.html', ejs.__express);
app.get("/", (request, response) => {
response.render("test.html");
});
// 设置参数 /:id
app.get("/test/:id/:name", (request, response) => {
// 对象方式,获取参数 id
let id = request.params.id;
// 数组方式, 获取参数
let name = request.params["name"];
response.send(name+id);
});
在模板中使用
ejs
响应
- 发送字符串/json
// 引入模块
const ejs = require("ejs");
const express = require("express");
const app = express();
// 监听端口
app.listen(3000);
// 发送字符串
app.get("/str", (request, response) => {
// 发送json
response.send({ name: 'alex', age: 20 });
});
// 发送json
app.get("/json", (request, response) => {
response.send({ name: 'alex', age: 20 });
});
- 设置状态码
// 引入模块
const ejs = require("ejs");
const express = require("express");
const app = express();
// 监听端口
app.listen(3000);
app.get("/", (request, response) => {
response.status(404).send("Not Found");
});
- 多次响应
// 引入模块
const ejs = require("ejs");
const express = require("express");
const app = express();
// 监听端口
app.listen(3000);
app.get("/", (request, response) => {
response.write("test");
response.write("test");
response.write("test");
response.end("test end");
});
应用生成器
通过应用生成器, express可以快速创建一个应用的骨架
- 安装
npm install express-generator --save
- 查看帮助
express -h
- 安装所欲依赖包
npm install
- 设置模板引擎
express --view=ejs
- 启动
set DEBUG=your-project-name & npm start
- 生成后的目录结构树
|--bin 运行目录
|--node_modules 依赖包存放目录
|--public 静态资源存放目录
|--images
|--javascripts
|--stylesheets
|--routes 路由文件存放目录
|--index.js
|--user.js
|--views 模板文件存放目录
|--error.ejs
|--index.ejs
|--app.js 入口文件
|--package.json
|--package-loack.json
app.js
let createError = require('http-errors');
let express = require('express');
let path = require('path');
let cookieParser = require('cookie-parser');
let logger = require('morgan');
// 导入路由文件
let indexRouter = require('./routes/index');
let usersRouter = require('./routes/users');
// 创建express对象
let app = express();
// 模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// 使用引入的包
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({extended : false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 让用户能够访问路由
app.use('/', indexRouter);
app.use('/users', usersRouter);
// 错误页面
app.use(function (req, res, next) {
next(createError(404));
});
// 错误处理
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 502);
res.render('error');
});
// 导出app对象
module.exports = app;