例子1
先是HTML页面
|         <linkrel="stylesheet"type="text/css"href="css/main.css"> | 
 
|         <scriptdata-main="scripts/main-built"src="scripts/require.js"></script> | 
 
 
 
js都放在scripts目录下,换言之 html与scripts是平级。此目录下有r.js, require.js, one.js, two.js, three.js, main.js
上面HTML提到的main-built.js是一会儿动态生成的。
r.js 可以在这里找到https://github.com/jrburke/r.js/blob/master/dist/r.js,总共7MB,非常疯狂!听说把各种情况都hold住了, 比spm强大多了!
接着是几个JS的内容:
one.js
two.js
three.js
main.js
| require(["one", "two", "three"], function(one, two, three) { | 
 
 
 
好了,我们再看一下build.js如何写
定位到此目的,执行node r.js -o build.js
最后生成main-built.js文件,我格式化它一下,里面内容如下:
| define("one",[],function(){return1}), | 
 
| define("two",[],function(){return2}), | 
 
| define("three",[],function(){return3}), | 
 
| require(["one","two","three"],function(e,t,n){alert(e+t+n)}),define("main",function(){}); | 
 
 
 
最后运行服务器,发现真的能alert出6!
可以点击这里看看
例子2
就是在上面的例子里面改一下
其他变化如下:
three.js放到sub目录下,内容改成:
| define(["./two"], function(a){ | 
 
 
 
one.js
| define(["./two"], function(a){ | 
 
 
 
main.js改成
| require(["one","sub/three"], function(one,  three) { | 
 
 
 
执行r.js,生成main-built.js为:
| define("two", [], function() { | 
 
| }), define("one", ["./two"], function(e) { | 
 
| }), define("sub/three", [], function() { | 
 
| }), require(["one", "sub/three"], function(e, t) { | 
 
| }), define("main", function() { | 
 
 
 
下面合并前后的请求数比较
例子3, paths配置项的使用
目录结构改成这样,jquery自行到官网下载
main.js改成这样
|         jquery: "jquery/jquery-1.11.2" | 
 
| require(["one", "sub/three","jquery"], function(one, three, $) { | 
 
 
 
main.js改成这样
|         jquery: "jquery/jquery-1.11.2" | 
 
 
 
然后执行node r.js -o build.js打包命令,生成的文件就可以用了。并且发现r.js有个非常智能的地方,如果把main.js中的require语句的依赖项中的jquery去掉,再执行打包,它会将jquery源码从main-built.js中去掉。
可以点击这里看看
例子4, 让生产环境用的脚本放在另一个文件中
我们通常把我们自己工作的环境叫做发展环境, 上线的环境叫生产坏境,将它们分开是非常有好处的。我们把上面的目录复制一下,改一名字:
相对而言, 页面也改一下
|         <linkrel="stylesheet"type="text/css"href="css/main.css"> | 
 
|         <scriptdata-main="develop/main-built"src="develop/avalon.js"></script> | 
 
|         <!--    <script data-main="develop/main" src="develop/avalon.js"></script>--> | 
 
|         <!--    <script data-main="develop/main-built" src="develop/require.js"></script>--> | 
 
 
 
打包的脚本build.js变成这样,
|         jquery: "jquery/jquery-1.11.2" | 
 
 
 
对比一下,有了dir,就不能使用out配置项了,你在编译时它有非常明确的提示。执行node r.js -o build.js打包命令,你的项目变成这样了
既然目录变了,我们有两个办法,1自己修改或通过脚本修改index.html引用脚本的路径,2后端配置一下,对请求进行重定向,我们通常是使用后面一种。
可以点击这里看看
例子5, shim配置项的使用
在例子4里面jquery目录添加一个jquery.aaa.js,内容如下:
| jQuery.fn.aaa = function(){ | 
 
 
 
main.js改成
|         jquery: "jquery/jquery-1.11.2", | 
 
| require(["one", "sub/three", "aaa"], function(one, three, $) { | 
 
 
 
build.js也跟着改成
|         jquery: "jquery/jquery-1.11.2", | 
 
| require(["one", "sub/three", "aaa"], function(one, three, $) { | 
 
 
 
然后执行node r.js -o build.js打包命令,生成的文件就可以用了。
可以点击这里看看
如果大家还有更好的打包方式, 可以https://github.com/avalonjs/avalonjs.github.io/tree/master/zh/engineering,添加到这里,pull request给我
转载来源:http://www.cnblogs.com/rubylouvre/p/4262569.html
												
												
								- requirejs 使用实例r.js打包
		在这里,请先看基础文章与相关技术文档: 安装: npm init npm install requirejs --save npm install jquery@1.11.1 --save 创建基本目 ... 
- r.js打包注意事项 r.js打包  这个是配合require.js打包的
		这个./代表的是当前文件的父目录....打包的资源一定要在这个父目录中下面才行,,,,一定一定,要放在这个目录一下才能被正确找到. 不然只是copy了一份一模一样的文件夹和文件过去,并不会处理压缩啥的 ... 
- r.js打包
		久闻r.js的大名,但实际没有用它做过任何东西.今天用它时,发现网上许多教程都不对.研究一下,把我的实际经验分享给大家. 例子1 先是HTML页面 <!DOCTYPE html> < ... 
- requirejs r.js 打包报错paths fallback not supported in optimizer please provide a build config path override for jquery
		错误原因: 改为: 
- requirejs原理深究以及r.js和gulp的打包【转】
		转自:http://blog.csdn.net/why_fly/article/details/75088378 requirejs原理 requirejs的用法和原理分析:https://githu ... 
- requirejs 多页面,多js 打包代码,requirejs多对多打包【收藏】
		这段代码来自 http://stackoverflow.com/questions/20583812/grunt-requirejs-optimizer-for-a-multi-app-project ... 
- requirejs 多页面,多js 打包代码,requirejs多对多打包
		这段代码来自 http://stackoverflow.com/questions/20583812/grunt-requirejs-optimizer-for-a-multi-app-project ... 
- requireJS的优化工具 ---- r.js
		requireJS是javascript的模块加载器,是基于AMD规范实现的. r.js是其提供的对模块进行打包和构建的一个工具 下载 r.js 创建r.js 的配置文件 build.js build ... 
- JavaScript模块化-require.js,r.js和打包发布
		在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章中,提到了模块化的基本思想,但是在实际项目中模块化和项目人员的分工,组建化开发,打包发 ... 
随机推荐
	
									- C#dynamic关键字(1)
			一.object,var,dynamic的区别 static void Main() { //var是C# 3中引入的,其实它仅仅只是一个语法糖. var本身并不是一种类型, 其它两者object和d ... 
- DedeCMS Error: (PHP 5.3 and above) Please set request_order
			部分使用PHP 5.3的主机可能会有下面的提示: (PHP 5.3 and above) Please set 'request_order' ini value to include C,G and ... 
- Android中Thread和Service的区别zz
			1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当 ... 
- sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)
			Boring Counting Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述     In this problem you a ... 
- 攻城狮在路上(叁)Linux(十六)--- 命令与文件的查找
			一.脚本文件的查询: 1.命令格式:which [-a] command; <==通过PATH来查找. -a:列出所有的,而不是仅列出第一个. 示例: which ifconfig; 注意:由于 ... 
- 6-01T-SQL中的运算符
			算术运算符:+.-.*./.%. 赋值运算符:= 逻辑运算符:AND.OR.NOT. 比较运算符:>,<,<=,>=,<>.=,!=. 连接运算符:"+& ... 
- 使用PHP获取时间今天 明天 昨天 时间戳的详解
			使用php获取时间今天明天昨天时间戳 2013-06-20 11:12 <?php echo "今天:".date("Y-m-d")."< ... 
- JavaScript获取当前根目录
			JavaScript获取当前根目录 主要用到Location 对象,包含有关当前 URL 的信息,是 Window 对象的一个部分,可通过 window.location 属性来访问. 方法一 (wi ... 
- phpcms v9最常用的22个调用代码
			新源网络工作室友情总结phpcms v9最常用的22个调用代码: 调用最新文章,带所在版块{pc:get sql="SELECT a.title, a.catid, b.catid, b.c ... 
- c语言运算符号的优先级
			c语言运算符号的优先级 本文来自百度搜索只为查看方便 优先级等级口诀: 圆方括号.箭头一句号, 自增自减非反负.针强地址长度, 乘除,加减,再移位, 小等大等.等等不等, 八位与,七位异,六位或,五与 ...