知道requirejs的都知道,每一个页面需要进行模块化开发都得有一个入口js文件进行模块配置。但是现在就有一个很尴尬的问题,如果页面很多的话,那么这个data-main对应的入口文件就会很多。理论这样其实也没什么,但是到后面用grunt进行合并压缩就会有很多入口js,虽然这个入口js都把配置的模块内容都压缩到里面了,但是各个入口合并压缩后的文件中其实都有很多重合的代码,所以考虑到这个就想到把所以的入口文件都统一了,使用一个,到时候用grunt合并压缩也只有这么一个入口文件,也很方便。
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 根据不同的页面去初始化不同的页面信息
PhpEIP企业信息化平台主要解决企业各类信息的集成,能把各种应用系统(如内容管理系统,网上商城,论坛系统等)统一到企业信息化平台中,整个系统采用简单易用的模板引擎,可自定义XML标签,系统采用开放式模块开发,符合开发接口的模块可完全嵌入到平台;内容管理模块可自定义内容模型,系统自带普通文章模型和图片集模型,用户可以定义丰富的栏目构建企业门户,全站可生成静态页面,提供良好的搜索引擎优化;会员管理模
0
/**
* 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模块化开发多页面一个入口?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号