使用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 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
Prototype Template对象 学习
Jul 19 Javascript
js setTimeout 常见问题小结
Aug 13 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
javascript实现全角半角检测的方法
Jul 23 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
Dec 09 Javascript
JavaScript实现滑动导航栏效果
Aug 30 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
Sep 30 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
微信小程序用canvas画图并分享
Mar 09 Javascript
微信小程序 WeUI扩展组件库的入门教程
Apr 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 whois查询API制作方法
2011/06/23 PHP
php 获取本地IP代码
2013/06/23 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
如何使用php实现评委评分器
2015/07/31 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
javascript中length属性的探索
2011/07/31 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python Cookie 读取和保存方法
2018/12/28 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
酒店管理求职信范文
2014/04/06 职场文书
安全保证书范文
2014/04/29 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
质量保证书
2015/01/17 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
MySQL数据库 任意ip连接方法
2022/05/20 MySQL