使用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 相关文章推荐
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
jQuery Layer弹出层传值到父页面的实现代码
Aug 17 jQuery
捕获未处理的Promise错误方法
Oct 13 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
深入浅析JS中的严格模式
Jun 04 Javascript
vue2.0结合Element-ui实战案例
Mar 06 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
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
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
pycharm修改file type方式
2019/11/19 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
预备党员承诺书
2014/03/25 职场文书
商务经理岗位职责
2014/08/03 职场文书
党支部四风整改方案
2014/10/25 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
大学班干部竞选稿
2015/11/20 职场文书