当前位置: 首页 » 产品 » 生活保健 » 正文

如何使用requirejs模块化开发多页面一个入口

放大字体  缩小字体 发布日期: 2024-11-27 11:30   来源:http://www.baidu.com/  作者:无忧资讯  浏览次数:17
核心提示:知道requirejs的都知道,每一个页面需要进行模块化开发都得有一个入口js文件进行模块配置。但是现在就有一个很尴尬的问题,如果

知道requirejs的都知道,每一个页面需要进行模块化开发都得有一个入口js文件进行模块配置。但是现在就有一个很尴尬的问题,如果页面很多的话,那么这个data-main对应的入口文件就会很多。理论这样其实也没什么,但是到后面用grunt进行合并压缩就会有很多入口js,虽然这个入口js都把配置的模块内容都压缩到里面了,但是各个入口合并压缩后的文件中其实都有很多重合的代码,所以考虑到这个就想到把所以的入口文件都统一了,使用一个,到时候用grunt合并压缩也只有这么一个入口文件,也很方便。

实现原理

1.页面引入requirejs 和 设置id和当前页面信息的属性

<script src=http://www.3lian.com/edu/2017/06-14/"/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 根据不同的页面去初始化不同的页面信息

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; });

 
 
[ 产品搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 

 
推荐图文
推荐产品
点击排行
    行业协会  备案信息  可信网站