require的基本操作
为什么要用到require?首先,当js文件 都引入的同一个文件下时,会导致命名冲动。其次,js文件之间存在依赖关系,因此必须严格保证加载顺序,依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。所以require很好的解决了这个问题
require.js的教程推荐 推荐阮一峰老师的日志,这样附上链接 request.js教程
我简单的和大家分享一下学习的过程,
require的基本使用
这里的js1,js2,main,require,html文件都是自己创建的
html界面
<script src="require.js" data-main="main" type="text/javascript" charset="utf-8"></script>
这里的src导入的是require.js——这里的main为主文件的路径,可以不加.js
js页面
简单的创建几个变量作为测试。比如var a = 5;var b = 10;
这里的js页面不用独立作用域,不需要return
main页面
1 | require(['js1','js2'],function(){ |
当js1和js2没有独立的时候,main可以使用js1 和 js2 文件中的任意变量,
require.js 默认会把入口js文件所在的路径,作为基本路径,加载其他文件中的js时,需要改变路径
参数一:是一个数组,数组中规定了需要导入的js文件的文件路径,可以同时加载多个js文件
参数二:是一个回调函数,等一个参数中的所有js文件全部被加载完成后,才会进行回调参数二中指定的回调函数
require的模块化(AMD)
全称是Asynchronous Module Definition,即异步模块加载机制
requireJs优点:
- 说明不同js文件之间的依赖
- 可以按需求,并行,延时去加载js库
- 可以让我们的代码已模块的方式使用
我将主要代码贴出
html页面
这个页面和之前的一样
js页面
需要define(),有三个参数:
- 模块的名称 ——–可省略
- 需要依赖的js ——–可省略
- 回调函数
1 | define(function(){ |
main页面
1 | require(['js1','js2'],function(js1,js2){ |
require导出模块的四种方式
第一种
定义模块:define
导出模块中的功能:return
1 | define(function(){ |
第二种
定义模块:define
导出模块中的功能 exports
注意点:
- 需要导入exports作为依赖项
- 需要有参数
- 导出时一个一个导出
1 | define(['exports'],function(exports){ |
第三种
定义模块:define
导出模块中的功能 module.exports
注意点:
- 这里需要导入module作为依赖项
- 需要有参数
- 导出时以对象的形式导出
1 | define(['module'],function(module){ |
第四种
注意点:
- 这里需要导入require作为依赖项
- 需要有参数
- 其他与第三种方法差不多
1 | define(['require'],function(require){ |
之后在main文件中
1 | require(['m1','m2','m3','m4'],function(m1,m2,m3,m4){ |
require的配置及define时定义名字怎么使用
假设我们要使用一个jq全屏插件,怎么使用require进行配置依赖项
这是需要用到的js文件: jquery.fullscreen.js
最终实现这样的效果: $(document).fullScreen(true)
变量名是随便起的,主要是介绍一下主要的知识点是什么意思
define()使用名字:
1 | define('moduleA1',function(){ |
一个js文件中可以定义多个模块,一个文件中定义多个模块的话,尽量去使用模块名称进行区分
1 | define('moduleA2',function(){ |
在主界面main中配置require
1 | require.config({ |
配置完之后,就可以使用模块的名字了,要记得写参数
1 | require(['jqueryFullscreen','moduleA1','moduleA2'],function(a0,a1,a2){ |
require的知识还有许多,这里只是一些入门,如果有错,希望大牛们指点一下,感激不尽