归来的技术栈——正确模块化,express 的 app.use
2017-10-17 00:00
267 查看
在 express 4 中,app.use 有如下用法:
subapp 做为 express 的一个实例,本身也是 middleware ,可以被 app.use “挂载”到指定路径。
这种用法给我们项目中功能模块的可移植性进一步增加了保证,以之前用到的目录结构为例:
两个 server.js 文件分别是 admin 和 app 的入口文件。这时我们可以这样做:
/app.js
/src/admin/server.js
这样,我们可以通过
在这种设计下,admin 目录中的内容自成一体,不依赖 /app.js 向它传入参数。可移植性就更好了。
由于 /src/admin/server.js 中的 app 是一个完整的 express 实例,因此它本身也可以通过 use 方法来使用 middleware。并且这个 middleware 的有效范围也会被控制在 admin 中,而不会干扰其他模块。所以这也是一种控制 middleware 有效范围的简便方法。
这个方法将模块和主程序完全解偶,如果你再进一步,将 admin 模块做成无状态的,那么就可以安全的实现热更新了,这将大大提高开发效率。
const express = require('express'); const app = express(); const subapp = express(); app.use('/subpath', subapp); app.listen(3000);
subapp 做为 express 的一个实例,本身也是 middleware ,可以被 app.use “挂载”到指定路径。
这种用法给我们项目中功能模块的可移植性进一步增加了保证,以之前用到的目录结构为例:
. ├── app.js └── src ├── admin │ ├── stylesheets │ ├── javascripts │ ├── index.html │ ├── client.js │ ├── riot-tags │ └── server.js └── app ├── stylesheets ├── javascripts ├── index.html ├── client.js ├── riot-tags └── server.js
两个 server.js 文件分别是 admin 和 app 的入口文件。这时我们可以这样做:
/app.js
const express = require('express'); const app = express(); const admin = require('./src/admin/server.js'); app->use('/admin', admin); app->listen(3000);
/src/admin/server.js
const express = require('express'); const app = express(); app->get('/login', ...) app->post('/api/login', ...) ... module.exports = app;
这样,我们可以通过
GET /admin/login和
POST /admin/api/login来访问 admin 模块中的方法了。
在这种设计下,admin 目录中的内容自成一体,不依赖 /app.js 向它传入参数。可移植性就更好了。
由于 /src/admin/server.js 中的 app 是一个完整的 express 实例,因此它本身也可以通过 use 方法来使用 middleware。并且这个 middleware 的有效范围也会被控制在 admin 中,而不会干扰其他模块。所以这也是一种控制 middleware 有效范围的简便方法。
这个方法将模块和主程序完全解偶,如果你再进一步,将 admin 模块做成无状态的,那么就可以安全的实现热更新了,这将大大提高开发效率。
相关文章推荐
- [node]express中app.use和app.get的区别及解析
- express的app.use两种方式:
- nodejs 使用app.use(express.bodyParser()); 出行异常----解决方法
- Express细节探究(1)——app.use(express.static)
- express 的 app.get和app.use
- Express细节探究(1)——app.use(express.static)
- eXpressApp Framework 之DC技术入门系列(2)DC中的实体关系之一对多关系
- what is app.use in NodeJS/Express
- express中app.use的使用
- App竞品技术分析 (8)模块化拆分
- Express细节探究(1)——app.use(express.static)
- nodejs-express+app.use的用法
- [node]express中app.use和app.get的区别及解析
- Express中的app.use与app.get的区别
- 信息系统开发平台OpenExpressApp - 数据懒加载
- 一些提高APP性能的方法--技术需要一点一点积累
- Watchstor专栏:存储器那点事(三)基于集群技术的模块化存储器
- You need to use a Theme.AppCompat theme (or descendant) with this activity.
- 【OSC手机App技术解析】- 气泡对话列表
- node.js解惑 之 .app.use