• 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;
    
  • 相关阅读:
    TL9000 电信业质量体系管理标准
    ISO/IEC 27001 信息安全管理体系认证
    编程要自学或报班这事你都想不明白, 那必然是你智商不够!
    Linux 计划任务 Crontab 笔记与总结(4)crontab 的日志
    中国象棋程序的设计与实现(一)--项目截图
    中国象棋程序的设计与实现(一)--项目截图
    C# XML 反序列化解析
    PHP开发实战权威指南-读书总结
    PHP开发实战权威指南-读书总结
    假如生活欺骗了你
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581620.html
Copyright © 2020-2023  润新知