【发布时间】:2016-12-17 03:19:02
【问题描述】:
在我的通用 JavaScript 应用程序中,我有通过 webpack DLL plugin 提取的 DLL 库,但我必须在默认导出(供浏览器使用)或 commonjs(供 Node 使用)之间进行选择。
在所有数千行供应商代码中,从字面上看,两个导出之间的唯一区别是第一行:
- module.exports =
+ var vendor =
我的 express 应用程序只允许我使用 require module.exports 变体,因为它需要 commonjs 模块,并且我的浏览器不知道该怎么做,除非它获得 var vendor 变体。
我不希望同一文件有 99.999999...% 的相同副本。
本能地,这感觉很疯狂:我认为这两个环境应该能够使用相同的 DLL 库,因为它们之间的应用程序代码是相同的。
所以我一直在集思广益,并提出了以下可能性:
- 使用像 RequireJS 这样的客户端 CommonJS 加载器(真的不喜欢这个选项,因为我不得不以加载时间为代价强制在客户端下载)
- 通过 Express(或 Nginx,如果可能的话)即时转换 DLL 以在客户端请求它们时替换第一行;不确定我使用这种方法会招致什么性能损失。
- 需要在 Express 应用启动时执行查找/替换的 FileStream 中的 DLL(同样,不知道是否可行,但这感觉是三个选项中侵入性最小的一个)。
- 接受这样一个事实,即无法避免拥有两个 DLL 副本,并且我添加到我的 DLL 中的每个新依赖项都需要 × 2 磁盘空间等。
我一直未能找到中间两点的实施细节,或寻找替代方法。我正在寻找“只需拥有两份并继续你的生活”之外的答案。如果您知道如何做到中间两点,我很乐意从您那里获得实施细节。如果您有我未在此处列出的想法或方法,我会全力以赴!
【问题讨论】:
标签: javascript express nginx webpack