requireJS2
requireJS的初步掌握(二)
前面我们讲述了requireJS的一些认知和优点,==》http://www.cnblogs.com/wymbk/p/6366113.html
这章我们主要描述的是requireJS的一些常用的API:
一.HTML页下
1.data-main属性
首先我们知道requireJS可以有效的解决JS阻塞浏览器渲染这个问题,
那么它实现的方式是什么样子的呢?
<script src="js/require.js" data-main="js/main"></script>
通过data-main加载的js是异步加载的,此时如果页面中再次加载其他的JS如果依赖通过requireJS加载的文件的话容易出错(因为引入顺序无法保证)
通过data-main加载的文件会被requireJS系统默认为主模块。
二.JS配置下
在主模板页面通过require.config对整体页面进行配置

require.config({
baseUrl: 'js/',
paths: {
"backbone": "backbone",
"underscore": "underscore"
},
shim: {
"backbone": {
deps: [ "underscore" ],
exports: "Backbone"
},
"underscore": {
exports: "_"
}
}
});

其中主要的api有
1.baseUrl
文件的相对根目录一般都是以HTML文件为基准,但是requireJS在通过data-main异步加载后根目录就会变以data-main加载的文件
为基准,而baseUrl就是以data-main为基准去更改
baseUrl:'./js',//路径更改
2.paths
指定模块的加载路径,在我的理解,这个api的用处就是简写路径
例如:

paths:{
'jquery':'../../js/jquery-3.1.1.min',
'jqueryUI':'../../js/jquery-ui',
'require':'../../js/require',
'underscore':'./underscore-min',
'backbone':'./backbone-min',
'Wdate':'../My97DatePicker/WdatePicker',
'autocomplete':'../autocomplete/autocomplete'
},

3.shim
上节讲过,requireJS加载是遵循AMD模范的,当我们加载现有的非AMD的文件或插件的时候就不太好是,
所以就有了这个api。
下面有三个参数:
1>exports:调用第三方非AMD插件的时候暴露所需的接口
2>deps:调用第三方非AMD插件的时候帮助该插件去依赖其他的插件,例如JQ的一大堆的插件库
3>init:类似于exports,但是exports是指定暴漏一个接口的时候使用,init是暴漏多个的时候使用

//b.js
var shirt = {}
shirt.haha = function(a){
alert(a);
}
shirt.heihei = function(a){
alert(a)
}


//a.js
function haha(a){
alert(a);
}
function heihei(a){
alert(a);
}


//main.js data-main加载文件
require.config({
paths:{
'a':'./my/a',
'b':'./my/b'
},
shim:{
'a':{
init:function(){
return {
ha:haha,
he:heihei
}
}
},
b:{
exports:'shirt'
}
}
})
require(['a','b'],function(a,shirt){
alert(a.ha(1));
shirt.haha('2');
})

三.JS除配置文件下
1.define()
定义一个模块,此模块可供其他模块使用,define()里面有两个参数第一个是依赖的名称数组,主要是标识所依赖的模块
第二个参数是回调函数,参数是依赖模块的标识,在依赖文件加载完毕后执行
defien(['jquery'],function($){
//... 内容
})
2.require()
加载和使用模块的,一般用在主模块下。
requrie(['a','b'],function(){
//..内容
})
这就是requireJS常用的API,希望大家多多练习,共同进步。
requireJS2的更多相关文章
- 转:requirejs2.0新特性介绍
就在前天晚上RequireJS发布了一个大版本,直接从version1.0.8升级到了2.0.随后的几小时James Burke又迅速的将版本调整为2.0.1,当然其配套的打包压缩工具r.js也同时升 ...
- Requirejs2.0笔记
API http://requirejs.org/ RequireJS 插件 http://requirejs.org/docs/api.html#plugins ①require.js脚本的异步加载 ...
- requirejs2读书笔记
If you want to do require() calls in the HTML page, then it is best to not use data-main. data-main ...
- js模块化历程
这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...
- JavaScript 的面向对象
一.JS 模块包装格式都用过哪些,CommonJS.AMD.CMD.定义一个JS 模块代码,最精简的格式是怎样. js模块化开发的起源. CommonJs原来是叫ServerJs,从名字可以看出是专攻 ...
- 探索javascript----浅析js模块化
引言: 鸭子类型: 面向对象的编程思想里,有一个有趣的概念,叫鸭子类型:“一只鸟走起来像鸭子.游起泳来像鸭子.叫起来也像鸭子,那它就可以被当做鸭子.也就是说,它不关注对象的类型,而是关注对象具有的行为 ...
- js 模块化历程
作者:吕大豹 网址:http://www.cnblogs.com/lvdabao/p/js-modules-develop.html 这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生 ...
- 【整理】 JavaScript模块化规范AMD 和 CMD 的区别有哪些?
根据玉伯等人在知乎上的回答整理.整理中... AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD 规范在这里:https://githu ...
- javascript模块化应用
这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...
随机推荐
- [COGS 2551] 新型武器
图片加载可能有点慢,请跳过题面先看题解,谢谢 这个题好多解法啊... 可以主席树,可以按深度将操作排序离线做 我这里是动态开点线段树,对每一个深度种一棵线段树,下标是节点的\(dfs\)序 然后这个做 ...
- 【洛谷P1119】灾后重建
题目大意:给定一个 N 个顶点,M 条边的无向图,每个顶点有一个时间戳,且时间戳大小按照顶点下标大小依次递增,在给定时间 t 时,时间戳严格大于 t 的顶点不能被访问,现在有 Q 次询问,每次询问在给 ...
- webpack:代码分割与按需加载
代码分割就是我们根据实际业务需求将代码进行分割,然后在合适的时候在将其加载进入文档中. 代码中总有些东西我们希望拆分开来,比如: 使用概率较低的模块,希望后期使用的时候异步加载 框架代码,希望能利用浏 ...
- Jsp使用遍历List集合
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- java取得当前日期增加一天或多天
代码如下: SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getI ...
- scala 基础知识总结
在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...
- linq.js - LINQ for JavaScript
var jsonArray = [ { "user": { "id": 100, "screen_name": "d_linq&q ...
- 《高性能MySQL》——第一章MySQL的架构与历史
1.可以使用SHOW TABLE STATUS查询表的相关信息. 2.默认存储引擎是InnoDB,如果没有什么很特殊的要求,InnoDB引擎是我们最好的选择. 3.mysql的infobright引擎 ...
- Unable to Distribute in Xcode5?
Blog Unable to Distribute in Xcode5? I have the question, if this screenshot is what you getting. ( ...
- CTSC/APIO2018滚粗记
CTSC/APIO2018滚粗记 前言 从\(5.5\)晚上的火车到\(5.14\)早上的高铁 \(10\)天的时间真的过去的很快. 眨眼间,就到了今天晚上的颁奖. 至于结果如何,反而并不是那么重要了 ...