前端模塊化(requirejs)

前端模塊化

什么是前端模塊化

將代碼依據(jù)不同功能,或者職責進行模塊的劃分,就稱為前端模塊化

模塊化的好處

  1. 結(jié)構(gòu)更輕清晰
  2. 有利于代碼的維護
  3. 有利于代碼的復用

模塊化的標準

  1. CommonJS
    這個標準主要用在Nodejs中 用于服務器端 同步加載
  2. AMD
    Async Module Definition 異步模塊定義, 依賴前置, requirejs
  3. CMD
    Common Module Definiton 通用模塊定義, 依賴延遲 sea.js

requirejs

定義以及應用模塊

//1. 定義模塊
//具名模塊
define("模塊名稱", ["依賴項"], function(){
    //模塊內(nèi)容
})
//匿名模塊
define(["依賴項1", "依賴項2"], function(依賴項1的返回值, 依賴項2的返回值){
    //模塊內(nèi)容
    //如果模塊需要返回內(nèi)容給外界使用,那么需要通過return語句將指定的內(nèi)容進行返回
    return {};
})

//如果沒有依賴項,可以將數(shù)組參數(shù)省略掉如
define(function(){})

//2. 引用模塊
require(["要引用的模塊的路徑(不帶.js后綴)"], function(模塊的返回值){
    //在引用的模塊加載完成之后執(zhí)行的操作
})

data-main

<script src="require.js" data-main="xx/xx/xx.js"></script>

可以稱為入口文件
當requirejs加載完成之后,會直接去請求這個文件,并且執(zhí)行里面的內(nèi)容

模塊路徑

  1. 不做任何設置的默認情況下,模塊的路經(jīng)查找,是以當前的文件做基礎

  2. 如果使用data-main屬性, 模塊路徑查找,是以data-main指定的文件所在的路徑為基礎的

  3. 如果使用config方法配置了baseUrl,那么路徑的查找將會以baseUrl配置的路徑作為基礎

config 方法

require.config({
    //配置基礎路徑用的 一般baseUrl都使用絕對路徑
    baseUrl: "/",
    //paths可以用來給每個模塊的路徑設置一個別名,方便使用
    //具名模塊的別名一定要和模塊中定義的名字保持一致
    //在path中配置過的模塊,找模塊的時候,使用的是 baseUrl + path中的路徑 來查找的
    paths: {
        jquery: "./jquery",
        template: "./template",
        anmiate: "./animate"
    }
    //shim 可以用來幫不支持模塊化的第三方模塊使用到requirejs中來
    shim: {
        //屬性名:要配置的模塊別名
        //屬性值: 對象(可以包含兩個屬性 exprots, deps)
        animate: {
            //deps用來配置第三方模塊的依賴項
            deps: ["jquery"],
            //exports配置第三方模塊的返回值
            //返回值的內(nèi)容寫的是一個字符串,對應的模塊文件中的一個全局變量名
            exports: "animate"
        }
    }
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • RequireJS路徑詳解(深入理解) 0. 前言 由于官方文檔說明甚少,導致RequireJS的路徑解析邏輯就像...
    大貓Kevin閱讀 9,824評論 1 11
  • 導語: 之前一直有聽說RequireJS,但是一直都沒機會去了解,只知道它是一個給js做模塊化的API。最近在做R...
    wuqke閱讀 41,115評論 11 78
  • “蘭博基尼”售價才10萬 眾泰用事實告訴我們豪車沒那么貴,國企自從出了個眾泰之后網(wǎng)友都興奮都睡不著覺了,而國外的豪...
    黑人達拉閱讀 526評論 0 1
  • 三伏過去一周,剛剛涼快幾天,天氣突然又變得悶熱。晚上9點,趙寧打開跆拳道館大門,一股熱浪直接拍到她的臉上,幾個孩子...
    卡恩的人生故事閱讀 345評論 5 9

友情鏈接更多精彩內(nèi)容