Node js 框架 express 使用

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 目录下)

<!-- 1.不加路由的访问方式,按照路径 -->
<link rel="stylesheet" href="/index.css">

<!-- 2.使用的方式, 按照路由 -->
<link rel="stylesheet" href="/public/index.css">

路由 (请求)

  • 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);
});

在模板中使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ejs</title>
</head>
<body>
    <p> <a href="/test/alex/1">参数</a>   </p>
    <!-- <p> <a href="/test?id=1">第一种方式</a> </p> -->
</body>
</html>

响应

  • 发送字符串/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;
原文地址:https://www.cnblogs.com/liaohui5/p/10581620.html