jsのモジュール化
2368 ワード
common.js
モジュール化の過程を参考にする
モジュール化はどんな問題がありますか?モジュールのコードをどのように安全に包装しますか?(モジュール外のコードを汚染しない) どのように唯一のモジュールを識別しますか? モジュールのAPIをいかに優雅に暴き出すか?(グローバル変数を追加できません) は、依存するモジュールをどのように使いやすいですか?これらの問題をめぐって、jsモジュール化は苦しくて紆余曲折する道を始めました. 2009年、nodejsはcomon.jsの発展を促しました.
1、Common JS定義のモジュールは、{モジュール参照}{モジュール定義(export)}{モジュール識別(module)}require()に分けて外部モジュールを導入する.exportオブジェクトは、現在のモジュールの方法または変数を導出するために使用され、唯一の出口です.moduleオブジェクトはモジュール自体を表します.
規範モジュールの識別に準拠すべき規則(表記規則) は、グローバル関数requireを定義し、着信モジュール識別によって他のモジュールを導入し、実行の結果、すなわち他のモジュールから漏れたAPI を実行する.フレキシブル関数によって導入されたモジュールにも依存が含まれている場合、これらの依存性は順次負荷される .モジュールの導入に失敗した場合、require関数は異常 を報告すべきである.モジュールは、変数exportsを通じて、暴落したAPIに憧れています.exportsは一つの対象しかなく、暴落したAPIはこの対象となる属性が必要です.
AMDの思想はその名の通り、必要なモジュールを非同期的にロードし、その後、コールバック関数で主論理を実行します.これはまさに私達がブラウザの端で開発した習慣的な方式で、その作者は自らAMD規格に合ったrequirejsを実現しました.AMD/RequireJsは急速に多くの開発者に受け入れられました.AMD仕様には以下の内容が含まれています.はグローバル関数defineでモジュールを定義します.使い方は:define(id?dependencies?factory)です. idはモジュール標識で、Common JS Module Identifers規格に従います. dependenciesは依存するモジュール配列であり、factoryでは着信型参加の1つが に対応する必要がある. dependenciesの値に「require」、「export」または「module」があれば、comonjsにおける実現と一致する . dependenciesが省略して書かないと、デフォルトは「require」、「export」、「module」、factoryもデフォルトでrequire、exports、module に伝えられます. factoryが関数である場合、モジュールのAPI漏れの方法は3つあります.returnの任意のタイプのデータ、exports.xxx=xxx、module.exports=xxx factoryが対象であれば、そのオブジェクトはモジュールの戻り値 である.
モジュール化の過程を参考にする
モジュール化はどんな問題がありますか?
1、Common JS定義のモジュールは、{モジュール参照}{モジュール定義(export)}{モジュール識別(module)}require()に分けて外部モジュールを導入する.exportオブジェクトは、現在のモジュールの方法または変数を導出するために使用され、唯一の出口です.moduleオブジェクトはモジュール自体を表します.
規範
//math.js exports.add = function() { var sum = 0, i = 0, args = arguments, l = args.length; while (i < l) { sum += args[i++]; } return sum; };
//increment.js var add = require('math').add; exports.increment = function(val) { return add(val, 1); };
//program.js var inc = require('increment').increment; var a = 1; inc(a); // 2
サービスは先端に向かってAMD/RequireJsの立ち上がりと妥協に進出します.AMDの思想はその名の通り、必要なモジュールを非同期的にロードし、その後、コールバック関数で主論理を実行します.これはまさに私達がブラウザの端で開発した習慣的な方式で、その作者は自らAMD規格に合ったrequirejsを実現しました.AMD/RequireJsは急速に多くの開発者に受け入れられました.AMD仕様には以下の内容が含まれています.
/a.js define(function(){ console.log('a.js '); return { hello: function(){ console.log('hello, a.js'); } } });
//b.js define(function(){ console.log('b.js '); return { hello: function(){ console.log('hello, b.js'); } } });
//main.js require(['a', 'b'], function(a, b){ console.log('main.js '); a.hello(); $('#b').click(function(){ b.hello(); }); })