使用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结合css实现网页换肤功能
Nov 02 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
Nov 11 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
jQuery实现右键菜单、遮罩等效果代码
Sep 27 Javascript
JS常见算法详解
Feb 28 Javascript
JavaScript使用Ajax上传文件的示例代码
Aug 10 Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 Javascript
Vue中实现权限控制的方法示例
Jun 07 Javascript
微信小程序如何实现在线客服功能
Oct 16 Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 Javascript
JavaScript实现京东快递单号查询
Nov 30 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
长波有什么东西
2021/03/01 无线电
php导出word格式数据的代码实例
2013/11/25 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
nginx 设置多个站跨域
2021/03/09 Servers
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
Python OpenCV获取视频的方法
2018/02/28 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
基于Python实现扑克牌面试题
2019/12/11 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
出纳岗位职责
2013/11/09 职场文书
销售辞职报告范文
2014/01/12 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
美术教师岗位职责
2014/03/18 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
React Fragment介绍与使用详解
2021/11/11 Javascript