javascript - 如何删除 (function() {'use strict' ; } 和 ());当与 grunt-contrib-concat 连接时

标签 javascript grunt-contrib-concat

我可以按照正确的顺序连接我的文件,并且可以将 (function(){'use strict'; 添加到顶部,将 }()); 添加到输出文件的底部,但我不知道如何从各个文件中删除 (function(){'use strict';}());连接之前。

我通读了文档并尝试使用 custom process example我知道我需要对此行进行一些更改 src.replace(/(^|\n)[\t]*('use strict'|"use strict");?\s*/g, '$1​​'); 但不幸的是我不明白该行或如何更改它。

最后,我不知道进行此更改是否重要。当我连接并缩小代码时,保持原样,并且不添加横幅和页脚,一切正常。仅用单个使用限制替换单个使用限制有什么好处吗?

来 self 的 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'
    }
}

最佳答案

Is there any benefit to replacing the individual use-stricts with just the one?

没有。只有缺点。

在每个文件中使用 IIFE 意味着每个文件都有自己的作用域,并且除非您故意创建全局文件,否则不会干扰其他文件。

如果将它们合并到一个 IIFE 中,那么情况就不再正确,它们会彼此共享作用域。您可能会意外地覆盖在另一个文件中使用同名变量的人所使用的变量。

关于javascript - 如何删除 (function() {'use strict' ; } 和 ());当与 grunt-contrib-concat 连接时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375505/

相关文章:

Javascript 传递 var onclick 选择和复选框

javascript - 在 JavaScript 中获取方向上的最近点

javascript - Grunt Task Runner 连接文件

javascript - Grunt 连接不同域或不同服务器上的文件

javascript - 如何仅在我的网页上更改数字上的文本装饰?

javascript - 使用 WordPress 瞬时缓存和 AJAX json 脚本的问题

javascript - Babel-preset-react 用三元运算符破坏条件 Array.map

javascript - 使用 Grunt 的 Dryer 文件路径

node.js - Sublime Text 3 和 sublime-grunt-build

html - Grunt concat html 和 js 有不同的分隔符?