使用requirejs模块化开发多页面一个入口js的使用方式


Posted in Javascript onJune 14, 2017

描述

知道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的使用方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js parseInt(&quot;08&quot;)未指定进位制问题
Jun 19 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
Apr 02 Javascript
原生JavaScript生成GUID的实现示例
Sep 05 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
Mar 25 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
Angular中的$watch、$watchGroup、$watchCollection
Jun 25 Javascript
在ABP框架中使用BootstrapTable组件的方法
Jul 31 Javascript
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
js+css3实现炫酷时钟
Aug 18 Javascript
分享15个Webpack实用的插件!!!
Mar 31 Javascript
vue-loader教程介绍
Jun 14 #Javascript
JS中mouseup事件丢失的原因与解决办法
Jun 14 #Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 #Javascript
jQuery.form.js的使用详解
Jun 14 #jQuery
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 #Javascript
详解Vue爬坑之vuex初识
Jun 14 #Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 #Javascript
You might like
一个程序下载的管理程序(一)
2006/10/09 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
详解PHP中的PDO类
2015/07/06 PHP
深入理解PHP内核(一)
2015/11/10 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python实现上传下载文件功能
2020/11/19 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
python实现ip代理池功能示例
2019/07/05 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
微观物理专业自荐信
2014/01/26 职场文书
银行职员自我鉴定
2014/04/20 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python