【发布时间】:2018-07-02 00:56:33
【问题描述】:
我有这个问题: 为了重构现有项目的前端部分,我尝试在其中使用 Grunt 编译器。本项目结构如下:
file1.jsp loads file1.js file2.jsp loads file2.js
所以从 grunt 生成的 javascript 文件包含 file1 + file2。 问题是: 如果在 file1.js 我有:
$(document).on('ready', function()...)
var funct = function() {
...
};
$('.class').on('click', function(){...})
而且在 file2 中我还有另一个定义 funct 变量和 jquery 部分,以及生成的 javascript 文件 file1.jsp 和 file2 .jsp 调用两个相同的函数。我想保留以前的行为,但我也想加载单个 js 文件,而不是在不同的 jsp 页面中加载多个 js 文件。
更新:
我几句话,我有这样的结构:
js
- eu
- folder1
-- file1.js
- folder2
-- file2.js
...
我想要做的是:缩小 js/eu 文件夹中的所有 js 文件,而不是连接所有缩小的文件并将 applicationScripts.min.js 文件加载到我的 index.jsp 中,而不是加载相关 jsp 中的所有单个文件文件。
Gruntfile.js 是:
concat:
{ options:
{ separator: '\n' },
dist: {
src: [ 'js/eu_min/**/*.min.js' ],
dest: 'js/applicationScripts.min.js' } },
uglify:
{ options:
{ pretty: true },
dist: {
files: {
expand: true,
src: "js/eu/**/*.js",
dest: "js/eu_min/",
ext: ".min.js" } } },
watch: { files: [ 'js/eu/**/*.js' ],
tasks: [ 'uglify', 'concat' ] }
感谢您的支持
【问题讨论】:
-
您无法修改源文件吗?或者,您是否尝试过预先丑化这两个文件?
-
嗨@ryanwebjackson,感谢您的回答。修改源文件非常复杂(我已经简化了示例)。对于最后一部分,你能解释得更好吗?再次感谢
-
您所要做的就是将代码放在一个命名空间中,例如一个 IIFE,然后重复的变量名就不是问题了。
标签: javascript jquery jsp gruntjs