2016-09-07 5 views
0

я могу объединить мои файлы в правильном порядке, и я могу добавить (function(){'use strict'; к вершине и }()); в нижней части выходного файла, но я не знаю, как удалить (function(){'use strict'; и }()); из отдельные файлы перед конкатенацией.Как удалить (function() {'use strict';} and()); когда конкатенации с хрюкать-вно-CONCAT

Я прочитал документы, и я попытался использовать custom process example, и я знаю, что мне нужно внести некоторые изменения в эту строку src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1');, но, к сожалению, я не понимаю эту строку или как ее изменить.

И, наконец, я не знаю, важно ли это изменить. Когда я соглашаюсь и уменьшаю свой код, оставьте его как есть, и не добавляйте баннер и нижний колонтитул, все работает нормально. Есть ли какая-либо польза для замены индивидуальных правил использования только одним?

С моей Gruntfile

concat: { 
    options: { 
     banner: "(function(){'use strict';\n", 
     footer: '}());', 
     process: function(src, filepath) { 
      return '// Source: ' + filepath + '\n' + 
       src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1'); 
     } 
    }, 
    nonMin: { 
     src: ['src/angular-gmap-gplace.js', 'src/modules/*.js'], 
     dest: 'dist/angular-gmap-gplace.js' 
    }, 
    min: { 
     src: ['src/**/*.js'], 
     dest: '.tmp/concat.js' 
    } 
} 

ответ

2

Есть ли какие-либо выгоды для замены отдельных потребительных stricts только с одним?

Нет. Есть только недостатки.

Использование IIFE в каждом файле означает, что каждый файл имеет свою собственную область действия и, если вы не намеренно создаете глобальный язык, не может вмешиваться в другие файлы.

Если вы объедините их в единый IIFE, это уже не так, и они делятся своими областями друг с другом. Вы рискуете случайно перезаписать переменную, используемую одним с файлом с идентичной именованной переменной в другом файле.

+0

Кроме того, если вы поместите все файлы вместе, вы можете создать сочетание кодов, пытающихся получить доступ к * глобальной * переменной, при этом фактически получая доступ к вновь созданной локальной переменной. Например, если кто-то выполнил 'var Function = 'test';'. Если позже, вы пытаетесь сделать «var x = new Function (« return this »);', у вас будут * серьезные * проблемы, которые трудно отлаживать. –

+0

Благодарим вас за объяснение. Это действительно помогло мне понять, что делать и, самое главное, почему. –

 Смежные вопросы

  • Нет связанных вопросов^_^