0

私はCMDとextjsを使用しています。私のMain.jsには次のようなものがあります

Ext.define('Abc.view.main.Main', {
    extend: 'Ext.panel.Panel',
    xtype: 'app-main',
    header:{
        height: 25,
        titleAlign: 'center',
        title: 'new tile,
        padding: '0 0 0 10'
    },
    requires: [
        'Abc.view.main.MainController',
        'Abc.view.main.Component'
    ],

必要な場合は、いくつかのクラスが必要です。必要なすべてのクラスを削除してそのままにしておくと

 requires: []

すべてのページが正しく読み込まれます。では、require にファイルを追加することで得られるメリットは何ですか。

4

1 に答える 1

2

まず、アプリケーション ( ) には必須のととApplication.jsのリストがあります。コントローラーとコンポーネントがこれらの「グローバル」リストにある場合、それらはリストが評価されるときに既に読み込まれているため、違いはまったくわかりません。コンポーネントを他のプロジェクトで再利用し、 に追加するのを忘れた場合、違いがわかる場合があります。viewsstorescontrollersrequiresApplication.js

必要なときにまだロードされていない場合、次の 3 つのことが起こります。

  1. xtypeまだ に登録されていないComponentManagerため、 でインスタンス化するxtypeと失敗します (「依存関係を解決できませんでした」)。
  2. requires完全な名前でインスタンス化すると、コンポーネントが同期的に読み込まれるという警告が表示される場合があります。これは、リスト全体を一度に非同期で読み込むよりも遅くなります。
  3. 変数を使用してインスタンス化する場合、Sencha Cmd は必要なファイルを依存関係ツリーに追加することがまったくできず、ビルドされたファイルに欠落している可能性があります。例:

    var doWindow = true;
    var component = doWindow?'Ext.Window':'Ext.panel.Panel';
    Ext.create(component,{
        ...
    });
    

このrequiresリストは、依存関係ツリーを解決し、ビルドされた js ファイル内のコンポーネント定義の正しい部分順序を作成するために Sencha Cmd によっても使用されるためです。

于 2016-06-29T07:12:10.207 に答える