我正在使用express在Node.js中做一个项目。这是我的目录结构:
root
|-start.js
|-server.js
|-lib/
| api/
| user_getDetails.js
| user_register.js
该lib/api/
目录包含许多与API相关的JS文件。我需要做的是建立一个挂钩系统,每当从快速HTTP服务器请求一个API函数时,它就会执行相应的API处理程序中指定的任何操作。这可能令人困惑,但希望您能理解。
lib/api
以查找与该请求关联的功能。希望你能帮助我。我当时认为可以使用原型来完成,但不确定。
谢谢!
如果您知道脚本的位置,即您有一个初始目录(例如)DIR
,则可以使用fs
,例如:
server.js
var fs = require('fs');
var path_module = require('path');
var module_holder = {};
function LoadModules(path) {
fs.lstat(path, function(err, stat) {
if (stat.isDirectory()) {
// we have a directory: do a tree walk
fs.readdir(path, function(err, files) {
var f, l = files.length;
for (var i = 0; i < l; i++) {
f = path_module.join(path, files[i]);
LoadModules(f);
}
});
} else {
// we have a file: load it
require(path)(module_holder);
}
});
}
var DIR = path_module.join(__dirname, 'lib', 'api');
LoadModules(DIR);
exports.module_holder = module_holder;
// the usual server stuff goes here
现在,您的脚本需要遵循以下结构(由于该require(path)(module_holder)
行),例如:
user_getDetails.js
function handler(req, res) {
console.log('Entered my cool script!');
}
module.exports = function(module_holder) {
// the key in this dictionary can be whatever you want
// just make sure it won't override other modules
module_holder['user_getDetails'] = handler;
};
现在,在处理请求时,您可以执行以下操作:
// request is supposed to fire user_getDetails script
module_holder['user_getDetails'](req, res);
这应该将所有模块加载到module_holder
变量。我没有测试它,但是它应该可以工作( 除了错误处理!!!
)。您可能想要更改此功能(例如,制作module_holder
一棵树,而不是一级字典),但我想您会理解的。
此功能应该在每次服务器启动时加载一次(如果您需要更频繁地触发它,那么您可能正在处理动态服务器端脚本,这是一个绝妙的主意,恕我直言)。现在,您唯一需要做的就是导出module_holder
对象,以便每个视图处理程序都可以使用它。
问题内容: 是否可以基于路由组动态加载控制器,js文件和模板?伪代码不起作用: 我已经看到了很多这样的问题,但是没有一个问题基于路由组加载js文件/控制器。 问题答案: 我设法解决了受@ calebboyd,http : //ify.io/lazy-loading-in-angularjs/ 和http://weblogs.asp.net/dwahlin/archive/2013/05/22/dy
本文向大家介绍怎样动态加载路由?相关面试题,主要包含被问及怎样动态加载路由?时的应答技巧和注意事项,需要的朋友参考一下 vue-router的addRoutes方法
我将在我的Symfony 2应用程序中创建一个模块系统。每个模块都是一个捆绑包。 我不知道如何我可以动态(在我的服务代码)加载路由文件(例如。Acme某些ModuleBundle/Resources/config/routing.yml),并使用一些前缀(或主机)应用它们。就像在app/config/routing.yml中嵌入代码一样: 有什么解决办法吗?
本文向大家介绍vue addRoutes路由动态加载操作,包括了vue addRoutes路由动态加载操作的使用技巧和注意事项,需要的朋友参考一下 需求:增加权限控制,实现不同角色显示不同的路由导航 思路:每次登陆后请求接口返回当前角色路由 核心方法:vue-router2.2.0的addRoutes方法 + vuex 以下是我实现的获取菜单路由的方法,我将该方法的调用放在首页组件的生命钩子中,即
问题内容: 对不起,我的英语不好。我为AbstractRoutingDataSource编写了实现: 我创建了用于在数据库之间进行切换的新类: 其中DatabaseType为: 在我的beans.xml中: 现在,当我尝试更改DAO中的数据源时: 首次执行getJdbcTemplate()时,一次调用一次defineCurrentLookupKey(),并且数据源不会切换。 问题答案: Sprin