使用requirejs模塊化開(kāi)發(fā)多頁(yè)面一個(gè)入口js的使用方式
描述
知道requirejs的都知道,每一個(gè)頁(yè)面需要進(jìn)行模塊化開(kāi)發(fā)都得有一個(gè)入口js文件進(jìn)行模塊配置。但是現(xiàn)在就有一個(gè)很尷尬的問(wèn)題,如果頁(yè)面很多的話,那么這個(gè)data-main對(duì)應(yīng)的入口文件就會(huì)很多。理論這樣其實(shí)也沒(méi)什么,但是到后面用grunt進(jìn)行合并壓縮就會(huì)有很多入口js,雖然這個(gè)入口js都把配置的模塊內(nèi)容都?jí)嚎s到里面了,但是各個(gè)入口合并壓縮后的文件中其實(shí)都有很多重合的代碼,所以考慮到這個(gè)就想到把所以的入口文件都統(tǒng)一了,使用一個(gè),到時(shí)候用grunt合并壓縮也只有這么一個(gè)入口文件,也很方便。
實(shí)現(xiàn)原理
1.頁(yè)面引入requirejs 和 設(shè)置id和當(dāng)前頁(yè)面信息的屬性
<script src="/res/js/require.js" data-main="/res/js/require.config" id="current-page" current-page ="news" target-module="/res/js/module/newsCtrl" defer async="true" ></script>
2、編寫(xiě)require.config.js 根據(jù)不同的頁(yè)面去初始化不同的頁(yè)面信息
/** * 1、所有頁(yè)面使用公共的require配置
* 2、根據(jù)current-page去加載相應(yīng)地模塊,不需要的模塊不要去加載
* 3、每個(gè)模塊都要按約定去對(duì)外暴露一個(gè)init的初始化方法,用于頁(yè)面信息加載時(shí)間監(jiān)聽(tīng)
*
*/
require.config({
urlArgs: "ver=1.0_" + (new Date).getTime(),
paths: {
"jquery": "/res/js/base/jquery-1.11.3.min",
"vue":'/res/js/base/vue.min',
"common": "/res/js/widgets/common"
},
shim: {
'scroll': {
deps: ['jquery'],
exports: 'jQuery.fn.scroll'
},
'vue':{
exports:'vue'
},
'common':['jquery']
}
});
require(["jquery"], function ($) {
require(["common"], function (common) {
var currentPage = $("#current-page").attr("current-page");
var targetModule = $("#current-page").attr("target-module");
if (targetModule) {
// 頁(yè)面加載完畢后再執(zhí)行相關(guān)業(yè)務(wù)代碼比較穩(wěn)妥
$(function () {
require([targetModule], function (targetModule) {
// 不要在這里寫(xiě)業(yè)務(wù)代碼
//全部統(tǒng)一調(diào)用init方法
//也就是每個(gè)模塊都暴露一個(gè)init方法用于事件監(jiān)聽(tīng),頁(yè)面內(nèi)容加載等
targetModule.init(currentPage);
});
});
return;
}
});
});
3、定義模塊,實(shí)現(xiàn)初始化init方法進(jìn)行事件監(jiān)聽(tīng)和頁(yè)面信息初始化
define(['jquery', "common"], function ($, common) {
var newCtrl = {};
newCtrl.init = function (page) {
common.info("開(kāi)始初始化頁(yè)面信息");
};
newCtrl.login = function () {};
return newCtrl;
});
以上所述是小編給大家介紹的使用requirejs模塊化開(kāi)發(fā)多頁(yè)面一個(gè)入口js的使用方式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 在Html中使用Requirejs進(jìn)行模塊化開(kāi)發(fā)實(shí)例詳解
- 詳解JavaScript模塊化開(kāi)發(fā)
- JavaScript的模塊化開(kāi)發(fā)框架Sea.js上手指南
- Seajs 簡(jiǎn)易文檔 提供簡(jiǎn)單、極致的模塊化開(kāi)發(fā)體驗(yàn)
- JavaScript模塊化開(kāi)發(fā)之SeaJS
- 了解Javascript的模塊化開(kāi)發(fā)
- javascript 構(gòu)建模塊化開(kāi)發(fā)過(guò)程解析
- 深入探尋seajs的模塊化與加載方式
- seajs和requirejs模塊化簡(jiǎn)單案例分析
- 基于RequireJS和JQuery的模塊化編程日常問(wèn)題解析
- 基于RequireJS和JQuery的模塊化編程——常見(jiàn)問(wèn)題全面解析
- JavaScript 模塊化開(kāi)發(fā)實(shí)例詳解【seajs、requirejs庫(kù)使用】
相關(guān)文章
JavaScript 面向?qū)ο蠡A(chǔ)簡(jiǎn)單示例
這篇文章主要介紹了JavaScript 面向?qū)ο蠡A(chǔ),結(jié)合簡(jiǎn)單實(shí)例形式分析了JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)中類(lèi)的定義、類(lèi)方法與屬性相關(guān)操作技巧,需要的朋友可以參考下2019-10-10
深入淺析JavaScript中數(shù)據(jù)共享和數(shù)據(jù)傳遞
這篇文章主要介紹了深入淺析JavaScript中數(shù)據(jù)共享和數(shù)據(jù)傳遞的相關(guān)資料,需要的朋友可以參考下2016-04-04
onclick與listeners的執(zhí)行先后問(wèn)題詳細(xì)解剖
javascript中onclick與listeners的執(zhí)行先后問(wèn)題一直都是大家所疑惑的地方,接下來(lái)將為大家解決此疑惑,感興趣的朋友可以了解下哦2013-01-01
微信小程序云開(kāi)發(fā)實(shí)現(xiàn)微信支付功能業(yè)務(wù)邏輯可靠
這篇文章主要介紹了微信小程序云開(kāi)發(fā)實(shí)現(xiàn)微信支付功能,云開(kāi)發(fā)來(lái)開(kāi)發(fā)微信小程序時(shí),如何實(shí)現(xiàn)微信支付,并且保證業(yè)務(wù)邏輯可靠,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-05-05
javascript 中關(guān)于array的常用方法詳解
這篇文章主要介紹了javascript 中關(guān)于array的常用方法的相關(guān)資料,需要的朋友可以參考下2017-05-05
LayUI動(dòng)態(tài)設(shè)置checkbox不顯示的解決方法
今天小編就為大家分享一篇LayUI動(dòng)態(tài)設(shè)置checkbox不顯示的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
基于JavaScript 實(shí)現(xiàn)拖放功能
本文通過(guò)實(shí)例代碼給大家介紹了JavaScript 實(shí)現(xiàn)拖放功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

