создание всех классов из Sencha SDK - PullRequest
5 голосов
/ 07 февраля 2012

Я пытаюсь использовать 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

Я получаю следующий файл 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": []
}

то есть, это не все мои занятия. Если я обновлю

"путь": "приложение /", "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();
        }

    });

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>

1 Ответ

3 голосов
/ 14 февраля 2012

Обновление

Мы сделали это без необходимости включать все в Ext.Loader () в app.js . Убедитесь, что вы передаете Ext.Loader () массив с вашим Viewport классом. Тем не менее убедитесь, что вы правильно используете : и требует: . Таким образом, ваш окончательный вывод для файла jsb3 содержит все.

Мне удалось разобраться с этим с моей стороны. Мне нужно было использовать Ext.Loader () в моем файле app.js . Основная идея заключается в том, что вам нужно сообщить загрузчику, где находятся ваши исходные файлы. Убедитесь, что ваши файлы классов включены в сборку. На основе вашего кода выше для 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();
    }

});

Я обнаружил, что в ваших представлениях и классах контроллеров убедитесь, что у вас есть хранилища, связанные с вашим представлением (например, со списком), что вы добавляете items к самому представлению в initComponent и вы используете требует: 'MyApp.store.Users' для класса. Или вы получите странные ошибки, так как представление будет инициализировано перед сохранением.

Ext.Loader.require () должен быть помещен перед Ext.Application . После того, как вы настроите все модели и контроллеры, вы также захотите добавить свои представления.

Теперь вы должны быть в хорошем состоянии для создания файла jsb3 и убедиться, что ваши модели, представления и контроллеры теперь являются частью процесса сборки.

...