jQuery技术

require.js入门教程

字号+ 作者:H5之家 来源:H5之家 2017-06-26 17:01 我要评论( )

说明:本文只提供快速入门内容,方便快速进入实战状态。更高级的配置,请参考官网文档。 当初之所以使用 RequireJS 等工具,是因为想提高js的加载速度,避免不必要的堵塞。但通过一段时间的使用,发现 RequireJS 更重要的作用是作为命名空间使用。 一、基本

说明:本文只提供快速入门内容,方便快速进入实战状态。更高级的配置,请参考官网文档。

当初之所以使用 RequireJS 等工具,是因为想提高js的加载速度,避免不必要的堵塞。但通过一段时间的使用,发现 RequireJS 更重要的作用是作为命名空间使用。

一、基本用法

RequireJS 官网文章不是中文的,篇幅不少(官方网址:)。网上的其他相关文章,有的讲的也很复杂。

其实,RequireJS 极其简单。如果你对 c# 或 java 语言的命名空间有一点点了解,那么,RequireJS 的用法和作用,可以用 c# 中的两行代码来类比说明:

1 using xx=wojilu.Core;

2 namespace MyApp {

3     public class MyClass {

4         public void MyTest() {}

5     }

6 }

RequireJS主要的功能,就是实现c#代码的第一行和第二行的功能:1)引入需要使用的命名空间(顺便加个别名也行);2)将自己的代码放到命名空间中,避免全局污染。

因为 javascript 天生的缺点,语言本身没有集成命名空间的概念,所以变量名、函数名很容易发生冲突。这些年,大家想尽了各种办法,给 js 添加命名空间的概念,其中最成熟的套路,就是 RequireJS 这种。

我们可以看到,在c#中只要两行代码的事情,在 js 中,得用多么复杂的类库,比如 RequireJS 去解决。

下面我们看一下 RequireJS 的具体写法,新建一个独立的 wojilu.test1.js 文件,然后输入如下代码:

1 define( ['wojilu.Core'], function(xx) {

2     return {

3         MyTest : function() { alert( 'wojilu1 module' );}

4     };

5 });

和上面的c#代码对比一下,RequireJS 同样也做了两件事情:
1、引入命名空间 wojilu.Core,同时给它取了一个别名 xx;
2、将自己的所有代码放在 define 中,避免全局化的污染冲突。

总之,RequireJS 定义了(define)一个命名空间,在定义的时候,顺便引用了需要使用其他命名空间。我们注意到,按照 RequireJS 的术语,它把命名空间叫做“模块”。注意,在这里,RequireJS 定义的模块(命名空间)是匿名的,没有取名,这是和c#不同的地方。

但这个不要紧,因为其他 js 在用到你这个 js 的时候,一般是根据文件名称加载的,同时可以通过上面的 xx 这种方式,给模块(命名空间)自定义别名,所以,取不取名,还真不是关键。

我们新建另外一个 wojilu.test2.js 文件,来使用 wojilu.test1.js:

1 define( ['wojilu.test1'], function( t1 ) {

2     return {

3         NewTest : function() { t1.MyTest();}

4     };

5 });

同样,也是通过文件名(不需要后缀名),引入了 wojilu.test1 命名空间,并给它取了别名 t1,然后在代码中使用 t1.MyTest() 方法。

按照 RequireJS 的规范,所有的模块定义,都必须放在 return {} 对象中。也就是说,你的代码都要写在 return 返回的 {} 对象里面。这会不会导致代码臃肿难看?当然不会。你可以重构一下,比如这样做:

01 define( ['wojilu.test1'], function( t1 ) {

02  

03     function someFunc1() {

04         // 实际主要代码

05     }

06  

07     function someFunc2() {

08         // 实际主要代码

09     }

10     // 通过 return 方式,将需要公开的函数暴露出来,供其他 js 调用

11     return {

12         NewTest : function() { t1.MyTest();},

13         fun1 : someFunc1,

14         fun2 : someFunc2

15     };

16 });

当然,要使用 RequireJS 的这些功能,你必须在页面中引用 require.js 文件

1 <script src="require.js"></script>

二、其他用法

上面的用法是标准用法,但 RequireJS 在加载其他 “模块/命名空间/js文件” 的时候,内部是通过传统的 <script src="some.js"></script> 来实现的,所以,你也可以把 RequireJS 仅仅当做 js 加载器使用。比如这行代码:

1 <script src="some.js"></script>

可以写成:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评