使用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中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
js克隆对象、数组的常用方法介绍
Sep 26 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
js实现的后台左侧管理菜单代码
Sep 11 Javascript
jQuery实现验证年龄简单思路
Feb 24 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
MUI 上拉刷新/下拉加载功能实例代码
Apr 13 Javascript
微信小程序 地图map实例详解
Jun 07 Javascript
老生常谈js中的MVC
Jul 25 Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 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
php Ubb代码编辑器函数代码
2012/07/05 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
PHP队列用法实例
2014/11/05 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Python中的ctime()方法使用教程
2015/05/22 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
毕业生在校学习的自我评价分享
2013/10/08 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
会议主持词结束语
2015/07/03 职场文书