
Tangram 能做什么熟悉我的人都知道我从来不讨论哪个工具更好的我只讨论在特定的情况下哪个工具更适用。因此我们来看一下什么情况下 Tangram 是适用的。Tangram 的总体设计很大程度上是参考了 Mootools 的做法就是将框架拆散到函数的级别你可以引用单个函数而不一定要加载整个库。这样做的好处是节省带宽流量尤其适用于那些流量很大但 AJAX 功能不多的网站。百度的很多服务流量都不小而且常用页面上需要的 AJAX 功能也不多因此 Tangram 成为了一个很好的解决方案。那么什么情况下 Tangram 不适用呢如果你要写一个 AJAX Web App Tangram 就没有什么特别的优势了除非你尤其熟练使用 Tangram 。一个 AJAX Web App 本身就依赖于库中大量分散的功能把一个库拆分到函数级别并没有什么意义。当然在 AJAX Web App 中 Tangram 也没有什么明显的劣势跟 jQuery 、 Prototype 都差不多这时候就由团队成员对不同库的使用熟练程度来决定选用哪个库了。现在 Tangram 的最大弱势在于它缺乏一种机制让你对页面逻辑的描述变得流畅 fluent 而这正是我们使用 DSL 时所追求的。过去我也说过 jQuery 是一种 DSL 它允许你用一种很流畅的语言来描述页面的交互行为这使得页面交互行为变得很容易管理──读懂别人写的 jQuery 页面并不难在上面做调整也很简单。这是 Tangram 为了减少下载体积做作出的牺牲不过我希望它将来可以通过编译工具等方法来弥补这个缺陷──例如说我还是用某一种 DSL 来描述页面交互然后这种 DSL 能够被编译为 Tangram 代码。Git 有什么好为什么选择开源到 Github Git 到底有什么好处我觉得一个简单的例子就能很好地说明问题。例如说你想看看 Tangram 的源代码那么你可以直接打开 Tangram Github 的首页然后以只读的方式把代码都复制到本地。git clone https://github.com/BaiduFE/Tangram-base.git读着读着你觉得 Tangram 写得也不是那么好想改改看。于是你回到刚才那个页面上点 Fork 按钮然后就相当于把 BaiduFE 下面的 Tangram 项目整个复制到你个人帐号下了。你当然拥有你个人帐号下 Tangram 项目的完全读写权限啦这时候你就可以把它复制到本地了。git clone gitgithub.com:CatChen/Tangram-base.git可以看到这是我的帐号 CatChen 下的 Tangram 不再是 BaiduFE 下面的。这时候你就可以随意改动啦改动完提交就是了。git commit -a -m Tangram improvement如果你习惯使用 SVN 或者 CVS 那么你需要注意啦 Git 的提交都是本地的不会提交到服务器上去。你 Github 帐号下的 Tangram 是一个仓库你本地编辑的则是另外一个仓库。别忘记了你刚刚是用克隆命令把 Github 上的仓库复制下来的。所以在提交后你还必须用推送命令把本地仓库复制回 Github 去。git push origin master在这里 origin 是一个远程仓库的别名。因为你本地的仓库是从 Github 上克隆下来的所以 Github 上的仓库叫做 origin 。默认情况下仓库只有一个分支叫做 master 所以你要把本地仓库推送到这个分支上去。这时候你自己的 Tangram 是更新了。如果你希望 Tangram 的官方版本也接受这个更新的话你可以点击页面上的 Pull Request 按钮这时候 Tangram 的管理员就可以考虑从你这里把更新拉取到官方版本上去。如果你在开发自己版本的 Tangram 时看到别人的 Fork 有更新了并且也想要那个更新怎么办呢你可以主动地从别人那里拉取然后 Git 就会帮你完成合并。例如说我发现 Leeight 那里在做的一个 Tangram 升级不错尽管他还没完成这个升级也没提交到官方版本中去但我就可以先把这部分升级拉取到我本地的仓库中来。git pull https://github.com/leeight/Tangram-base.git这样子我就能看到 Leeight 所做的升级跟我正在做的改动是否能够良好地兼容了。或者我可以先做一些依赖于他的升级的事情等他把升级做完了并且被官方版本采纳了我再向官方版本提出 Pull Request 。可以看到 Git 对开源项目来说是非常友善的尤其是跟 SVN 和 CVS 做对比的话。 SVN 和 CVS 尽管允许分支但分支之后通常要到项目完成时才会进行合并这时候主干已经发生了很多变更合并起来就相当痛苦。 Git 允许你分支后随时从别人的分支拉取变更同时你还可以在自己的仓库内做很多子分支这就使得开源项目管理变得十分方便了。小结说了那么多道理建议大家还是动手实验一下比较好。试用 Tangram 无需下载直接创建一个页面然后引用我们放在 CDN 上的脚本即可然后可以尝试按照入门指南做些简单的东西试试。使用 Git 管理开源项目的话推荐阅读 Git 开发管理之道 能够让你更好地了解 Git 项目一般是如何进行分支的以及如何利用这些分支获得更好的灵活性。如果你想看完整的 Git 手册可以看看 Pro Git 这本书作者把这本书放到网上并且免费公开了。