Require.js规范

Requirejs是第一个模块化开发框架,提出了Module transports (模块传送)规范,基于前端模型的一个规范(加载时候都是异步的),又借鉴Nodejs,也支持commonjs规范,requirejs推荐使用commonjs规范,Requirejs是基于AMD规范

Require.js使用

想要使用requirejs与seajs是一样的要在页面中引入文件

两种引入方式

根目录:

如果有data-main属性,此时是以data-main的属性值为根目录

如果没有data-main属性,则是以html文件所在的目录为根目录

Require.js定义模块

requirejs中也提供了一个define方法,用来定义模块:

可以传递一个参数

如果是字符串,这种方式不支持

对象也是支持的,但是不支持数组

当传递一个函数的时候,此时函数遵循的是commonjs规范,requirejs提供了参数注入的技术,如果想要使用哪个模块,就必须注入哪个模块

dom.js文件中

当没有注入exports和module的时候

作用域是全局作用域

当注入了exports和module的时候

作用域是向外暴露功能的对象

传递参数

//传递参数
define("dom", function(require, exports, module) {console.log(this, arguments);
})

可以传递两个参数:

第一个参数是一个字符串,表示模块的id

第一个参数还可以是数组,表示模块的依赖集合

第二个参数回调函数

如果第一个参数是字符串,此时函数遵循的是commonjs规范(同上面传递一个函数中的表现形式一致)
如果第一个参数是数组,此时函数遵循的是module transports规范,想要使用哪个模块,就必须在依赖集合中去注入,包括内置模块(require,exports, module)

如果没有注入exports和module

作用域是全局作用域

如果注入了exports和module

作用域是向外暴露功能的对象

// 传递两个参数 第一个参数是字符串
define("dom", function(require, exports, module) {console.log(this, arguments);
})// 传递两个参数 第一个参数是一个数组
define(["color", "require", "exports", "module"], function(color, require, exports, module) {// console.log(this, arguments);console.log(color);console.log(require);console.log(exports);console.log(module);
})

传递三个参数

第一个参数字符串,表示模块的id

第二个参数是数组,表示模块的依赖集合

第三个参数回调函数,此时函数遵循module transports规范(同上面的函数表现形式一致)

在module transports规范中定义的模块文件名称不要与内置模块(require, exports, module)是相同的

// 传递三个参数
// define("abc", ["color"], function() {
define("dom", ["color", "require", "exports", "module"], function(color, require, exports, module) {console.log(this, arguments);
})

加载具有id的模块

模块的覆盖关系

如果一个模块文件中存在两个没有id的模块, 上面的模块覆盖下面的模块

如果一个模块文件中存在两个具有id的模块, 上面的模块覆盖下面的模块

如果一个模块文件中存在两个不同id的模块,可以是同时存在的,以require指定的id为准

接口定义

exports.接口

module.exports.接口

module.exports = 值类型

module.exports = 对象

module.exports = 函数

以上几种方式是基于commonjs规范的,在requirejs中同样适用

return 值类型

return 对象

return 函数

这几种方式是module transports规范, 因此它们不依赖于require, exports,module 开发更灵活

define(值类型) 字符串是不支持的

define(对象) 这种方式也支持

除了以上几种方式之外,当注入exports和module的时候,作用域是向外暴露功能的对象

diomjs中写入的方法  mainjs入口  html获取mainjs

// 定义模块
// commonjs规范
define(function(require, exports, module) {第一种定义接口的方式exports.title = "nihao";以下方式是绝对不允许使用exports = {}第二种定义接口的方式module.exports.title = "nihao";3module.exports = 123;4module.exports = {num: 100}5这种方式向外暴露的内容,外部要作为方法使用module.exports = function() {console.log("success");}
})// module transports规范
define([], function() {6return 123;7return {a: 1,b: 2}8return function() {console.log("success");}
})// 9
define(123);// define("abc"); // 这种方式不允许define(true);// 10
define({a: 1,b: 2
})// 当注入exports和module的时候作用域是向外暴露功能的对象
define(function(require, exports, module) {// console.log(this, arguments);this.color = "red";
})

模块信息对象

id: 模块的id,默认与uri不一致

uri: 表示模块的文件路径,相对于html文件的

如果没有data-main属性,会在路径的前面多个./

config:用于定义配置信息

exports: 向外暴露功能的对象

配置

