实现原理1.页面引入requirejs 和 设置id和当前页面信息的属性
<script src="/res/js/require.js?1.1.11" 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模块化开发多页面一个入口?的详细内容。
