在webpack中,强制一些模块在启动时自动加载

时间:2017-06-12 13:51:30

标签: webpack

在我的服务器端软件包中,我有一些包含服务器端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模块":

  • 在启动时(如何?)
  • 关于块加载(可能有一个入口点) chunk ??,这意味着将所有我的customBlocks模块移动到一个新的 chunk然后动态创建一个模块,将调用我的所有 customBlock modules(哇)) OR
  • 手动:require('please_call_all_custom_blocks_modules_thanks')
  • 使用加载程序:require('please_call_all_custom_blocks_modules_thanks!')

我不知道

1 个答案:

答案 0 :(得分:0)

我认为你想要的是这样的

// loader.js
var moduleName = getSomeModuleNameInRuntime();
require("bundle!./path/" + moduleName)(function(myModule) {
  // ...
});

请参阅此问题here