JSコードがたくさんあるモジュールがあります。モジュールは、そのように作成されます。JSコードがコンパイラによって解析/評価されないようにする方法は?
(function (root, factory) {
// root === window
root.MyModuleName = factory();
})(this, function() {
'use strict';
var MyModuleName = function() {
// A lot of code here that I don't want to be parsed or evaluated
// until MyModuleName constructor is executed.
//
// For example:
// var a = { d: 123 };
// var b = function() { return 45; };
// this.someMethod = function() { b() + a.d };
// ...
};
return MyModuleName;
});
すべてのメソッド&プロパティはMyModuleName
クロージャ内で、(私は思った)彼らはMyModuleName()
が実行された後にのみ解析されるべきです。唯一クリックした後、その内部のコードはJSファイルのロード(評価され
someButton.onclick = function() {
// I want compiler to parse and evaluate JS code only here
var myModule = new MyModuleName();
console.log(myModule.someMethod());
};
MyModuleName
コンストラクタが実行されていても():
ユーザーが、私はMyModuleName
のインスタンスを作成し、いくつかの方法を実行し、いくつかのボタンをクリックした後私はChromeの開発ツールのタイムラインでそれを見ることができます)。
JSファイルがロードされた後ではなく、コンパイラがクリック後にコードを評価するかどうかを確認するにはどうすればよいですか?
スクリプト全体の構文エラーをチェックするためにコードを解析する必要がありますが、コードは通常、関数が呼び出されるまでコンパイルされません。あなたが "評価する"ことを意味しているかどうかは分かりません。 – Bergi
コードを評価しないことで解決しなければならない問題は何ですか? – Bergi
@Bergi、スクリプトの解析にはモバイルで時間がかかるため、スクロールしようとすると遅延が発生します。スクリプトタグのDefer属性があまり役に立たない場合は、遅れを遅らせるだけです。だから完全に実行/解析せずにJSファイルをプリロードしようとしています。ありがとうございました。 – Marvin3