AngularJSでルート/ビューモードを使用して大規模なWebサイトまたはアプリケーションを構築する場合、初期化中にコントローラーやテンプレートなどのすべてのカスタムファイルをロードすることは良い考えではありません。最良の方法は、初期化時に必要なファイルのみをロードすることです。これらのファイルは、1つの接続または複数のファイルに依存する場合がありますが、特定のルートでのみ使用されます。ルートを切り替えると、必要に応じてアンロードされたファイルがロードされます。これにより、ページの初期化の速度が向上するだけでなく、帯域幅の廃棄物も防ぎます。
インターネット上の記事のほとんどは、$ RouteProviderおよびサードパーティサービスを通じてコントローラーの怠zyなロードについて話しています。たとえば、AngularJSコントローラーをオンデマンドでロードすると、詳細に説明されています。ただし、$ StateProviderを使用したコントローラー、HTML/テンプレートの怠zyなロードに関する記事はほとんどありません。私は$ stateProviderに関連する多くのソースコードを見て、HTML/テンプレートの怠zyな読み込み問題を解決しましたが、それはまだ残念なコントローラーの怠zyな読み込み問題を解決しませんでした。時間の問題により、調査結果が最初に整理され、調査は将来継続されます。
HTML/テンプレートの怠zyなロードについては、HTMLファイルとホームページファイルを別のディレクトリに配置する必要があります。そうしないと、自動的にロードされます。同様に、TemplateUrlを使用してファイルを指定することはできません。そうしないと、自動的にロードされます。 $ stateProvider.Stateのテンプレートプロパティは、文字列値と関数をサポートするため、ファイルの重複を防ぐためにHTMLファイルを読み込んでキャッシュするように関数を定義できます。コントローラーに同じことをしたかったのですが、残念ながらコントローラー関数の定義が見つかりませんでした。私は多くの方法を試しましたが、失敗しました。将来的にはソースコードを調査して、何が欠けているかを確認します。コードを直接アップロードしますが、ロジックは複雑ではないので、あまり話しません。
//ロードされたHTMLとコントローラーを記録して、ネットワークの重複を防ぐために$ IONIC.FILES = {html:{}、Controller:{}}; //遅延荷重HTMLメソッド$ ionic.gethtml = function gethtml(名前){if HTMLとCACHE $ IONIC.FILES.HTML [name] = jQuery.Ajax({url: 'Views/' + name + ".html"、async:false})。 = $ .getScript( 'assets/controller/' + name + '.js'); jquery.ajax({"url": 'assets/controller/' + name + '.js'、 "datacype": "script"、 "async":fals}); {url: "/login"、controller:resolvecontroller( "logincontroller")、template:function(){return $ ionic.gethtml( "login");上記は、編集者によって紹介されたHTMLテンプレートの読み込み遅延の読み込み遅延の完全な説明です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!