请问如何将一个 express 主文件分成多个 Nodejs 模块
请问如何将一个 express 主文件分成多个 Nodejs 模块
感觉启动文件里的 express 路由过多,写的时候把各个页面的功能( SQL 查询修改什么的)都写进去了,请问下有什么分离出去的写法吗? 主文件代码在这边 https://pastebin.com/vfL0emzY
一楼坐等二楼回答
const app = express()
require(’./a’)(app)
//a 文件为函数
module.exports = function a(app){
//相关逻辑
}
在别的文件里写好处理方法,在需要的地方引入就行了啊
app.get(’/’, function (req, res) {
res.sendFile(path.join(__dirname + ‘/views/login.html’));
});
类似这个后面的处理函数就可以拿出去写在别的文件,一些公共的操作函数也是同理
const app = new express(),
appUI = new express(),
appAPI = new express();
appUI.get("/", (req, res) => {
res.redirect("/public/index.html");
});
appAPI.post("/user/login", (req, res) => {
//…
});
app.use([’/api’], appAPI)
app.use(appUI)
app.server = app.listen(3000);
前段时间 app.js 写太大被 leader 批了,目前的解决办法是用 express.Router()拆分成子路由
大概写法如下:
//app.js
const user = require(’./router/user’);
const patient = require(’./router/patient’);
app.use(’/user’,user)
app.use(’/patient’,patient)
//user.js
const router = require(‘express’).Router();
router.get((req,res) => {});
router.post((req,res) => {});
我也不确定我的写法是否合适,如果有问题希望各位大大指正一下
话说楼主可以试试 Sequelize 框架,感觉自己写 SQL 会有很多冗余的代码。
实际的工程拆分问题像上面的方式并没有解决。
app.js 里只用设置基础配置即可,
然后引入一个路由主文件,如下所示:
var routes = require(’./routes’);
routes(app); // 加载路由
路由主文件 routes.js 如下所示:
var user = require(’./routers/userRouter’);
var order = require(’./routers/orderRouter’);
module.exports = function (app) {
user(app);
order(app);
}
这样具体某个路由就彻底从 app.js 、routes.js 这 2 个主文件中剥离,某个业务路由,比如 userRouter 如下:
module.exports = function(app) {
app.get("/user/login", login);
app.get("/user/register", register);
}
可以试试类 + 装饰器
https://github.com/orzyyyy/memo/blob/master/server/utils/decorator.ts
最后写成这样
https://github.com/orzyyyy/memo/blob/master/server/controller/MainPageController.ts
反正路由拆起来没完了,我的理解就是分类放就完,本身拆不拆无所谓
我一直用的二楼那种写法 但是感觉你这种优雅
些 学习了
B 站全栈之巅的教程你可以看看
#5 感谢,学习了
app 放在 global 上 哪个文件都可以用
在 Node.js 中使用 Express 框架时,将主文件分成多个模块是一种良好的实践,可以提高代码的可读性和可维护性。下面是一个简单的示例,展示如何将一个 Express 应用拆分成多个模块。
首先,创建一个主文件 app.js
:
const express = require('express');
const app = express();
const routes = require('./routes'); // 引入路由模块
// 中间件设置等可以在这里进行
app.use(express.json());
// 使用路由模块
app.use('/', routes);
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
然后,创建一个 routes
文件夹,并在其中创建一个 index.js
文件:
const express = require('express');
const router = express.Router();
// 示例路由
router.get('/', (req, res) => {
res.send('Hello, World!');
});
router.get('/about', (req, res) => {
res.send('About Page');
});
module.exports = router;
在这个例子中,我们将路由逻辑从主文件 app.js
中分离出来,放入 routes/index.js
文件中。通过 require
方法,我们可以在主文件中引入并使用这个路由模块。
这种方法可以扩展到更多的模块,比如数据库连接、中间件、控制器等,每个模块负责特定的功能,从而使代码更加清晰和模块化。