您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何使用requirejs模塊化開發多頁面一個入口js”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用requirejs模塊化開發多頁面一個入口js”這篇文章吧。
描述
知道requirejs的都知道,每一個頁面需要進行模塊化開發都得有一個入口js文件進行模塊配置。但是現在就有一個很尷尬的問題,如果頁面很多的話,那么這個data-main對應的入口文件就會很多。理論這樣其實也沒什么,但是到后面用grunt進行合并壓縮就會有很多入口js,雖然這個入口js都把配置的模塊內容都壓縮到里面了,但是各個入口合并壓縮后的文件中其實都有很多重合的代碼,所以考慮到這個就想到把所以的入口文件都統一了,使用一個,到時候用grunt合并壓縮也只有這么一個入口文件,也很方便。
實現原理
1.頁面引入requirejs 和 設置id和當前頁面信息的屬性
<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 根據不同的頁面去初始化不同的頁面信息
/** * 1、所有頁面使用公共的require配置 * 2、根據current-page去加載相應地模塊,不需要的模塊不要去加載 * 3、每個模塊都要按約定去對外暴露一個init的初始化方法,用于頁面信息加載時間監聽 * */ 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) { // 頁面加載完畢后再執行相關業務代碼比較穩妥 $(function () { require([targetModule], function (targetModule) { // 不要在這里寫業務代碼 //全部統一調用init方法 //也就是每個模塊都暴露一個init方法用于事件監聽,頁面內容加載等 targetModule.init(currentPage); }); }); return; } }); });
3、定義模塊,實現初始化init方法進行事件監聽和頁面信息初始化
define(['jquery', "common"], function ($, common) { var newCtrl = {}; newCtrl.init = function (page) { common.info("開始初始化頁面信息"); }; newCtrl.login = function () {}; return newCtrl; });
以上是“如何使用requirejs模塊化開發多頁面一個入口js”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。