指示 Sencha SDK 工具捆绑 app.json 中指定的其他 js 文件

Posted

技术标签:

【中文标题】指示 Sencha SDK 工具捆绑 app.json 中指定的其他 js 文件【英文标题】:Instruct Sencha SDK tools to bundle other js files specified in app.json 【发布时间】:2013-01-24 18:00:55 【问题描述】:

我的app.json 文件包含一个 Sencha touch 2 应用程序。

"js": [
    
        "path": "sdk/sencha-touch.js"
    ,
    "path": "js/mootools-1.2.5-core.js", // I want these files to be bundled too
    "path": "js/mootools-1.2.5.1-more.js", // <----------+
    "path": "js/soundmanager2-nodebug-jsmin.js", // <----+
           ...                                     // <----+ and there are more.
           ...

    
        "path": "app.js",
        "bundle": true,  /* Indicates that all class dependencies are concatenated into this file when build */
        "update": "delta"
    ,

现在我看到当我调用sencha app build production 时,它会将所有煎茶类编译成一个巨大的app.js 文件。但是我所有的其他类都只是压缩到构建目录。它们没有串联。如何将它们包含在 app.js 中?

常见问题解答

    你的 json 文件写得对吧?

    A.是的,app.json 的编写没有任何语法错误。该项目在调用 sencha app build production

    的基础上成功构建

【问题讨论】:

【参考方案1】:

查看源代码并与Cmd背后的开发人员交谈后,目前看来是不可能的。

但是,由于构建文件是用 javascript 编写的,理论上,修改它并将此功能添加到 Cmd 中并不需要太多。

您可以在以下位置找到 Sencha Touch 构建文件:

CMD-ROOT/plugins/touch/current/app-build.js

其中CMD-ROOTsencha 命令的位置 - 您可以使用which sencha 找到它。

在我的系统(OSX)上,路径是:

/Users/Robert/bin/Sencha/Cmd/3.0.0.250/plugins/touch/current/app-build.js

希望对你有所帮助。

更新

看起来,在与另一个 Cmd 开发人员交谈后,这实际上是可能的。要实现它,您需要采取 2 个步骤:

1) 将skipFrameworkFile 属性添加到您要捆绑的每个JS 资源中。这告诉编译器在构建应用时不要复制资源。


    "path": "resources/js/jquery.js",
    "skipFrameworkFile": true
,

    "path": "resources/js/jquery2.js",
    "skipFrameworkFile": true

2) 要求 app.js 文件中的每个文件都使用 @require 标记。这告诉编译器将您的每个文件包含到您的 app.js 文件中。

//@require resources/js/jquery.js
//@require resources/js/jquery2.js

【讨论】:

感谢您的意见。事实上,我现在使用 sencha 作为传统模式。我通过sencha create jsb 创建了依赖树。然后在调用sencha build 之前添加所有依赖项。这很好用。但由于它已被弃用,我不能依赖它。 更新。再次与开发人员交谈,并提出了一个适合您的解决方法。如果有,请告诉我。 我试过了。但没有运气。我仍然看到它通过网络请求“mootools.js”和其他请求。此外,app.js 文件大小根本不会增加。看看我的精简版app.js 和app.json 奇怪,因为我已经测试过它并且它有效。你正在运行什么版本的 Cmd?我正在运行Sencha Cmd v3.0.0.250 我在新的 Sencha Cmd 3.0 中检查了它。有用!!我现在正在将整个项目转换为最新的 ST2【参考方案2】:

对于 SenchaCmd 3.2,rdougan 的解决方案对我不起作用。但是,而不是使用:

'skipFrameworkFile: true

我用过

'x-bootstrap': true

(通过查看 SenchaCmd 源代码)并且成功了!

其他步骤同rdougan的

希望这会有所帮助。干杯

【讨论】:

是的 skipFrameworkFile 选项对我也不起作用thanx!

以上是关于指示 Sencha SDK 工具捆绑 app.json 中指定的其他 js 文件的主要内容,如果未能解决你的问题,请参考以下文章

安装 Sencha SDK 并生成 GS 应用

无法调用未定义 app.js:1 sencha 嵌套的方法“子字符串”

Sencha Touch 2.0 进度指示器

sencha touch 2 中的滚动条指示器可见性

指示器在 loadmask sencha touch 中不起作用

Sencha Touch - sencha touch js 大小的性能问题