requireJS在同一个HTML/JSP页面,加载不同版本的jquery

requireJS支持JS模块化,也能够实现在同一个HTML/JSP页面加载不同版本的模块。这个特性太棒了,下面我们看下如何加载多个版本的jquery。假设在HTML页面中,data-main属性入口文件是main.js,文件存放的目录结构如下:

test.html

require.js

main.js

scripts/

demo1.js

demo2.js

libs/

jquery-1.10.2.js

jquery-2.1.1.js

我们在main.js编写如下代码:

//创建1个context
var reqOne = requirejs.config({
	baseUrl: 'scripts/libs/',
	context:"context1",
	paths:{
		jquery: 'jquery-1.10.2'
	}
});

reqOne(['jquery'],
		function($) {
			console.log("v1=" + $().jquery);
		});

//创建1个context
var reqTwo  = requirejs.config({
	baseUrl: 'scripts/libs/',
	context:"context2",
	paths:{
		jquery: 'jquery-2.1.1'
	}
});

reqTwo(['require','jquery'],
		function(require,$) {
			console.log("v1=" + $().jquery);
		});

通过这种多context的方式,能够实现多版本的模块共存。但是随之而来也导致了2个问题:

1、如果不同context加载的模块相同,版本相同(同一个js文件),会怎么样呢?这个js文件会下载多次吗?

结论:通过httpwatch观察,如果不同的context加载同1个js文件,那么这个js文件会下载多次。显然这很浪费。

2、如果2个context都是需要jquery-1.10.1版本,那么怎么保证只js只下载一次呢?

结论:我们可以定义一个类似父类的context,存放公共的模块,各个context都可以访问该rootContext。

//定义rootContext
var rootContext = require.config({
 baseUrl: 'scripts/'
});

var reqOne = requirejs.config({
 baseUrl: 'scripts/libs/',
 context:"context1",
 paths:{
  jquery: 'jquery-1.10.2'
 }
});

reqOne(['jquery'],
  function($) {

   console.log("v1=" + $().jquery);

   // 访问rootContext中的JS模块
   rootContext(['demo1'],function(m){
    console.log("require1=" + m.name);
   });

  });

var reqTwo  = requirejs.config({
 baseUrl: 'scripts/libs/',
 context:"context2",
 paths:{
  jquery: 'jquery-2.1.1'
 }
});

reqTwo(['require','jquery'],
  function(require,$) {

   console.log("v1=" + $().jquery);

   // 访问rootContext中的JS模块
   rootContext(['demo1'],function(m){
    console.log("require1=" + m.name);
   });  

  });

通过httpwatch观察,可以看到demo1.js只会下载一次,这很好的解决了同个文件多次下载的问题。

时间: 2024-10-21 16:39:45

requireJS在同一个HTML/JSP页面,加载不同版本的jquery的相关文章

jsp页面加载出错或者datagrid有数据但页面不展示

(一) Uncaught SyntaxError: Invalid or unexpected token                                VM4337:2 at new Function () at Object.parseOptions (jquery.easyui.min.js:58) at Function.$.fn.linkbutton.parseOptions (jquery.easyui.min.js:1004) at HTMLAnchorElemen

jquery加载页面的方法(页面加载完成就执行)

jquery加载页面的方法(页面加载完成就执行) jquery加载页面的方法(页面加载完成就执行),建议大家看下windows.onload与$(document).ready之间的区别. 1.$(function(){  $("#a").click(function(){  //adding your code here  }); }); 2.$(document).ready(function(){  $("#a").click(function(){  //a

同一个页面,加载不同版本jQuery

在同一个页面加载多个不同版本的jQuery方法: 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <title>在同一个页面中加载多个不同的jQuery版本</title> 5 <!-- 3.2.1 --> 6 <script type="text/javascript&quo

收藏文章 写的很好 可惜有些还是看看不懂额。。。RequireJS进阶:模块的定义与加载

文 RequireJS进阶:模块的定义与加载 javascript requirejs 两仪 2014年12月01日发布 推荐 4 推荐 收藏 15 收藏,6.9k 浏览 概述 模块不同于传统的脚本文件,它良好地定义了一个作用域来避免全局名称空间污染.它可以显式地列出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入,而无需引用全局变量.RequireJS的模块是模块模式的一个扩展,其好处是无需全局地引用其他模块. RequireJS的模块语法允许它尽快地加载多个模块,虽然

从输入URL到页面加载发生了什么

从输入URL到页面加载发生了什么 转自: https://segmentfault.com/a/1190000006879700 作者写得很不错,作者忽略了的,我加了上去,完善了一些,如get与post的区别等 总体来说分为以下几个过程: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 1.DNS解析 DNS解析的过程就是寻找哪台机器上有你需要资源的过程.当你在浏览器中输入一个地址时,例如www.baidu.com,其实不是百度网站真正意

从输入URL 到页面加载完成的过程

转载自:http://www.tuicool.com/articles/V7JN32Z 根据 URL 请求页面过程 说实话,这类文章网上一抓一大把,而我仍想写这篇博客,一方面是想再仔细缕一下这个过程,另一方面是希望用清晰的语言和结构来解释,也算是小小地挑战一下自己. 过程概述 浏览器查找域名对应的 IP 地址: 浏览器根据 IP 地址与服务器建立 socket 连接: 浏览器与服务器通信: 浏览器请求,服务器处理请求: 浏览器与服务器断开连接. 天啦撸,结束了?也太简单了吧...各位看官,不急,

两种方法实现在HTML页面加载完毕后运行某个js

两种方法实现在HTML页面加载完毕后运行某个js 这篇文章主要介绍了通过两种方法实现在HTML页面加载完毕后运行某个js,需要的朋友可以参考下 js方法: 复制代码 代码如下: <script type="text/javascript"> window.onload=function(){ var userName="xiaoming"; alert(userName); } </script> 以下为jQuery方法,需要引用jQuery

41 关于请求被挂起页面加载缓慢问题的追查

缘起 有用户反馈内部MIS系统慢,页面加载耗时长.前端同学们开组会提及此事,如何解决慢的问题. 最致命的是:偶发!你不能准确知道它抽风的时间点,无法在想要追查问题的时候必现它.这只是一方面,另外,慢的可能实在太多了,那么问题来了,是前端导致的还是后端的问题? 对慢的定义也有待商榷,多久算慢?如果这个页面加载大量数据耗时增加那我认为这是正常的.但这个时限超过了一个合理的自然值,就变得不那么正常了,比如四五十秒,一分多钟. 最奇葩的是,如此久的耗时居然不会报超时错误,而是拿到正确返回后将页面呈现了出

FaceBook页面加载技术

1. 技术背景 FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6 秒:同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表明,如果用户打开一个网站,等待3~4 秒还没有任何反应,他们会变得急躁,焦虑,抱怨,甚至关闭网页并且不再访问,这是非常糟糕的情况.所以,网页加载的速度十分重要,尤其对于拥有遍布全球的5亿用户的Facebook(全球最大的社交服务网站)这样的大型网站,有着大量并发请求.海量数据等客观情况,速度就成了必