从sencha sdk创建所有类

fro*_*sty 5 extjs extjs4 extjs-mvc

我正在尝试使用sencha sdk来生成我的缩小文件.

我已经设置了我的页面

HTTP://www.mysite.localhost/ext/jobs/index.html

从index.html读取是不容易的.当我进入

sencha create jsb -a http://www.mysite.localhost/ext/jobs/index.html -p app.jsb3
Run Code Online (Sandbox Code Playgroud)

我得到以下jsb文件.

{
    "projectName": "Project Name",
    "licenseText": "Copyright(c) 2011 Company Name",
    "builds": [
        {
            "name": "All Classes",
            "target": "all-classes.js",
            "options": {
                "debug": true
            },
            "files": []
        },
        {
            "name": "Application - Production",
            "target": "app-all.js",
            "compress": true,
            "files": [
                {
                    "path": "",
                    "name": "all-classes.js"
                },
                {
                    "path": "",
                    "name": "app.js"
                }
            ]
        }
    ],
    "resources": []
}
Run Code Online (Sandbox Code Playgroud)

即它不包括我所有的课程.如果我更新

"path":"app /","name":"app.js"

app-all.js已正确创建.但是我怎样才能获得控制器和视图.有很多文件.有没有任何一个示例mvc应用程序jsb.我的应用程序基于潘多拉.

应用程序/ app.js

    Ext.Loader.setConfig({ enabled: true });
    Ext.application({

        name: 'Pandora',
        models: ['Part', 'Material', 'Job', 'Process', 'Invoice', 'InvoiceDetail', 'PurchaseOrder'],
        stores: ['SalesContact', 'Parts', 'Materials', 'Jobs', 'AccountHandlers', 'JobTypes', 'Processs', 'Artwork', 'Varnish', 'VarnishType', 'PrintType', 'ProofRequired', 'InvoiceDetails', 'PurchaseOrders'],
  controllers: ['Part', 'Material', 'Job', 'Process', 'Invoice'],
        launch: function () {

            Ext.QuickTips.init();
            var cmp1 = Ext.create('App.view.Jobs', {
                renderTo: "form-job"
            });
            cmp1.show();
        }

    });
Run Code Online (Sandbox Code Playgroud)

的index.html

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="ext-all-debug.js"></script>
    <script type="text/javascript" src="app/app.js"></script>
</head>
<body>
    <div id="form-job"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

sub*_*ion 3

更新

我们不需要在app.js的Ext.Loader()中包含所有内容就可以完成此工作。确保使用Viewport类向Ext.Loader()传递一个数组。仍然确保你做了正确的使用:要求:。这样,jsb3 文件的最终输出就包含了所有内容。

我设法解决了这个问题。我需要在app.js文件中使用Ext.Loader()。一般的想法是你需要告诉加载器你的源文件在哪里。确保您的类文件包含在构建中。根据上面的app/app.js代码。

Ext.Loader.setConfig({ enabled: true });

// SDK builder required source files, use the class names.
Ext.Loader.require(['Pandora.view.Viewport']);

Ext.application({

    name: 'Pandora',
    models: ['Part', 'Material', 'Job', 'Process', 'Invoice', 'InvoiceDetail', 'PurchaseOrder'],
    stores: ['SalesContact', 'Parts', 'Materials', 'Jobs', 'AccountHandlers', 'JobTypes', 'Processs', 'Artwork', 'Varnish', 'VarnishType', 'PrintType', 'ProofRequired', 'InvoiceDetails', 'PurchaseOrders'],
    controllers: ['Part', 'Material', 'Job', 'Process', 'Invoice'],
    launch: function () {

        Ext.QuickTips.init();
        var cmp1 = Ext.create('App.view.Jobs', {
            renderTo: "form-job"
        });
        cmp1.show();
    }

});
Run Code Online (Sandbox Code Playgroud)

我发现在您的视图和控制器类中,请确保您是否有与视图相关的商店(如组合框),您要在initComponent中将项目添加到视图本身,并且使用要求:'MyApp.store.Users'来班上。或者您会收到奇怪的错误,因为视图将在存储之前初始化。

Ext.Loader.require ()必须放在Ext.Application之前之前。一旦你完成了模型和控制器的所有设置,你也会想要添加你的视图。

您现在应该可以很好地创建 jsb3 文件,并看到您的模型、视图和控制器现在已成为构建过程的一部分。

  • 另一件值得添加的事情是,如果您的应用程序有身份验证,则在大多数情况下,您需要在生成文件时禁用它。当我想重新生成所有类文件列表时,我在 localhost 和 PhantomJS/1.1.0 用户代理上进行检测,以自动禁用我的代理 (2认同)
  • 必须说,SDK 工具的启动和运行有点尴尬。我不得不深入研究源代码几次才能解决奇怪的行为。我希望他们开源 SDK,因为我对代码做了一些更改,以在构建同一应用程序的多个版本时提供帮助。另外,我们可以帮助记录它的工作原理。听起来像是不久的将来的主题博客文章! (2认同)