RequireJs的使用详解

前端之家收集整理的这篇文章主要介绍了RequireJs的使用详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、为什么使用RequireJS?

  

上述多个js文件加载的时候,浏览器会停止网页渲染(JS阻塞浏览器渲染),加载文件越多,网页失去响应的时间就会越长;另外各文件的依赖关系很难管理。

RequireJs的作用:

(1)实现js文件的异步加载,避免网页失去响应;

(2)管理模块之间的依赖性,便于代码的编写和维护。

(3)定义了一个作用域来避免全局名称空间污染。

二、require.js的加载

1.从下载最新版本的require,放在js目录下,使用script引入页面

async属性表明该文件需异步加载(defer属性兼容IE)。

2.加载页面逻辑代码

假定代码文件是main.js,也放在js目录下,则用如下几种方式引入:

方式1:

通过主入口直接将模块配置注册到requirejs命名空间中,页面中后续的require方法无需再注册,可以直接使用短模块名进行依赖加载。

如果没有显式指定config及data-main,则默认的baseUrl为加载RequireJS的HTML页面所在目录。如果指定了data-main而没有在config中指定根路径,则该路径被设为baseUrl。

若想避开"baseUrl + paths"的解析过程,而是直接指定加载某一个目录下的脚本。可以这样做:如果一个module ID符合下述规则之一,其ID解析会避开常规的"baseUrl + paths"配置,而是直接将其加载为一个相对于当前HTML文档路径的脚本:

• 以 ".js" 结束.

• 以 "/" 开始.

• 包含 URL 协议,如 "http:" or "https:".

eg. require(['/www/js/app/vender/underscore.min.js'],function (_) {…})

require.js要求,每个模块是一个单独的js文件。加载多个模块就会发出多次HTTP请求,影响网页的加载速度。因此require.js提供了一个优化工具(r.js),当模块部署完毕以后,可以用这个工具将多个模块合并在一个文件中,减少HTTP请求数,但又需要和缓存之间进行取舍。

六、AMD模块的写法

require.js加载的模块,必须按照AMD的规定来写。即模块必须采用特定的define()函数来定义,通常返回一个对象,该对象具有供别的模块使用的方法属性;或只执行相关逻辑而无输出

七、require.js的相关插件

text插件允许require.js异步加载txt、css或html等文本资源供js使用,而不需要在script内构建Html字符串。

注意:

模块的依赖既可以通过[]引入,也可以在回调函数里通过require()方法引入,效果一样。因为define方法会通过正则先扫描回调函数中require方法的依赖并下载,然后才执行该回调函数。但此时需要传入依赖require本身,否则会报错:

多个模块先后多次依赖同一个模块时,该模块只会被下载并初始化一次,之后require会保持对其的引用供别的模块再次使用。

区分require方法的执行和回调的执行:

方法会立即执行,但callBack的执行顺序不确定,取决于下载的顺序。 //不同于以下代码,会严格按顺序执行 require('config',function(){ require('b',callBack2) })

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程之家!

原文链接:https://www.f2er.com/js/41526.html

猜你在找的JavaScript相关文章