RequireJs学习笔记之Define a Module
简单的键值对定义
define({
color: "black",
size: "unisize"
});
如果一个模块没有任何依赖,又需要做用一个函数做一些事情,直接定义一个函数然后传给define()
//my/shirt.js 返回定义的模块是一个键值对
define(function () {
//Do setup work here
return {
color: "black",
size: "unisize"
}
});
使用需要依赖的函数来定义模块
如果一个模块有依赖,第一个参数应该是一组这个模块依赖的函数名 ,第二次参数就是你定义的函数,在依赖加载完,这个函数被定义成模块一次,函数应该返回一个对象,这个对象就是定义的模块,依赖将会作为参数传递给定义的函数,参数传递的顺序和数组里定义依赖的模块顺序一样
//my/shirt.js 依赖的模块是 a cart 和 inventory
define(["./cart", "./inventory"], function(cart, inventory) {
//返回了一个模块,这个模块是一个对象 名字是my/shirt或者叫shirt
return {
color: "blue",
size: "large",
addToCart: function() {
inventory.decrement(this);
cart.add(this);
}
}
}
);
上面例子 my/shirt模块被创建,依赖my/cart和myinventory模块 ,硬盘上的目录结构
my/cart.js
my/inventory.js
my/shirt.js
上面的函数定义了两个参数叫 "cart" and "inventory". 两个参数代表 my/cart和my/inventory模块,当my/cart和my/inventory模块加载完,my/shirt模块才被创建,这个函数收到"cart" and "inventory"作为参数传进来
不建议定义全局模块,一个模块可能在一个页面一个时间点里存在多个版本所以函数参数顺序应该匹配模块依赖顺序
返回一个函数作为模块
定义一个模块 foo/title.js 依赖于my/cart and my/inventory
define(["my/cart", "my/inventory"],
function(cart, inventory) {
//return a function to define "foo/title".
//It gets or sets the window title.
return function(title) {
return title ? (window.title = title) :
inventory.storeName + ' ' + cart.name;
}
}
);
给定义模块取一个名字,"foo/title"就是名字,但最好有引擎自己做。不要自己取
//Explicitly defines the "foo/title" module:
define("foo/title",
["my/cart", "my/inventory"],
function(cart, inventory) {
//Define foo/title object in here.
}
);
jsnop
require(["http://example.com/api/data.json?callback=define"],
function (data) {
//The data object will be the API response for the
//JSONP data call.
console.log(data);
}
);
RequireJs学习笔记之Define a Module的更多相关文章
- RequireJS学习笔记
前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...
- 【原】requirejs学习笔记
随着JS越来越庞大,已经不仅仅是以前复制粘贴做特效的时代了,JS越来越偏向于业务逻辑与应用.JS在web开发中占有越来越重要的地位. 由于JS代码庞大,文件数目多,传统的使用<script sr ...
- RequireJS学习笔记(转)
前言 进入移动前端是很不错的选择,这块也是我希望的道路,但是不熟悉啊... 现在项目用的是require+backbone,整个框架被封装了一次,今天看了代码搞不清楚,觉得应该先从源头抓起,所以再看看 ...
- RequireJs学习笔记之data-main Entry Point
You will typically use a data-main script to set configuration options and then load the first appli ...
- Requirejs学习笔记(一)
中文api 和 英文api网上都有的我就不翻译了,我的学习方法是先看英文api,然后看不懂的就比对中文api看一遍. requirejs可以帮助js代码模块化开发,模块化意味了解决了代码凌乱的问题,方 ...
- Effective C++学习笔记之#define
前言 条款02:尽量以const.enum.inline替换#define:尽可能用编译器代替不必要的预处理器. 内容 一.对于单纯常量 1.const 有两种特殊的const,常量指针和class专 ...
- [深度学习] pytorch学习笔记(4)(Module类、实现Flatten类、Module类作用、数据增强)
一.继承nn.Module类并自定义层 我们要利用pytorch提供的很多便利的方法,则需要将很多自定义操作封装成nn.Module类. 首先,简单实现一个Mylinear类: from torch ...
- NodeJS学习笔记 (23)模块机制-module
https://github.com/chyingp/nodejs-learning-guide
- 吴裕雄--天生自然 python开发学习笔记:解决No module named 'mpl_toolkits.basemap'问题
. 下载: basemap-1.1.0-cp36-cp36m-win_amd64.whl和pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl这两个文件 先运行: 再运行:
随机推荐
- IOS 6 自动布局 入门
http://blog.csdn.net/itianyi/article/details/8535392
- C#高级特性:动态绑定
C#高级特性:动态绑定 动态绑定 动态绑定将类型绑定(类型解析.成员和操作过程)从编译时推迟到了运行时.在编译时,如果程序员知道某个特定函数.成员的存在而编译器不知道,那么这种操作是非常有用的,这种情 ...
- 虚拟化 - VirtualBox
安装 win10上如果要使用VirtualBox安装64位系统(如Ubuntu),那么就要: CPU.主板支持虚拟化技术 打开主板BIOS上的虚拟化开关(前提是前面说的CPU.主板支持虚拟化技术) 不 ...
- 【QTP专题】02_时间同步点问题
一.什么是同步点 同步点是指在一个测试过程中,指示QuickTest等待应用程序中某个特定过程运行完成以后再运行下一步操作.Waits until the specified object prope ...
- ie7 a标签强制不换行兼容问题
a内容错乱如图所示: 解决方法:加个样式就行white-space:nowrap; 最终效果图: 添加了white-space:nowrap 之后, 这样就强制一段文字不会自动换行了.
- CF223C【Partial Sums】(组合数学+乱搞)
题面 传送门 题解 orz zzk 考虑这东西的组合意义 (图片来自zzk) \(a_i\)这个元素对\(k\)阶前缀和的第\(j\)个元素\(s_{k,j}\)的贡献就等于从\((0,i)\)走到\ ...
- iOS学习笔记(1)--认识Xcode6.1的Interface Builder和常用快捷键
Interface Builder基本界面 红色区域为工具栏(Tool Bar) 蓝色区域为导航区(Navigator Area) 绿色区域为编辑区(Editor Area) 黑色区域是调试区(Deb ...
- windows 安装python问题总结
一.安装支持包 很多二进制包 NumPy-1.9+MKL 以及 Microsoft Visual C++ 2008 (x64, x86, and SP1 for CPython 2.6 and 2.7 ...
- TX2之多线程读取视频及深度学习推理
背景 一般在TX2上部署深度学习模型时,都是读取摄像头视频或传入视频文件进行推理,从视频中抽取帧进行目标检测等任务.对于大点的模型,推理的速度是赶不上摄像头或视频的帧率的,如果我们使用单线程进行处理, ...
- django中多个app放入同一文件apps
新建一个apps文件夹 需要整理的app文件夹拖到同一个文件夹中,即apps.(弹出对话框,取消勾选Search for references) 在pycharm中,右键apps文件夹--选择mark ...