使用rakepipeline构建ember.js程序

ref:
项目地址:
 
构建web app的时候,将不同的功能分模块,并在物理上分开写在各自的文件里,有利于理解。而web app有一个原则,就是减少HTTP请求,需要将分散的文件合并为一个文件(同时也是解决依赖问题,不用在html文件中引入所有的js文件),但是这又给调试带来不便。这两个互为矛盾的观点,可以使用build tool来同时实现。
本文介绍的是ember.js官方使用的基于Ruby的rake-pipeline工具。
 
//@ sourceURL的调试器标记
 
首先介绍一种可以被Webkit调试器或者Firebug识别的标记技术:
 
 var globalEval = function(data) {
     if ( data ) {
          window[ "eval" ].call( window, data );
     }
 };
 globalEval("window.alert('hello');\nwindow.alert('world');\n//@ sourceURL=hello.js");
 
eval执行的时候,通过@ sourceURL标记,会在调试器的source里看到一个hello.js,内容如下:
 
window.alert('hello');
window.alert('world');
//@ sourceURL=hello.js
 
注意,这个文件是调试器生成的,本地不需要有一个hello.js对应。你可以在这里设置断点来调试。
 
安装Ruby相关工具
安装Ruby(现在我用的是1.9.3)
安装Ruby Development Kit,用于生产Ruby的navtive模块 https://github.com/oneclick/rubyinstaller/wiki/Development-Kit
 
构建Demo工程
checkout这个工程:https://github.com/emberjs/todos.git
然后按照README.md的说明一步步操作即可。这会帮助你构建rake-pipeline的依赖。
bundle机制是Ruby工程的一个包管理工具,具体的不清楚。在执行bundle install后会生成Gemfile.lock的文件,记录当前的依赖的满足条件。(在版本管理系统中应该包含这个文件,这样在下次build的时候,就不会提示你要执行bundle install,而且每次修改Gemfile后都要重新执行bundle install)
 
一些hack
     这段代码用于使用路由注入的方式定义App的路由:        
     路由的名字需要符合以下规则:$.*$
原文地址:https://www.cnblogs.com/zhengwenwei/p/2817740.html