使用requirejs模塊化開發(fā)多頁面一個(gè)入口js的使用方式
描述
知道requirejs的都知道,每一個(gè)頁面需要進(jìn)行模塊化開發(fā)都得有一個(gè)入口js文件進(jìn)行模塊配置。但是現(xiàn)在就有一個(gè)很尷尬的問題,如果頁面很多的話,那么這個(gè)data-main對應(yīng)的入口文件就會很多。理論這樣其實(shí)也沒什么,但是到后面用grunt進(jìn)行合并壓縮就會有很多入口js,雖然這個(gè)入口js都把配置的模塊內(nèi)容都壓縮到里面了,但是各個(gè)入口合并壓縮后的文件中其實(shí)都有很多重合的代碼,所以考慮到這個(gè)就想到把所以的入口文件都統(tǒng)一了,使用一個(gè),到時(shí)候用grunt合并壓縮也只有這么一個(gè)入口文件,也很方便。
實(shí)現(xiàn)原理
1.頁面引入requirejs 和 設(shè)置id和當(dāng)前頁面信息的屬性
<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、編寫require.config.js 根據(jù)不同的頁面去初始化不同的頁面信息
/** * 1、所有頁面使用公共的require配置 * 2、根據(jù)current-page去加載相應(yīng)地模塊,不需要的模塊不要去加載 * 3、每個(gè)模塊都要按約定去對外暴露一個(gè)init的初始化方法,用于頁面信息加載時(shí)間監(jiān)聽 * */ 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) { // 頁面加載完畢后再執(zhí)行相關(guān)業(yè)務(wù)代碼比較穩(wěn)妥 $(function () { require([targetModule], function (targetModule) { // 不要在這里寫業(yè)務(wù)代碼 //全部統(tǒng)一調(diào)用init方法 //也就是每個(gè)模塊都暴露一個(gè)init方法用于事件監(jiān)聽,頁面內(nèi)容加載等 targetModule.init(currentPage); }); }); return; } }); });
3、定義模塊,實(shí)現(xiàn)初始化init方法進(jìn)行事件監(jiān)聽和頁面信息初始化
define(['jquery', "common"], function ($, common) { var newCtrl = {}; newCtrl.init = function (page) { common.info("開始初始化頁面信息"); }; newCtrl.login = function () {}; return newCtrl; });
以上所述是小編給大家介紹的使用requirejs模塊化開發(fā)多頁面一個(gè)入口js的使用方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 在Html中使用Requirejs進(jìn)行模塊化開發(fā)實(shí)例詳解
- 詳解JavaScript模塊化開發(fā)
- JavaScript的模塊化開發(fā)框架Sea.js上手指南
- Seajs 簡易文檔 提供簡單、極致的模塊化開發(fā)體驗(yàn)
- JavaScript模塊化開發(fā)之SeaJS
- 了解Javascript的模塊化開發(fā)
- javascript 構(gòu)建模塊化開發(fā)過程解析
- 深入探尋seajs的模塊化與加載方式
- seajs和requirejs模塊化簡單案例分析
- 基于RequireJS和JQuery的模塊化編程日常問題解析
- 基于RequireJS和JQuery的模塊化編程——常見問題全面解析
- JavaScript 模塊化開發(fā)實(shí)例詳解【seajs、requirejs庫使用】
相關(guān)文章
javascript正則表達(dá)式之search()用法實(shí)例
這篇文章主要介紹了javascript正則表達(dá)式之search()用法,實(shí)例分析了search()的使用技巧,需要的朋友可以參考下2015-01-01原生js實(shí)現(xiàn)隨機(jī)點(diǎn)餐效果
一款十分簡單的原生js實(shí)現(xiàn)的隨機(jī)點(diǎn)菜代碼,點(diǎn)擊點(diǎn)菜按鈕隨機(jī)點(diǎn)取上面菜單的菜品,可根據(jù)需求改成自己需要功能,比如說隨機(jī)點(diǎn)名。感興趣的朋友來參考實(shí)現(xiàn)代碼吧2019-12-12BootstrapValidator不觸發(fā)校驗(yàn)的實(shí)現(xiàn)代碼
BootstrapValidator是基于bootstrap3的jquery表單驗(yàn)證插件,是最適合bootstrap框架的表單驗(yàn)證插件,本文給大家介紹BootstrapValidator不觸發(fā)校驗(yàn)的實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧2016-09-09