我试图将库从grunt / requirejs移植到webpack并偶然发现一个问题,这可能是这项工作的败笔。
我尝试移植的库具有一个功能,该功能可以根据我们从配置文件获取的文件名将多个模块加载并评估到我们的应用程序中。代码看起来像这样(咖啡):
loadModules = (arrayOfFilePaths) ->
new Promise (resolve) ->
require arrayOfFilePaths, (ms...) ->
for module in ms
module ModuleAPI
resolve()
在require
这里需要在运行时和行为被称为像它与requireJS一样。Webpack似乎只关心“构建过程”中发生的事情。
这是webpack从根本上不关心的事情吗?如果是这样,我仍然可以将requireJS与它一起使用吗?在运行时动态加载资产的最佳解决方案是什么?
编辑:loadModule可以加载该库的构建时不存在的模块。它们将由实现我的库的应用程序提供。
因此,我发现我要求在运行时加载一些文件,这些文件仅在“应用程序编译时”可用,而在“库编译时”不可用,这对于webpack来说是不容易实现的。
我将更改该机制,以便我的库不再需要文件,而是需要传递所需的模块。有点告诉我,无论如何这将是更好的API。
编辑以澄清:
基本上,而不是:
# in my library
load = (path_to_file) ->
(require path_to_file).do_something()
# in my app (using the 'compiled' libary)
cool_library.load("file_that_exists_in_my_app")
我这样做:
# in my library
load = (module) ->
module.do_something()
# in my app (using the 'compiled' libary)
module = require("file_that_exists_in_my_app")
cool_library.load(module)
第一个代码在require.js中起作用,但在webpack中不起作用。
事后看来,无论如何在运行时都拥有一个3rd-party-library加载文件是非常错误的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句