Итак, я новичок в Grunt и Node.js. Я создаю сайт и решил, что файл 'main.js' становится слишком большим. Итак, я разделил его, и теперь я пытаюсь использовать Grunt, чтобы объединить все эти JS-файлы.Как добавить глобальные/общедоступные переменные в grunt-contrib-uglify Выход
Проблема, которая у меня есть, заключается в том, что мне нужно сделать некоторые глобальные переменные доступными для всех различных функций во всех этих JS-файлах. Чтобы быть более конкретным, каждая страница на нашем сайте, идентифицируется с помощью id
в теге тела:
<body id="home">
Многие из этих JS файлов содержат ли операторы, которые обеспечивают определенные функции запуска, только если загружена соответствующая страница. Например:
if (page == 'home') {
var title = "Home Page"
$('.page-title').text(title);
}
Обратите внимание: переменная page
? Этот парень - тот, который мне нужен, чтобы предоставить доступ ко всем этим файлам (после того, как grunt-contrib-uglify объединяет их вместе). Итак, я решил, что присвою новое «уникальное» имя переменной и сделаю его глобальным.
Я заметил, что grunt-contrib-uglify имеет параметр «wrap», указанный в его документации. Тем не менее, нет примеров того, как его использовать.
Может кто-нибудь сказать мне: - Как использовать опцию «обертку» в «хрюкать-вно-уродовать» - Если это правильный хрюкать плагин для того, что я пытаюсь сделать?
Одна из идей, которые у меня были (в крайнем случае) - создать before.js
и after.js
и поместить начало и конец (соответственно) того, что я хочу обернуть вокруг других файлов в каждом. Но, я думаю, что опция «wrap» - это то, что мне нужно, да?
UPDATE: Вот ссылка на мой "слиты" JS файл: main.js
И ссылку на мой Gruntfile: Gruntfile.js
Итак, позвольте мне прояснить это, у вас есть файлы, такие как file1.html file2.html, и все они импортируют ваш (после извлечения) _main.min.js_? И вам нужна ваша переменная 'page', доступная в некотором встроенном javascript внутри ваших html-файлов? – jmartins
Отрицательный, у меня есть серия JS-файлов, которые «объединены» с использованием ** grunt-contrib-concat **. Каждый из этих файлов обернут в свой собственный '$ (document) .ready (function() {});' и (в некоторых случаях) другие события, такие как '$ (window) .load (function() {}); 'и' $ (window) .resize (function() {}); '. Итак, мне нужно (в самом начале объединенного файла) иметь 'page = $ (body) .attr ('id');', а в самом конце «объединенного» файла - ряд функций, которые используются во всех этих различных файлах. Так что-то в самом начале, и что-то в конце. Итак, есть ли опция «** wrap **», что я должен использовать? – derekmx271
Я выполнил поведение, которое я хотел, используя 'src: ['src/js/banner.js', 'src/js/*. Js', 'src/js/functions.js']' где ** banner.js * * содержит мои 'page = $ ('body'). attr ('id');' и ** functions.js ** содержит ряд функций. Но я до сих пор не знаю, как использовать «** wrap **» вариант ** grunt-contrib-uglify **. Это делает то же самое? Если да, то как (и с каким синтаксисом)? – derekmx271