Require.jsはjsモジュール化管理教程を実現します.
7827 ワード
何がRequire.jsですか
Require.jsはAMD規格の軽量級jsモジュール化管理フレームワークであり、最新バージョンのrequire.js 2.11圧縮後は14.88 Kだけであり、jsコードをモジュールごとに分割して、非同期またはダイナミックローディングを実現し、モジュール間の依存性を明確に示して、コード品質、性能とメンテナンス性を向上させます.Require.jsの作者はAMD仕様の創始者であるJames Burkeです.
Require.jsはどんなメリットを持ってきますか?
簡単な例を挙げて説明します.
通常私達のページ構造は以下の通りです.
どうやってRequire.jsを いますか?
にrequire.js サイトに バージョンをダウンロードして、 のページに します.
require.js config
config は、 パラメータを するために されます.まずパラメータを します. の を てください. のプロジェクトのファイル は の りです.
メインファイル
define
だけからこの を してモジュールに めます. にdefine を します. めないなら らないでください. で を げます.require.jsのソースコードの には、このような コード
モジュールをdefineで する は、 の2つに されます.
1.モジュールに しないということは、モジュールは のモジュールに する がないということです.
1
2
2.モジュールの に していますが、モジュールのフォーマットに しています.フォーマットは の りです.
3
4
するモジュールが いときは、 のように くのがいいですか?
5
6
require(deps,calback,errback)
requireはモジュールを び すために されています. い はdefineに ています.require.jsのソースコードの にはこのような が
require.jsプラグイン
require.jsはプラグインのロードをサポートしています. のJSファイルをロードするためにプラグインをダウンロードしてアプリケーションのbaseUrlディレクトリに くことができます.( の に きたいなら、paths configを って します.).より なプラグインは を ることができます. はdomReadyプラグイン、textプラグインです.domReadyプラグインは、DOM のロードが した に、コールバック を させることができる.
Require.jsはAMD規格の軽量級jsモジュール化管理フレームワークであり、最新バージョンのrequire.js 2.11圧縮後は14.88 Kだけであり、jsコードをモジュールごとに分割して、非同期またはダイナミックローディングを実現し、モジュール間の依存性を明確に示して、コード品質、性能とメンテナンス性を向上させます.Require.jsの作者はAMD仕様の創始者であるJames Burkeです.
Require.jsはどんなメリットを持ってきますか?
簡単な例を挙げて説明します.
通常私達のページ構造は以下の通りです.
require
require
a.jsのコードalert("require");
ページでalertをポップアップする にクリックして してからdivの を することができます.ページのjsは レンダリングであるため、jsのレンダリングは ず のhtmlレンダリングをブロックします.また、 のjsファイルを するのも しいですが、require.jsを ってjsのモジュール ロードを できます.どうやってRequire.jsを いますか?
にrequire.js サイトに バージョンをダウンロードして、 のページに します.
data-main は できません.data-mainが すファイルはメインコードのファイルです.main.jsに されているスクリプトはすべて でロードされます.main.jsのディレクトリはデフォルトでルートです.require.js config
config は、 パラメータを するために されます.まずパラメータを します. の を てください. のプロジェクトのファイル は の りです.
メインファイル
require.config({
baseUrl: "js",
paths: {
"jquery": ["lib/jquery-1.8.3.min"],
"popup": ["lib/popup"],
"moduleA": ["app/moduleA"],
"moduleB": ["appmoduleB"]
},
shim: {
'popup': {
deps: ['jquery']
}
}
});
config は、オブジェクトパラメータを し、 に の を する.baseUrl:ルートを し、この が されていない は、デフォルトのメインファイルのディレクトリを します.ここでJSディレクトリはルートパスです.paths:モジュールの とパスを し、モジュールを び した に を する があります.リソースファイルパスはローカルパスであっても いし、 のリンクであってもいいし、 のパスを してもいいし、パスは パスであってもいいし、1つの であってもいいし、2つ のパスがある は である があります.JQパスを にとると、 パス"jquery": ["lib/jquery-1.8.3.min"]
の のパス"jquery": ["http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js","lib/jquery-1.8.3.min"]
は、 のパスの は のパスのリソースファイルを し、 のパスのロードに した は、2 のパス( : CDN IE11 IE , )
shimをロードします. AMD のモジュールは できません.この は AMD のモジュールを するために され、 は1つのオブジェクトです. が いた プラグインはAMD ではないので が です.モジュール と モジュール は、このモジュールのpathsで される である があります.depsはこのモジュールの を するために され、popupプラグインはJQに します.define
だけからこの を してモジュールに めます. にdefine を します. めないなら らないでください. で を げます.require.jsのソースコードの には、このような コード
define = function (name, deps, callback) {}
があります.defineが つのパラメータnameを することが かります.モジュールの 、 のタイプです. にはモジュールに けられた です.カスタムできますが、 のモジュールの と じではなく、パラメータが されていない は、このモジュールの は、このファイルのpathsで された deps: のモジュールの 、 のタイプであり、 されたモジュール であり、このパラメータに していない は、calbackに しないことができます. またはオブジェクトである は、 するモジュールがロードされた 、このコールバック は び しられます. はパラメータの で に されます.パラメータは モジュールに しています.モジュールをdefineで する は、 の2つに されます.
1.モジュールに しないということは、モジュールは のモジュールに する がないということです.
1
define({
fnMethod: function() {
return (" ")
}
});
このモジュールは のタイプのcalbackだけを えても じです.2
define(function() {
return {
fnMethod: function () {
return (" ")
}
}
});
このモジュールは タイプのcalbackを えています.モジュールは fnMethodを して、 を します. の り は のタイプでもいいです. の は を に すだけで、 の で モジュールを することを めています.2.モジュールの に していますが、モジュールのフォーマットに しています.フォーマットは の りです.
3
// moduleA name, “ ”,
define(["jquery","moduleA"],function($, mA) { //
return {
fnMethod: function () {
return ($.text(".text") + mA.name);
}
}
});
この は のモジュールがjqueryとmoduleAに しており、 として「 」を すことを している. の を いてもう つの な を げます.4
define("module",["jquery","moduleA"],function($, mA) { //
return {
fnMethod: function () { //fnMethod
return ($(".text").text() + mA.name);
}
}
});
ここではmoduleというモジュールを し、jqueryとmoduleAモジュールに する.するモジュールが いときは、 のように くのがいいですか?
5
define("module", ["jquery", "moduleA", "moduleB", "moduleC", "moduleD", "moduleE", "moduleF"], function ($, mA, mB, mC, mD, mE, mF) {
return {
fnMethod: function () {
return ($(".text").text() + mA.name);
}
}
});
require.js 2.0バージョンの 、より い き を しました.6
define("module", function (require) { // “require”
var $ = require("jquery"),
mA = require("moduleA"),
mB = require("moduleB"),
mC = require("moduleC"),
mD = require("moduleD"),
mE = require("moduleE"),
mF = require("moduleF");
return {
fnMethod: function () {
return ($(".text").text() + mA.name);
}
}
});
の に してください.1.defineの でrequireを するには、「require」 をモジュールに して する があります. 6のように、 5に がある は、 に してもいいです. がない は、requireを に えるべきではなく、 6のようにしてください.2.require.jsは つのファイルに つのモジュールを しています.つまり つのファイルは つのdefine のモジュールしかないという です. つのファイルに のdefineモジュールがあれば、 のファイルしか できません.defineにnameパラメータを すると、nameの はpathsのファイルの と していなければなりません.require(deps,calback,errback)
requireはモジュールを び すために されています. い はdefineに ています.require.jsのソースコードの にはこのような が
return context.require(deps, callback, errback)
あります.require()も3つのパラメータがあることが かります. require(["moduleA", "moduleB"], function (mA, mB) {
console.log(mA.name);
console.log(mB.age);
},
function (error) {
//....
}
);
moduleAとmoduleBの つのモジュールのロードが すると、コールバック が されます. のパラメータは として です. つ のパラメータは、ロード のコールバック に します. のパラメータは、エラーを するコールバック であり、errorオブジェクトパラメータを し、requireオブジェクトは、グローバルErrorイベントのリスニング を することもできます. の で されていないすべてのエラーは、この をトリガします.requirejs.onError = function (error) {
// ......
};
requireはdefineの でも できます.define("moduleA",function (require) {
//.......
require(["moduleB, moduleC"], function(mB, mC) {
//.......
});
//.....
});
requireはJSONPモードを び すことができます.calbackパラメータの を「define」に するだけで、require(["http://example.com/api/data.json?callback=define"],
function (data) {
console.log(data);
}
);
はJSONPを び す であり、JSONPのcalbackパラメータは「calback」であるため、JSON を つの「define()」に んだAPIに して、JSONPのこのような い はアプリケーションの に され、JSONPサービスがタイムアウトしたら、 のdefine(モジュール)によっても されないようになる. り タイプJSON ojectのJSONPサービスのみに しており、 の りタイプは 、 、 などに できません.require.jsプラグイン
require.jsはプラグインのロードをサポートしています. のJSファイルをロードするためにプラグインをダウンロードしてアプリケーションのbaseUrlディレクトリに くことができます.( の に きたいなら、paths configを って します.).より なプラグインは を ることができます. はdomReadyプラグイン、textプラグインです.domReadyプラグインは、DOM のロードが した に、コールバック を させることができる.
require(['domReady'], function (domReady) {
domReady(function () {
//This function is called once the DOM is ready.
//It will be safe to query the DOM and manipulate
//DOM nodes in this function.
});
});
require(['domready!'], function (doc){
//This function is called once the DOM is ready.
//It will be safe to query the DOM and manipulate
//DOM nodes in this function.
});
text.jsプラグインは、scriptを ってDOM を するよりも、HTMLタグを って する が いです.しかし、jsファイルにHTMLを め むという い はありません. いい はHTML を うことですが、これは しにくいです. に のHTMLの .text.jsはこの を することができて、もし してtextを したら!プレフィックスは にロードされます.require(["text!/view/index.html" ,"text!/css/tab.css"],
function(html, css) {
//........
}
);
の でロードしたファイルの は で に します.