万神劫

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

40条评论 2013-04-25

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

引子

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

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

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

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

为什么 SeaJS 模块的合并这么麻烦

引子

最近看到身边很多同学开始抛弃传统的 <script> 而改用 SeaJS 这样的 JS 模块加载器了,这是件好事,也是一种趋势。
但是任何事物都有两面性,使用模块加载器虽然对于代码的可维护性带来了较大的提升,但是也引入了更多的复杂度,所以肯定会给某些方面带来麻烦——比如这篇文章要探讨的 JS 文件合并。
不少人知道 SeaJS 有个配套的文件压缩合并工具 Spm,可是这个工具似乎一直各种调整、跳票,而且目前版本的使用、配置也很复杂,很多人对此怨声载道,比如我见过有人提 issue 说

阅读全文...
47条评论 2013-02-17

用 Rails 搭建微信公众平台 API

最近微信很火,春节在家抽空研究了公众平台的 API ,发现挺有意思的,写篇小文,简单记录一下

微信 API 简介

先来看看 API 的工作流程和机制
微信公众平台的账户可以开启“开发模式”(在“高级功能”中),开启之后,用户发送微信到你的账户时,将有如下流程

用户向公众平台账号发送微信后,微信服务器会将一段 XML 以 HTTP POST 请求的方式发送给你的 API 服务器
API 服务器经过处理后,通过 HTTP 响应将另一段 XML 返回给微信服务器,这时候用户会收到来自你的公众平台帐号的回复

那么,

阅读全文...
17条评论 2012-12-11

Jumper,网站帐号快速切换器

做测试的同志们常常需要记住一大堆网站帐号,然后在测试的过程中来回切换
为了简化这个过程,我编写了一个 Chrome 扩展——Jumper

安装

Jumper 要求 Chrome 的版本至少 20.0 以上,推荐使用最新版本,由于它还没有上传到 Chrome 商店,现在必须下载后安装
先下载这个文件 https://github.com/edokeh/jumper/blob/master/jumper-0.1.crx?raw=true
然后打开 Chrome 的插件管理页

阅读全文...
46条评论 2012-09-25

Why SeaJS

前言

本文主要面向刚接触 SeaJS 的同学。
文章会先提出传统 Javascript 开发上遇到的一些难以解决的问题(即“冲突”与“依赖”两节),然后介绍如何使用 SeaJS 来解决这些难点(即 “Why SeaJS” 一节)。
实际上,如果你想了解 RequireJS 等其他模块加载器,也可以阅读本文

冲突

我们从一个最简单的例子开始
以前我做项目时,常常会将一些通用的、底层的功能抽出来,独立成一个函数,比如

function print(str) { // 代码!};

然后像模像样的将这个函数丢到

阅读全文...