我的模塊加載系統 v17的入門教程


模塊加載系統的目的是在JS引入依賴管理,模塊,include等機制。


聽說有人不用,就寫個簡單的教程吧。

先把mass.js下載回來。

然后建立一個HTML頁面,index.html,內容為


<!DOCTYPE HTML>
<html>
    <head>
        <title>AMD</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="mass.js">

        </script>
		<script>
           $.log("測試是否加載成功")
        </script>
    </head>
    <body>
        <h2>歡迎加入mass Framework團隊!</h2>
      
    </body>
</html>

這樣index.html就能正確引用mass.js

我們再用firefox中打開此頁面,在firebug下就把看到日志打印,說明加載成功!

然后我們建立一個新JS文件,放到同一目錄,叫hello.js。那理所當然,這模塊名為hello,當然你可以改別的,最好文件名與模塊名一致。

define("hello", function(){
    var helloMass = function(){
        alert("hello mass!")
    }
    var helloAMD = function(){
        alert("hello AMD!")
    }
    var helloWorld = function(){
        alert("hello world!")
    }
    return {
        helloMass: helloMass,
        helloAMD: helloAMD,
        helloWorld: helloWorld
    }
});

然后我們修改index.html


<!DOCTYPE HTML>
<html>
    <head>
        <title>AMD</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="mass.js">

        </script>
		<script>
           $.require("./hello", function(obj){
		      obj.helloWorld();
			  obj.helloAMD()
			  obj.helloMass()
		   })
        </script>
    </head>
    <body>
        <h2>歡迎加入mass Framework團隊!</h2> 
    </body>
</html>

然后你再用IE,FF或chrome打開,就會看到彈出三個alert了。

這里稍微說一下怎么調用模塊吧。require有兩個參數,第一個是字符串,表示要調用的模塊,第二個是回調函數。比如我要調用aaa.js文件,而aaa.js與mass.js是位於同一目錄下,那么這樣調用。

$.require("./aaa", function(){
   
});

當然你也可以,".js"后綴不是必需的。

$.require("./aaa.js", function(){
   
});

"./"表示在當前目錄查找。

如果我要依賴兩個模塊,aaa.js, bbb.js,並且它們都與mass.js在同一目錄下吧。

$.require("./aaa,./bbb", function(a, b){
    alert(a+b)//3
});

aaa.js,bbb.js的內容很簡單

//aaa.js
define("aaa", function(){
   return 1
});
//bbb.js
define("bbb", function(){
   return 1
});

於是頁面改成這樣:


<!DOCTYPE HTML>
<html>
    <head>
        <title>AMD</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="mass.js">

        </script>
		<script>
           $.require("./aaa,./bbb", function(a,b){
		      alert(a+b)
		   })
        </script>
    </head>
    <body>
        <h2>歡迎加入mass Framework團隊!</h2> 
    </body>
</html>

好了,我們再看一下模塊間的依賴。每個模塊應該自行處理依賴。現在有一個ccc.js,它與mass.js也位於同一目錄下,它依賴於上面的aaa.js.

//ccc.js
define("ccc",["./aaa"], function(a){// ./表示aaa與ccc是同一目錄
   return a + 10
});

那么我們在頁面調用ccc模塊時,就不用於是會aaa.js,它自行會加載aaa模塊的.


<!DOCTYPE HTML>
<html>
    <head>
        <title>AMD</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="mass.js">

        </script>
	<script>
           $.require("./ccc", function(c){
	     alert(c)
           })
        </script>
    </head>
    <body>
        <h2>歡迎加入mass Framework團隊!</h2> 
    </body>
</html>

好了,我們再看一下引用其他目錄的js文件是怎么用的。在mass.js的目錄下建立一個ddd文件夾,然后里面再建立一個ddd.js文件,ddd模塊依賴於ccc模塊。

//ddd.js
define("ddd",["../ccc"], function(c){// ../表示在上一級目錄中查找,會點編程的人都懂吧。很普通的常識,不需要學太多東西。
   return c+100
});

然后我在頁面上這樣引用它們。

<!DOCTYPE HTML>
<html>
    <head>
        <title>AMD>/title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="mass.js">

        </script>
	<script>
           $.require("./ddd/ddd", function(d){//在當前目錄中ddd目錄找ddd文件
		      alert(d)
		   })
        </script>
    </head>
    <body>
        <h2>歡迎加入mass Framework團隊!>/h2> 
    </body>
</html>

我們再來看遠程文件的調用,肯定所有資源不是放在同一服務器上。比如我有一個模塊是放在http://files.cnblogs.com/rubylouvre/20120830__amd.js

里面的內容為

//20120830_amd.js
define("remote",function(){
   return {
     name:"這是一個遠程文件",
     address:"位於cnblog的服務器上"
  }
})

然后調用時就直接輸入這個URL


<!DOCTYPE HTML>
<html>
    <head>
        <title>AMD</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="mass.js">

        </script>
		<script>
           $.require("http://files.cnblogs.com/rubylouvre/20120830__amd.js", function(obj){
		      alert(obj.address)
		   })
        </script>
    </head>
    <body>
        <h2>歡迎加入mass Framework團隊!</h2> 
    </body>
</html>

全文完,如果你想了解一下怎么加載jQuery,可以看一下老外的文章,畢竟AMD現范在國外很普及了,可以搜到的。或者等我下一篇教程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM