【问题标题】:Elixir how to combine $(document).ready(function(){}Elixir 如何结合 $(document).ready(function(){}
【发布时间】:2015-06-24 20:21:16
【问题描述】:

我正在使用 Laravel 5.1Elixir/Gulp 来组合多个 javascript 文件。我注意到在组合文件时,它是文字组合,不会“组合”$(document).ready(function(){} 块。

gulpfile.js:

mix.scripts([
  'file1.js',
  'file2.js'
], 'public/js/files.js');

file1.js:

$(document).ready(function(){
        // do something 1
});

file2.js:

$(document).ready(function(){
        // do something 2
});

最终输出 files.js:

$(document).ready(function(){
            // do something 1
    });
$(document).ready(function(){
            // do something 2
    });

我的预期输出是组合块以获得:

$(document).ready(function(){
            // do something 1
            // do something 2
    });

Elixir 可以做到这一点,还是我需要使用其他编译工具?

【问题讨论】:

    标签: javascript compilation laravel-5 gulp


    【解决方案1】:

    事情没那么简单。组合两个词法作用域可能会产生副作用。

    考虑:

    function func1() {
        x = 1;
    };
    function func2() {
        var x = 2;
    };
    
    func1();
    func2();
    alert(typeof x);  // "number"
    

    现在将它们组合起来:

    function func1and2() {
        x = 1;
        var x = 2;
    };
    
    func1and2();
    alert(typeof x);  // "undefined"
    

    这与 javascript "var" 对象如何在其函数中随处可见有关,甚至在它们被声明之前。

    接下来,您将拥有“let”关键字,它最终为 javascript 提供了词法范围的标识符。如果您的两个 ready() 函数都使用了同名的“let”变量,那么将它们组合起来的结果将是 SyntaxError。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-11
      • 2011-04-01
      • 2011-05-22
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多