modules
Meteor 1.3の ES2015 にとても興奮しています。Meteor 1.2 で中程度の複雑さのアプリを作成しました。非常に多くのテンプレートとファイルがあるため、クライアント側でコンテンツをダウンロードするのに少し時間がかかります。を使用した遅延読み込み機能に興味がありimport
ます。meteor night talkから、彼らは Blaze テンプレートはまだグローバルであり、インポート (または遅延ロード) できないと言っています。私はinsideを使用しReact
Blaze
てみました。
- を使用して追加され
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
引数を呼び出します。
それで、私の質問は、必要な場合にのみファイルを遅延ロード (ダウンロード) することは可能ですか?