登录/注册

Express的使用

用户头像管理员120阅读

作为前端程序员在平时也难免会编写一点后台Demo级别的代码,在语言选择上通常会选择Node.js作为主力工具,框架通常会选择老牌框架Express,在本文会讲解一个使用Express创建接口和搭建基本的Express

创建项目

  1. 创建一个文件夹后使用cd projectname 进入文件夹
  2. 使用npm init创建项目 输入命令行之后一路回车就行
  3. 安装常用的依赖 yarn add express cors nodemon
  4. 创建基本的文件夹结构
    Node.js
  5. 创建一个src文件夹用来存放主要代码,创建一个route来存放接口文件
  6. 将package.json中的script中创建一个start命令:"start": "nodemon --watch ./src ./src/index.js"  这样使用yarn start就可以启动项目

配置入口

 index.js

const express = require("express");
const app = express();//使用Express
//接收POST请求的参数
app.use(
  express.urlencoded({
    extended: false,
  })
);
app.use(express.json());
//通常设置robots.txt禁止搜索引擎扫描
app.use('/robots.txt', express.static('./file/robots.txt'));
//设置跨域
const cors = require("cors");
app.use(cors());

//监听端口
app.listen(3000, () => console.log(`run`));

这样是配置基本的入口文件

  1. 配置接口

创建一个.js的文件

const express = require('express');
const app = express();
const router = express.Router();

router.get('/', async (req, res) => {
    let get = req.query; //接收get请求参数
    let post = req.body; //接收post请求参数
    res.json({
        key: 'value'
    })
})
module.exports = router;
  1. 引入express和express.router
  2. 设置路由的请求方式(常用:get,post,put,delete),设置路由请求路径
  3. req是请求相关信息,我们可以使用req.query和req.body来接收请求参数
  4. 对数据库或相关业务逻辑进行处理之后我们使用res进行返回res常用的返回方式就是json,返回对象前端接收进行服务器渲染,方便前后端分离

路由引用

在index.js中将编写好的接口挂载到入口文件中

app.use('/', require('./route/express'));

运行 yarn start 运行项目

我们使用postman请求一下

Node.js
Node.js
成功接收到服务器返回的数据

批量引用

如果有很多接口我们需要一个一个引用是一件很麻烦的事情,我们可以使用递归将route中的文件都视为路由文件统一引用

function fileDisplay(filePath) {
  fs.readdir(filePath, function (err, files) {
    if (err) {
      console.warn(err);
    } else {
      files.forEach(function (filename) {
        var filedir = path.join(filePath, filename);
        fs.stat(filedir, function (eror, stats) {
          if (eror) {
            console.warn('获取文件stats失败');
          } else {
            var isFile= stats.isFile();
            var isDir = stats.isDirectory();
            if (isFile) {
              app.use('/', require(filedir));
            }
            if (isDir) {
              fileDisplay(filedir);
            }
          }
        });
      });
    }
  });
}
const fs = require('fs');
var path= require('path');
var filePath = path.resolve('./src/route');//填写存放路由的文件夹
fileDisplay(filePath);



Preview
登录后评论