使用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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
JavaScript表单通过正则表达式验证电话号码
Mar 14 Javascript
js点击事件链接的问题解决
Apr 25 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
聊一聊JS中的prototype
Sep 29 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP如何实现跨域
2016/05/30 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
python字符串中的单双引
2017/02/16 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
村党支部书记承诺书
2014/05/29 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2014年招商工作总结
2014/11/22 职场文书
感谢信
2019/04/11 职场文书
angular异步验证器防抖实例详解
2022/03/31 Javascript