modulesMeteor 1.3の ES2015 にとても興奮しています。Meteor 1.2 で中程度の複雑さのアプリを作成しました。非常に多くのテンプレートとファイルがあるため、クライアント側でコンテンツをダウンロードするのに少し時間がかかります。を使用した遅延読み込み機能に興味がありimportます。meteor night talkから、彼らは Blaze テンプレートはまだグローバルであり、インポート (または遅延ロード) できないと言っています。私はinsideを使用しReactBlazeてみました。
- を使用して追加され
react-template-helperたパッケージmeteor add react-template-helper フォルダーを作成し、 「TestComponent」をエクスポートするファイルを
imports追加しますtestComponent.jsx//testComponent.jsx import React from 'react'; export default class TestComponent extends React.Component { render() { return ( <div> <h1>TestComponent</h1> <div>This is from Test Component</div> </div> ); } }Blaze テンプレートの外部
importsフォルダに移動した後、<!-- homeReact template html--> <template name="homeReact"> <div> {{> React component=TestComponent}} </div> </template>importsフォルダーの外にもあるテンプレートのjsファイル
// homeReact template js import { Template } from 'meteor/templating'; import TestComponent from '/imports/testComponent.jsx`; Template.homeReact.helpers({ TestComponent() { return TestComponent; } });
これは機能しましたが、現在のルートがテンプレートimports/testComponent.jsxを必要としない場合でも、クライアントにダウンロードされます (chrome dev tools - sources タブを使用して確認) 。homeReact
それから私はこのようrequireに代わりに使用しましimportた、
// homeReact template js
import { Template } from 'meteor/templating';
Template.homeReact.onCreated(function () {
this.TestComponent = require('/imports/testComponent.jsx').TestComponent;
});
Template.homeReact.helpers({
TestComponent() {
return Template.instance().TestComponent;
}
});
このコードもimports/testComponent.jsxファイルをダウンロードしますが、さらにエラーも発生しました
テンプレート「homeReact」で、
{{> React ... }}欠落しているcomponent引数を呼び出します。
それで、私の質問は、必要な場合にのみファイルを遅延ロード (ダウンロード) することは可能ですか?