【问题标题】:Looking for preprocessor for JavaScript Backbone App [closed]寻找 JavaScript Backbone App 的预处理器 [关闭]
【发布时间】:2017-11-18 15:09:28
【问题描述】:

我正在为此类项目寻找最佳的预处理器解决方案。

我正在创建需要具有 certn 结构的中等 Backbone.js 单页应用程序。就像所有 js 文件(主干模型、视图和集合)中的调试指令一样,还包括测试函数和框架。

例如(伪代码):

#if TEST
include test.js // test framework
...
#elseif DEBUG
include debug.js (extension of models that log to console save/fetch/delete actions etc)
...
#end

预处理器需要合并所有列出的 js 文件并创建三个不同版本的单个 js 文件(prod、dev、test)。

是否有可以处理该任务的JavaScript 预处理器?

谢谢

【问题讨论】:

  • 你想使用那个预处理器进行依赖管理(包括依赖)吗?在您的示例中,test.jsdebug.js 的区别是什么?即使有替代解决方案,您是否坚持这样的解决方案?为什么要构建一个带有条件添加的测试框架或调试依赖项的应用程序,而您可以构建三个环境,其中包含一个应用程序和一个调试或测试库?

标签: javascript backbone.js preprocessor


【解决方案1】:

看看http://requirejs.org/。您可以使用 Grunt 的 require js (https://github.com/gruntjs/grunt-contrib-requirejs) 来压缩/加入您的文件。

【讨论】:

  • 感谢您的回答,但我在requirejs中找不到任何类似“#if”的语句示例
  • 为咕噜声找到了这个plugin。另一种方法请参见this 帖子。
  • 如果我有类似 ... #if debug console.log(...); 的代码,这并不能解决问题。文件可以,但内联排除不行。
【解决方案2】:

我决定使用 MetaScript 。它有我需要的一切,例如:

评论包括:

/*? if (NODE)
    include("node-stuff.js");
else
    include("browser-stuff.js"); */

注释变量

//? var NODE = true;     // Local
//? NODE = true;         // Global

以及我需要的其他功能。缺点是需要nodejs-legacy lib (Ubuntu)。

【讨论】:

    【解决方案3】:

    试试这个 - Builder,它支持的其他功能包括直接来自 GitHub:https://github.com/electricimp/Builder

    小例子

    @include once "github:jquery/jquery/build/release.js@2.2.3"
    
    @set ABC 123
    
    @if ABC > 123
      //
    @else
      //
    @end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 2011-10-12
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多