使用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 与或运算符 || &amp;&amp; 妙用
Dec 09 Javascript
异步加载script的代码
Jan 12 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
Apr 06 Javascript
jQuery实现可展开合拢的手风琴面板菜单
Sep 15 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
Node.js静态服务器的实现方法
Feb 28 Javascript
微信小程序实现侧边栏分类
Oct 21 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
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中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
优化Python代码使其加快作用域内的查找
2015/03/30 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Django缓存系统实现过程解析
2019/08/02 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
荷兰电脑专场:Paradigit
2018/05/05 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
初入社会应届生求职信
2013/11/18 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
介绍长城的导游词
2015/01/30 职场文书
学校中秋节活动总结
2015/03/23 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
青年教师听课心得体会
2016/01/15 职场文书
护士心得体会范文
2016/01/25 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
八年级作文之感恩
2019/11/22 职场文书