在我的服务器端软件包中,我有一些包含服务器端api的模块,我想尽快加载(并运行)这些模块(与入口点同时)。
我有一些限制:
我不知道这些模块的名称(它们是在编译期间生成的,它们只是"标记为"来自
装载机,使用this._module.meta.myApiModule = true
)。
这些模块在同构Web应用程序中的客户端和服务器之间部分共享。客户端知道服务器模块哈希,因为客户端和服务器端模块共享相同的哈希值(感谢webpack.HashedModuleIdsPlugin
)。在某些情况下,客户端会对服务器进行api调用,并且必须在调用之前加载保存api的模块。
启动时必须调用(必需)所有标记的模块
这些模块包含注册其api的代码(例如mainFramowork.registerRpcApi(...)
)这就是它们必须在启动时加载的原因。
我使用vuejs,我的.vue文件由webpack处理。每个vue文件都会生成webpack模块(对于脚本部分,标记部分,样式以及可以自由使用的customBlocks)
foo.vue (file)
-> html (webpack module)
-> script (webpack module)
-> style (webpack module)
-> customBlock (webpack module, rawRequest:"!!babel-loader!addmeta-loader?{"mark":"api"}!XXX/node_modules/vue-loader/lib/selector?type=customBlocks&index=1!./foo.vue")
bar.vue
-> html (webpack module)
-> script (webpack module)
-> style (webpack module)
-> customBlock (webpack module, rawRequest:"!!babel-loader!addmeta-loader?{"mark":"api"}!XXX/node_modules/vue-loader/lib/selector?type=customBlocks&index=1!./bar.vue")
现在,我的目标是调用所有这些" customBlock模块":
require('please_call_all_custom_blocks_modules_thanks')
或 require('please_call_all_custom_blocks_modules_thanks!')
我不知道
答案 0 :(得分:0)
我认为你想要的是这样的
// loader.js
var moduleName = getSomeModuleNameInRuntime();
require("bundle!./path/" + moduleName)(function(myModule) {
// ...
});
请参阅此问题here