使用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 onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
使用node.js 制作网站前台后台
Nov 13 Javascript
JavaScript window.location对象
Nov 14 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
js控制TR的显示隐藏
Mar 04 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
vue按需加载实例详解
Sep 06 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 08 Javascript
Echarts如何重新渲染实例详解
May 30 Javascript
JavaScript中10个Reduce常用场景技巧
Jun 21 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP调用其他文件中的类
2018/04/02 PHP
Javascript 解疑
2009/11/11 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
js数组的操作指南
2014/12/28 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
Javascript实现字数统计
2015/07/03 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
森林防火工作方案
2014/02/14 职场文书
垃圾桶标语
2014/06/24 职场文书
授权委托书公证
2014/09/14 职场文书