gpt4 book ai didi

javascript - 如何将全局/公共(public)变量添加到 grunt-contrib-uglify 输出

转载 作者:太空宇宙 更新时间:2023-11-03 22:35:43 25 4
gpt4 key购买 nike

好吧,我对 Grunt 和 Node.js 还很陌生。我正在构建一个网站,并发现“main.js”文件变得太大了。因此,我将其拆分,现在尝试使用 Grunt 将所有这些 JS 文件重新组合在一起。

我遇到的问题是,我需要为所有这些 JS 文件中的所有各种函数提供一些全局变量。更具体地说,我们网站上的每个页面都通过 body 标记中的 id 进行标识:

<body id="home">

其中许多 JS 文件包含 if 语句,确保某些函数仅在加载适当的页面时运行。例如:

if (page == 'home') {
var title = "Home Page"
$('.page-title').text(title);
}

注意到page变量了吗?我需要让那个人对所有这些文件可用(在 grunt-contrib-uglify 将它们合并在一起之后)。因此,我想我应该分配一个新的“唯一”变量名称,并将其设为全局变量。

我注意到grunt-contrib-uglify有一个'wrap ' 其文档中列出的选项。但是,没有给出如何使用它的示例。

谁能告诉我:- 如何使用“grunt-contrib-uglify”中的“wrap”选项- 这是否是适合我想做的事情的 grunt 插件?

我的一个想法(作为最后的手段)是创建一个 before.jsafter.js 并分别放置我的内容的开头和结尾希望环绕每个文件中的其他文件。但是,我认为“换行”选项正是我所需要的,是吗?

更新:这是我的“合并”JS 文件的链接: main.js

以及我的 Gruntfile 的链接: Gruntfile.js

最佳答案

我也遇到了同样的问题,正在寻找解决方案。但我想我找到了答案。

在你的 grunt 文件中使用它:

uglify: {
options: {
wrap: true
}
}

wrap 属性的文档表明变量将在全局变量中可用,并且查看生成的代码似乎确实如此。将字符串值传递给参数似乎确实创建了一个具有该名称的全局变量。

但是,wrap: true 似乎使所有对象和属性在全局范围内可用。因此,您可以只使用 page.title,而不是 globals.page.title (无论如何,我无法开始工作)。非常非常容易和简单。

如果这适合您的目的,我建议您这样做。

关于javascript - 如何将全局/公共(public)变量添加到 grunt-contrib-uglify 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29615324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com