私は MeteorJs の初心者です。現在、Iron-route をインストールしています。Webページのソースコードを開くと。meteor がすべての JavaScript ファイルとコーディングを<head>
タグに挿入したのを見ました。私の質問は、MeteorJs または Blaze で、この JavaScript コーディングとファイルをファイルの最後に配置することは可能ですか?
3 に答える
JS ファイルとスクリプト タグをページの下部に配置する必要があると思います。これは、これらを最後に (つまり、DOM が完全に読み込まれた後) 読み込まれるようにするためです。
通常の html ファイルでは、これらのスクリプトが下部にあるとします。
<script type="text/javascript" src="assets/js/slider_revolution.js"></script>
<script type="text/javascript" src="assets/js/more-animations.js"></script>
<script type="text/javascript" src="assets/js/animations.js"></script>
これらは、その上のすべての行がロードされた後にのみロードされます。
Meteor では、次のようなことを行います。
Template.templateName.rendered = function() {
$('head').append('<script type="text/javascript" src="assets/js/slider_revolution.js"></script>');
$('head').append('<script type="text/javascript" src="assets/js/animations.js"></script>');
$('head').append('<script type="text/javascript" src="assets/js/more-animations.js"></script>');
}
したがって、テンプレートがページにレンダリングされた後、Meteor はこれらのスクリプトを head に追加します。そして、これらのスクリプトが読み込まれて実行されます。これは、すべてのファイルを 1 行おきにロードした後にのみロードするのとほぼ同じです。
何かを使用して、ファイルの最後にスクリプト コードを挿入できます。この理由はよくわかりませんが?
通常、Meteor はクライアント側でページをレンダリングするため、ファイルを配置して<head></head>
も直前に配置しても同じ結果が得られます。</body>
コードを挿入するか、次のようなコードを使用して挿入できます<head>..</head>
(おそらく Meteor.startup で、または体が描画されていることがわかっている場合)。
var my_awesome_script = document.createElement('script');
my_awesome_script.setAttribute('src','http://example.com/site.js');
document.body.appendChild(my_awesome_script);
Meteor でこれを行う場合、すべての最後がクライアント側でレンダリングされる直前に配置することにした場合</body>
、一度追加すると、再度追加する必要はありません (すべてのページは必要に応じてクライアントでレンダリングされます)。 ) そのため、PHP やその他のサーバー側でレンダリングされたページの場合のように、1 つのページに対して行うことはありません。
それらをレイアウトレンダリング関数に含めることをお勧めします..これは、htmlが印刷された後にのみそれらを含めます..スクリプトで何かが変更されたときに反応するイベントリスナーを追加できます