Webpack 中特定于页面的 JavaScript 以及第三方脚本和应用程序范围的脚本

Posted

技术标签:

【中文标题】Webpack 中特定于页面的 JavaScript 以及第三方脚本和应用程序范围的脚本【英文标题】:Page-specific JavaScript together with third-party scripts and application-wide scripts in Webpack 【发布时间】:2017-07-11 06:46:02 【问题描述】:

TL;DR 在底部。

我正在寻找一种使用 Webpack 的方法,就像我现在使用 Gulpfile 一样。

我的 Gulpfile 执行以下操作:

    它将 bower 组件(如 jQuery、Air datepicker、MomentJS)Uglifying 到单个文件 (vendors.min.js) 中 它连接特定文件夹中的每个文件,Uglifying 内容并将其处理成另一个文件。 (lib.min.js) 它监视文件夹中新的/更改的文件,只获取更改的文件,将其修改并保存到文件夹中(这些是我的 app 文件,它们是特定于页面的,可以按需加载)。李>

所以现在我有 3 种类型的文件:

    vendors.min.js

    在我的应用程序的每个页面上加载。 这些可确保所有必需的第三方脚本在您需要时始终可用。

    lib.min.js

    也在每个页面上加载。 这是我的应用程序的'framework''Library',它主要查找元素的数据属性并绑定日期选择器、工具提示,但也提供一些实用功能,如清理字符串、将字符串格式化为金钱等。

    app/*.min.js

    这些为我们的开发人员提供了编写页面特定 javascript 的地方。 它们仅在该页面上加载。

我是 Webpack 新手

我看过一些关于它的视频教程,我可以看到它很强大,可以帮助我进一步了解 JavaScript(阅读:使用更高级的结构和 ES2015)。 我也通读了 Webpack 教程,但找不到如何使它适用于我的结构。

所以问题是:

TL;DR

我如何使用 Webpack 在我的应用程序中拥有全局(应用程序范围)和页面特定的 JavaScript,并让它们使用第三方供应商(如 jQuery、MomentJS,通过 bower 或 npm 等)。

【问题讨论】:

【参考方案1】:

每个页面都应该有这样的入口配置:

entry: 
    page1: ['./src/page1.js'],
    page2: ['./src/page2.js'],

输出如下:

output: 
    path: `$__dirname/app/`,
    filename: '[name].min.js',
,

然后使用 CommonsChunkPlugin 插件构建一个包含 jQuery、MomentJS 之类的全局文件

plugins: [
    new webpack.optimize.CommonsChunkPlugin('vendors.and.lib.min.js'),
]

(这是针对 webpack 版本 1)

【讨论】:

以上是关于Webpack 中特定于页面的 JavaScript 以及第三方脚本和应用程序范围的脚本的主要内容,如果未能解决你的问题,请参考以下文章

grails中特定于环境的web.xml?

vuejs code splitting with webpack 3种模式

如何在 Flutter 中为 Web 编写特定于平台的代码?

常见javascrip页面验证(转)

webpack

javascrip菜鸟