requirejs和r.js的心得
requirejs的GitHub:requirejs
r.js的GitHub:r.js
grunt-contrib-requirejs的GitHub:grunt-contrib-requirejs
- requirejs的一个典型配置,main.js
require.config({
shim: {
'$': {
exports: 'Zepto' //zepto.js里面暴漏的全局变量
},
'_': {
exports: '_'
},
'B': {
deps: [
'_' //依赖关系
],
exports: 'Backbone'
}
},
paths: {
'$': 'zepto', //配置路径
'_': 'underscore',
'B': 'backbone'
}
});
requirejs(['$',''], function(b) {
debugger;
});关于config.shim.exports这里有很好的解释:shim.exports
- r.js的使用方法
node r.js -o baseUrl=src name=main out=dist/build.js optimize=none
这样用的话config.paths里面main.js里面的paths配置会无效,看这里的解释:
r.js optimizer does not load paths defined by a require.config
关于第2点写两遍paths是重复劳动,r.js里面有一个mainConfigFile参数,将命令行改成这样
node r.js -o name=main mainConfigFile=src/main.js out=dist/build.js optimize=none
为什么name和mainConfigFile都指向main呢,因为工程里配置文件和启动文件都是main.js,我们完全可以分开放,
src/config.js:
require.config({
shim: {
'$': {
exports: 'Zepto'
},
'_': {
exports: '_'
},
'B': {
deps: [
'_'
],
exports: 'Backbone'
}
},
paths: {
'$': 'zepto',
'_': 'underscore',
'B': 'backbone'
}
});src/main.js:
requirejs(['$',''], function(b) {
debugger;
});然后运行:
node r.js -o name=main mainConfigFile=src/config.js out=dist/build.js optimize=none
r.js的配置文件说明看这里
- requirejs里嵌套依赖的问题:
如果main.js不是这样依赖于1.js,而是像下面这样:requirejs(['$'], function(b) {
requirejs(['1'],function() {
});
});那么用r.js生成的文件里是不会包含1.js的内容的,这种情况下要加上参数findNestedDependencies
node r.js -o mainConfigFile=src/config.js name=main out=dist/build.js optimize=none findNestedDependencies=true
- 引用外部js的问题
require.config({
shim: {
'$': {
exports: 'Zepto'
},
'_': {
exports: '_'
},
'B': {
deps: [
'_'
],
exports: 'Backbone'
}
},
paths: {
'$': 'http://apps.bdimg.com/libs/zepto/1.1.4/zepto',
'_': 'underscore',
'B': 'backbone'
}
});zepto引用外部的js文件了,r.js无法访问
$ node r.js -o mainConfigFile=src/config.js name=main out=dist/build.js optimize=none findNestedDependencies=true Tracing dependencies for: main
Cannot optimize network URL, skipping: http://apps.bdimg.com/libs/zepto/1.1.4/zepto.js E:/chengzhichao/tmp/test_grunt/dist/build.js
----------------
E:/chengzhichao/tmp/test_grunt/src/.js
E:/chengzhichao/tmp/test_grunt/src/main.jsr.js只把main.js,1.js弄到了build.js里面,这种情况下应该怎么办呢?
a.忽略zepto.js的path
b.将config.js包含进生成的build.js里面node r.js -o mainConfigFile=src/config.js name=main out=dist/build.js optimize=none findNestedDependencies=true include=config.js paths.$=empty:
- grunt-requirejs配置基本照搬r.js的配置
requirejs和r.js的心得的更多相关文章
- requireJs和r.js压缩工具
上面release是执行命令 node r.js -o build.js 生成的,需要切换到目录require/tools下面,也就是 有r.js和build.js的目录,才能执行命令 代码目录如上: ...
- requirejs实验002. r.js合并文件. 初体验.
requirejs的官网上有介绍如何使用r.js合并,压缩文件的.http://requirejs.org/docs/optimization.html https://github.com/jrbu ...
- 转:requirejs打包压缩r.js使用示例
为了应对日益复杂,大规模的JavaScript开发.我们化整为零,化繁为简.将复杂的逻辑划分一个个小单元,各个击破.这时一个项目可能会有几十个甚至上百个JS文件,每个文件为一个模块单元.如果上线时都是 ...
- requirejs 使用实例r.js打包
在这里,请先看基础文章与相关技术文档: 安装: npm init npm install requirejs --save npm install jquery@1.11.1 --save 创建基本目 ...
- requirejs原理深究以及r.js和gulp的打包【转】
转自:http://blog.csdn.net/why_fly/article/details/75088378 requirejs原理 requirejs的用法和原理分析:https://githu ...
- requireJS中如何用r.js对js进行合并和压缩css文件
我运行的环境是windows+node.js,首先是用npm安装requirejs(全局安装,即使用 'npm install requirejs -g',这样方便在各个目录调用),接着就是下载r.j ...
- requireJS的优化工具 ---- r.js
requireJS是javascript的模块加载器,是基于AMD规范实现的. r.js是其提供的对模块进行打包和构建的一个工具 下载 r.js 创建r.js 的配置文件 build.js build ...
- requirejs的打包工具r.js
不建议用命令行,还是用配置文件比较方便--build.js. 我的build.js文件内容大概如下: ( { appDir : './', baseUrl : './scripts', dir : ' ...
- 转: requirejs压缩打包r.js使用示例 2 (~~很详细的教程)
这一篇来认识下打包工具的paths参数,在入门一中 就介绍了require.config方法的paths参数.用来配置jquery模块的文件名(jQuery作为AMD模块时id为“jquery”, 但 ...
随机推荐
- Java简介(2)-基本概念
1.抽象类:规定一个或多个抽象方法的类别本身必须定义为abstract,抽象类只是用来派生子类,而不能用它来创建对象 2.final类:又称“最终类”,它只能用来创建对象,而不能被继承,与抽象类刚好相 ...
- mysql主从复制 (超简单) 转载
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql 1.3.修改root的密码 ...
- 由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
无法访问请求的页面,因为该页的相关配置数据无效. 如下图: 解决方法, 到站点目录的属性,安全标签,添加用户(Everyone),并给修改权限:
- Python 可变对象和不可变对象
具体可以看这里:http://thomaschen2011.iteye.com/blog/1441254 不可变对象:int,string,float,tuple 可变对象 :list,dicti ...
- __file__ __name__ __doc__ argv详解
__file__:表示输出当前py文件的路径 __name__: 表示输出当前函数名称,是main()函数(入口函数),或者是其他函数 __doc__: 模块的对象,输出模块的版权信息,如:作者 ch ...
- 魅蓝3s adb interface 找不到驱动程序
完全照搬大神的步骤就ok啦,,自己记录下,方便以后查找 Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别 http://blog.csdn.net/z ...
- UOJ 52 元旦激光炮
http://uoj.ac/problem/52 题意:每次可以得到3个序列中 思路:每次分别取出三个序列的K/3长度的位置,取最小的那个,然后每次减掉它,总复杂度是Nlog3N #include & ...
- 【HDOJ】1547 Bubble Shooter
两次BFS,一次扫描关联点.一次扫描可能掉落的情况(即再次扫描所有非爆炸的联通点).余下未被扫描的点均爆炸. #include <cstdio> #include <cstring& ...
- POJ 1637 混合图欧拉回路
先来复习一下混合图欧拉回路:给定一张含有单向边和双向边的图,使得每一点的入度出度相同. 首先对于有向边来说,它能贡献的入度出度是确定的,我们不予考虑.对于无向图,它可以通过改变方向来改变两端点的出入度 ...
- (2015年郑州轻工业学院ACM校赛题) B迷宫
这是个简单的广搜题,注意下一下细节都能写出来, 大多数人都少考虑了一点,就是 假如 我的起始点就有一个机关, 并且不是 1 号机关, 这样的话是无结果的.不懂的可以测试一下代码下面的数据 #inclu ...