前端模組化 AMD 詳解

2021-09-25 13:58:03 字數 2360 閱讀 2319

"a.js"

>

<

/script>

"b.js"

>

<

/script>

"d.js"

>

<

/script>

"e.js"

>

<

/script>

"f.js"

>

<

/script>

"g.js"

>

<

/script>

上面這樣載入主要出現的問題:

為了解決這樣的問題 於是有了require.js

官網位址

現在比較常用的amd

主要分為3步:

"js/require.js"

>

<

/script>

然後定義模組,

define

("模組名稱",[

"模組的依賴項"],

function()

)

在require.js中,引用乙個模組使用require.js提供的函式 require()

語法: require([

"模組檔案的路徑(不帶.js字尾的)"],

function()

)

定義模組的時候,有匯出項的情況

模組有匯出項,怎麼使用匯出項?

require([

"./modules/b"

,"./modules/c"

,'./modules/a'],

function

(mb, mc)

)

模組的依賴項

在定義乙個模組的時候,這個模組內部可能會使用到其他模組的內容,這些其他模組就可以稱作當前模組的依賴項

//5-模組的 依賴項

define([

'./c'],

function

(toolbox)

);

​ 在require.js中,模組路徑的查詢方式, 一共有三種:

不做任何配置,直接以當前檔案的路徑作為參照require(["./modules/a"])如果設定了data-main屬性,那麼模組的查詢,會以data-main指定的檔案的路徑作為基礎(幾乎不用)

data-main是乙個屬性,是引入require.js的script標籤的屬性

這個屬性可以用來指定乙個檔案,載入檔案的路徑會以這路徑為基礎, 指定的檔案會在require.js載入完畢之後,通過非同步的方式載入,並且執行裡面的**,

"require.js" data-main=

"./js/"

>

<

/script>

如果通過require.config方法配置了基礎路徑,那麼所有的模組查詢都會以這個基礎路徑作為參照

//config方法是用來配置require的一些載入規則的!

require.

config(}

)//當引用模組的時候,模組的路徑 baseurl + 引用模組的路徑

// require(["dianzuan"]);

注意: 第三種方式中 找檔案的規則是:baseurl + paths

注意: 第三種方式中,

找檔案的規則是: baseurl + 檔案路徑 或者 baseurl + paths

如果引用模組的時候, 路徑寫法是如下 3 種形式之一, 就不遵守上面的規則了

1. 檔案路徑 加上了 .js 字尾, 將不拼接基礎路徑, 直接按照配置的路徑查詢

2. 檔案路徑 是以 / 開頭的絕對路徑,

會直接以絕對路徑讀取

(需要加上 .js 字尾)

3. 檔案路徑 以 http:

// 或者 https:

// 開頭的

有依賴項且有匯出項

require.

config(,

中可通過設定shim,讓不支援模組化的第三方內容

//和require.js能夠實現更好的配合

shim:

,//配置abc

abc:}}

)

前端模組化

前端模組化解決什麼問題?有了模組,我就可以很方便的使用別人的 想要什麼功能,就用載入什麼模組。但是,這樣做需要有乙個前提,那就是大家必須以同樣的方式編寫模組,否則就亂套了。所以組內需要有一套統一的模組規範。如何實現模組?1 物件字面量的變體 2 js設計模式的模組模式 3 採用成熟的庫檔案。前兩種方...

前端模組化

定義 具有相同屬性和行為的事物的集合 在前端中 將一些屬性比較類似和行為比較類似的內容放在同乙個js檔案裡面,把這個js檔案稱為模組 目的 為了每個js檔案只關注與自身有關的事情,讓每個js檔案各行其職 模組化 指的就是遵守commonjs規範,解決不同js模組之間相互呼叫問題 commonjs a...

前端模組化

當多人開發同一專案時,很容易就會產生命名衝突的問題,尤其是js檔案,任何的js引入順序的打亂都可能導致專案執行失敗,為了解決命名衝突的問題,在es6之前,可以使用函式閉包來解決這個問題。即可能像這樣 function 這樣雖然可以解決命名衝突的問題,但也使得 的復用性變得極差,因為其它的檔案將無法再...