1

過去 2 週間、私は Meteor プロジェクトを構築してきました。Meteor を使用して苦労したことのある人から、ロード順序について考えてもらいたいと思います。

次のテンプレートを使用します。

http://bootstrapaste.com/free-one-page-bootstrap-template-amoeba/

すべての重要な JavaScript ファイルは、index.html の下部で参照されます。これを Meteor プロジェクトに移植しようとすると、すべての効果とアニメーション、特にmain.js

  • 単純に script タグを一番下に置いておくと、大量の JavaScript および jQuery アニメーションが機能しないことを意味します。これは、Meteor では、DOM が完全にロードされる前に JS ファイルがロードされる可能性があるためです。そして、これは多くのものを壊します。

  • Meteor では、main.* という名前のファイルはすべて、他のすべてのファイルの後にロードされます。

これは、main.* が他のすべての後にロードを開始することのみを意味しているように見えることに注意してください。ファイルのロードがいつ終了するかについては何も言いません。のスクリプトはmain.jsまだ機能しません。

すべてのスクリプト タグを独自のものにして、main.htmlそれをindex.htmlテンプレートとして添付すると、アニメーションはまだ機能しません。

  • 私はもう試した

    Template.layout.created = function() { $('head').append(''); }

これもうまくいきません。

  • Meteor.startup( func ) の使用は信じられないほど信頼性が低く、「クライアントでは、DOM の準備が整うとすぐに関数が実行される」にもかかわらず、Meteor の「DOM 準備完了」の定義は「DOM 内のすべてがロードされた後」と等しくないためです。 " そのため、DOM が完全にロードされていない後でも関数を実行できます。

とにかく、Meteor でこのような大きな問題を抱えている人は他にいますか? また、ベスト プラクティスや回避策はありますか?

4

1 に答える 1

2

通常、Meteor ではスクリプト タグを使用したくありません。プロジェクトに .js ファイルを追加するだけで、ファイル自体が読み込まれます。標準的な方法は、jQuery プラグインなどを lib フォルダーに配置することです。Meteor は最初に lib フォルダーにあるものをロードします。

Meteor でのこれらの考え方は、他のフレームワークとは異なります。skrollr.min.js などをプロジェクトに入れたら、どこでも呼び出すことができます。リンクタグを使用している場合は、CSS にも同じことが当てはまります。

DOMがロードされた後に何かをすることについては、あなたが探している

Template.myTemplate.rendered = function ( ) { ... }

これは、DOM が初めてレンダリングされた後に 1 回呼び出されます。.created はテンプレートが読み込まれる時点で発生するため、DOM はまだ利用できません。

あまりにも広範囲にリンクしたテンプレートの例を調べないと、main.js のログインを適切なテンプレートのレンダリングされたコールバックに入れたいようです。

したがって、ライブデモでそのページを再作成しようとしている場合は、すべての html をテンプレート内に配置し、プロジェクトにすべての css および js リソースを配置し、すべてのリンクおよびスクリプトタグを削除し、main.js のものをレンダリングに追加します.

于 2014-05-13T14:03:28.440 に答える