requirejs提供了config方法进行配置信息

paths

作用:简化文件的路径

值是一个对象

key: 新的文件名称

value:原始文件名

shim

用于将文件转为模块的

key: 模块的文件路径

vlaue是一个对象

exports: 配置向外暴露的对象

deps: 配置依赖集合

map

作用:配置模块文件的

key: 模块的文件路径

value是一个对象

key: 引用的模块文件

value: 匹配的模块文件

baseUrl

改变根目录 权重

baseUrl > data-main > require

根据html根目录

加载css插件

在requirejs中不能直接引入css文件

要做为模块来引入,所以要进行配置

require.config({

map: {

“*”: {

“css”: 文件目录

}

}

})

在引入css文件的模块中要加上css!前缀

Require.js总结相关推荐

  1. Javascript模块化编程(三):require.js的用法

    这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的 ...

  2. Require.js

    前言 前段时间粗略的扫过一次require.js,当时没怎么在意,结果昨天看到index里面的代码就傻了,完全不知道从哪开始看啦,所以require与backbone的学习还要加紧才行. 由于前端所占 ...

  3. php引入路径配置,require.js的路径配置和css的引入方法详解

    这篇文章主要介绍了详解require.js配置路径的用法和css的引入,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前端开发在近一两年发展的非常快,JavaScript作为主流的开发语言得到了前 ...

  4. require.js基本认识

    基本API require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短 define 从名字就可以看出 ...

  5. require.js基本用法

    1.require.js的加载 使用require.js的第一步,是先去官方网站下载最新版本. 下载后,假定把它放在js子目录下面,就可以加载了. 1 <script src="js/ ...

  6. require.js的用法

    一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...

  7. JavaScript模块化-require.js

    http://www.cnblogs.com/duanhuajian/archive/2013/01/04/2844151.html 原文:http://www.ruanyifeng.com/blog ...

  8. Javascript模块化编程require.js的用法

    JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ...

  9. jQuery 对AMD的支持(Require.js中如何使用jQuery)

    AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一个可用的模块化 JavaScript 的解决方案. AMD 模块格 ...

  10. require.js学习记录

    1.简介 官方对requirejs的描述: RequireJS is a JavaScript file and module loader. It is optimized for in-brows ...

最新文章

  1. iOS 后台下载及管理库
  2. mysql元数据死锁日志_这个未修复的MySQL 5.7死锁Bug,你知道么?
  3. markdown测试
  4. 求排序一堆整数,数据都是有限范围的和有限个数的,对他们进行排序,要求O(n)的时间复杂度....
  5. GitHub上个最有意思的项目合集(技术清单系列)
  6. Visitor(访问者)模式在SAP CDS view测试框架中的灵活运用
  7. 《MySQL 8.0.22执行器源码分析(3.2)关于HashJoinIterator》
  8. 汇编语言笔记(三): 标志寄存器
  9. 这5个有趣的Python库带你花式编码!
  10. 纸板怎么切割光滑_现有的切割机如何选择呢?进来看看就清楚了
  11. 计算机二级office高级应用教程,2015计算机二级Office高级应用上机试题及答案
  12. CentOS 7 最小化安装后的注意事项(一)
  13. Extjs视频教程_Extjs5.0从入门到实战开发信息管理系统
  14. python编程手机_手机最强Python编程神器,在手机上运行Python
  15. web前端、个人简历模板、个人简历_优秀个人简历模板
  16. 面对危机,中国也不应修修补补
  17. python小游戏之超级玛丽进阶版(1~4关)。好玩到爆炸~【内附github源码,及其详细备注】
  18. 不仅国产手机被撕下遮羞布,其实苹果和三星也已没了遮羞布
  19. 数据处理笔记6:缺失值填充
  20. 8888帅气图片网络红人打造第一期

热门文章

  1. java编程思想第四版答案
  2. 修改浏览器显示的语言
  3. webservice之实现天气预报
  4. 小林秋招大数据面试题汇总(下)
  5. 【MQTT基础篇(十)】QoS 服务质量等级
  6. 如何使用腾讯云轻量应用服务器以及WordPress搭建个人博客(详细图文教程)
  7. AWS的CloudFormation和Elastic Beanstalk的简单测试
  8. unix系统之进程间通信
  9. C# - partial 关键字
  10. 2011管理类联考,拔尖和冒尖,ChatGPT的回答