Home > Web Front-end > HTML Tutorial > requireJS loads different versions of jquery_html/css_WEB-ITnose in the same HTML/JSP page

requireJS loads different versions of jquery_html/css_WEB-ITnose in the same HTML/JSP page

WBOY
Release: 2016-06-24 11:53:40
Original
1332 people have browsed it

requireJS supports JS modularization and can also load different versions of modules on the same HTML/JSP page. This feature is great, let’s see how to load multiple versions of jquery. Assume that in the HTML page, the data-main attribute entry file is main.js, and the directory structure where the file is stored is as follows:

test.html

require.js

main. js

scripts/

demo1.js

demo2.js

libs/

jquery-1.10.2.js

jquery-2.1.1.js

We write the following code in main.js:

//创建1个contextvar 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);												});
Copy after login

Through this multi-context approach, we can Implement multi-version module coexistence. But it also leads to two problems:

1. What happens if the modules loaded in different contexts are the same and have the same version (the same js file)? Will this js file be downloaded multiple times? ?

Conclusion: Through httpwatch observation, if different contexts load the same js file, then this js file will be downloaded multiple times. Obviously this is wasteful.

2. If both contexts require jquery-1.10.1 version, then how to ensure that only js is downloaded once?

Conclusion: We can define a context similar to the parent class, Store public modules, and each context can access the rootContext.

//定义rootContextvar 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);   });               });
Copy after login
Through httpwatch observation, you can see that demo1.js will only be downloaded once, which solves the problem of multiple downloads of the same file.


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template