你好,我正在使用nodejs和express framework,我把所有的服务器端代码都写进了我的app.js文件中,但是这对我来说有点复杂,因为我有将近250行代码,我现在想实现身份验证,所以我想创建另一个app.js来只为身份验证编写代码,这样其他代码就不会混淆我了,我怎么做呢?
正如你在上面所说的,我有两个来自我的app.js的post请求,我问我如何在我的auth.js文件中获得这些请求,因为我理解为静态js字段的导出导入,我想接受请求并将这些信息保存在我的数据库中,我想将其保存在我的auth.js文件中
这里有一个简化的结构为您的项目派生自我的项目在这个链接。
routes.js:
创建一个名为route.js的文件,在其中定义应用程序的所有路由。 在这种情况下,路由将仅是由UserController模块处理的注册和登录路由。
import { Router } from 'express';
import UserController from './UserController';
const router = Router();
router.post(
'/register',
UserController.register
);
router.post(
'/login',
UserController.login
);
export default router;
UserController.js:
这个文件/类处理创建和登录用户的所有操作
正如您所看到的,所有方法都没有路由url,因为它们是从我们的route.js文件中直接调用的。 我们正在对您的应用程序进行划分和结构化!
export default class UserController {
public static register(req, res) {
// Register operation
}
public static login(req, res) {
// Login operation
}
}
app.js
入口点以及配置express应用程序的位置。
import express from 'express';
import routes from './routes';
const app = express();
// configure app ...
// Here we attach our routes url to the express app
app.use('/', routes)
希望有帮助:)
根据您的设置,您可以在以下示例中划分文件:
然后从authentication.js文件中要求或导入函数到app.js,如下所示:
import express from "express";
或者这样:
const express = require("express");
身份验证文件中的函数应按如下方式导出:
//needs to be imported as this: import {authenticate} from "authenticate";
export function authenticate(){};
//needs to be imported as this: import authenticate from "authenticate";
function authenticate(){};
export default authenticate;
或者这样:
// needs to be imported as this: const authenticate = require("authenticate");
module.exports = function authenticate(){};
请参阅本指南中有关启用ES6导入的内容,如上图所示。 这是首选项,因为它可以在导入时节省内存。