万神劫

万物天地为剑,神鬼妖邪为剑
劫波万渡,宇宙苍穹尽为剑
是为万神劫!

20条评论 2014-01-28

新年新 Blog

终于赶在过年之前将新版的 Blog 程序发布啦!
新版的 Blog 基于 Rails4 开发,后台采用了 Angular.js,所以年后会写一些 Angular.js 方面的文章,不要错过哟~
最后,祝大家新年快乐!

阅读全文...
7条评论 2013-08-26

慎用 Underscore 的 _.bindAll(this)

关于 bindAll

Underscore 是我非常喜欢的一个 JS 库,提供了相当多方便的工具方法来简化前端开发
其中我印象最深,也是最喜欢的一个方法就是 bindAll (对于我等 Rubyist 来说,each/map/where 什么的早就不新鲜了)
因为它可以很好地解决 Javascript 里 this 的问题,尤其是编写 UI 组件时非常有用,比如:

阅读全文...
0条评论 2013-06-08

Sea.js 如何与 Rails 结合

前言

Rails 从 3.0 开始提供 Asset Pipeline 来管理静态资源,其中一个重要的功能就是可以通过注释的方式来申明 JS 文件依赖,随后通过服务器端的支持来进行依赖文件的加载。
不过随后纯前端的 JS 依赖管理器大量涌现,比如 RequireJS 和 Sea.js,前端开发人员可能更偏好这种方式。但是功能上来说, Asset Pipeline 更为强大,除了 JS 之外,图片和 CSS 都很好地处理,而且有完善的打包和缓存机制。
所以很自然的我就开始思考如何将这两者结合起来: 既能用

阅读全文...
27条评论 2013-05-20

Zepto 使用中的一些注意点

前段时间完成了公司一个产品的 HTML5 触屏版,开发中使用了 Zepto 这个著名的 DOM 操作库。
为什么不是 jQuery 呢?因为 jQuery 的目标是兼容所有主流浏览器,这就意味着它的大量代码对移动端的浏览器是无用或者低效的。
而 Zepto 只针对移动端浏览器编写,因此体积更小、效率更高,更重要的是,它的 API 完全仿照 jQuery ,所以学习成本也很低。

但是在开发过程中,我发现 Zepto 还远未成熟,其中包含了一些或大或小的“坑”,与 jQuery 的差距还是很明显的,

阅读全文...
36条评论 2013-04-25

如何使用 Spm2 压缩合并业务模块

引子

为了便于理解,先下个定义

  • 标准模块是指 jQuey/underscore 这种不含具体业务逻辑的库
  • 业务模块则相反,包含了网站的前端业务逻辑,比如处理表单校验、发送特定的 ajax 请求等等

Spm2 提供了对标准模块打包合并的支持,但是如果你想用它来打包业务模块的话,可能不太适合,为什么呢?

  • 标准模块必须有版本号,但业务模块变动频繁,稍微改一下代码就要手工去改版本号,多痛苦啊
  • 业务模块的“模块性”往往表现得没有那么强(业务模块常常是没有 exports 的),如果简单页面对应的少量 JS
阅读全文...