modular js

9432 ワード

Snady
思考こそ進歩の本質です.
AMD:ブラウザのモジュール仕様
前の方によると、NodeJSと同じ方式のモジュール表記を実現するために、大牛たちは多くの努力をした.
 
しかし、ブラウザ環境がサーバ側と違っているため、そのモジュールにはHTTP要求プロセスがあります.この要求過程の多くはscriptを使用しています.scriptはNodeJSと同じモジュールフォーマットを実現するのが難しいです.
 
Modules/Wrappings 実現を現実にする.NodeJSのモジュールの書き方とは完全に一致していませんが、NodeJSを熟知しているプログラマーには親近感があります.
 
しかし、NodeJSはあくまでもサーバ端のJavaScriptであり、これらの枠をブラウザJavaScript環境に置く必要はない.このときAMD 誕生しました.その全称は非同期モジュール定義です.名前からもわかるようにスクリプトに適しています.AMDは、ブラウザ内のJavaScript環境のための仕様とも言える.CommonJSのいくつかの長所を吸収しましたが、それをそのまま適用しません.AMDをCommon JSとして開始するtransport format 存在するが、CommunJS開発者と合意できないために独立して存在する.独立したwikiがあります. と討論グループ .
 
AMDは簡潔なモジュールAPIを設計しました. .
 
define(id?dependencies?factory);
 
その中:
  • id:モジュールのロゴは省略できます.
  • dependencies:依存するモジュールは、省略することができます.
  • factory:モジュールの実装、またはJavaScriptオブジェクト.
  • idはCommon JSに従う 
    Module Identifers .dependencies元素の順序とfactoryパラメータは一対一に対応します.
     
    AMDモードを用いて開発された簡単な三層構造(ベースライブラリ/UI層/アプリケーション層)は以下の通りである.
     
    base.js

    1
    2
    3
    4
    5
    6define(function() {    return{        mix: function(source, target) {        }    };}); 
    イ.js

    1
    2
    3
    4
    5
    6
    7define(['base'], function(base) {    return{        show: function() {            // todo with module base        }    }}); 
    page.js

    1
    2
    3define(['data', 'ui'], function(data, ui) {    // init here}); 
    data.js

    1
    2
    3
    4define({    users: [],    members: []}); 
    以上、defineの3つの使い方を同時に実証しました.
    1、依存しないモジュールを定義する(base.js)
    2,定義に依存するモジュール(ui.js,page.js)
    3、データオブジェクトモジュール(data.js)を定義します.
     
     
    注意深く発見します.もう一つは現れていないのです.すなわち、有名なモジュールです.

    1
    2
    3define('index', ['data','base'], function(data, base) {    // todo}); 
    具体的な名前のモジュールはほとんど推奨されていません.パッケージツールで複数のモジュールを一つのjsファイルに統合する時に使います.
     
    前に述べたdependencies元素の順序とfactoryは一つずつ対応していますが、あまり厳密ではありません.AMDはCommon JSの束縛から抜け出すために、自分のモジュールスタイルを創始的に提案しました.しかし、その後は妥協して、CommunJSと互換しました. 
    Modules/Wrappings .このように書いてもいいです.

    1
    2
    3
    4
    5
    6define(function(require, exports, module) {    varbase = require('base');    exports.show = function() {        // todo with module base    } }); 
    一重関数を考慮しないでください.フォーマットとNodeJSは似ています.requireを使用して依存モジュールを取得し、exportを使用してAPIを導出する.
     
    define以外にも、AMDはキーワードrequireを保持しています.
    require 標準的に保持されているグローバル識別子として、 
    module loader.実現しなくてもいいです.
     
    現在、AMDを実現するライブラリがあります.
    RequireJS 、
    curl 、
    ドジョウ 、
    bd Load
    JSLocalnet 、
    Nodules など
    多くのライブラリがAMD仕様をサポートしています.これからは自分でモジュールとして存在します.
    MooTools 、
    jQuery 、
    qwery 、
    bonzo  さらには 
    firebug .
    Snady
    思考こそ進歩の本質です.
    modular js
    AMD:ブラウザのモジュール仕様
    posted@  2012-03-12 07:59 snady読書(787)|  コメント(1)  編集
    Node.jsモジュールフォーマットのブラウザでの試み
    posted@  2012-03-09 07:30 snady読み(1249)𞓜  コメント(3)  編集
    JavaScriptのモジュール「書き方」
    posted@  2012-03-08 07:42 snady読書(1403)|  コメント(0)  編集
    モジュール化したJavaScriptを抱擁する
    posted@  2012-03-07:27 snady読み(1920)|  コメント(2)  編集