呃, 貌似一直用 CoffeeScript 语法是有点小众… 模块是 JS 的, 这个先不影响
我平常喜欢用 CoffeeScript, Jade, Stylus 来做各种静态网页模型玩 渐渐摸索到一点规律吧, 觉得用代码在网页上涂涂改改挺有意思的 渐渐的这套方法觉得依赖性比较大了, 最近写东西都会犯到这个问题, 就专门对付下
因为我用的代码都是要经过编译的, 编译的步骤就有点繁琐
我的 HTML 是用 Nginx 跑的, 相对来说没有自己写服务器 Serve 的麻烦
另一点是我用了一个 doodle
命令来实现网页保存时自动刷新
这样我涂改网页的时候, 很方便在另一个电脑上看运行效果, 刚开始听有意思的
接着我发现命令多了, 更方便写在的配置文件里的, 于是尝试了 Bash 脚本
结果脚本命令有阻塞, 用 &
放在后台执行又存在 kill
的麻烦
后来就开始用 Node 脚本来跑命令, 关闭方便多了, 只是配置文件不好…
中间尝试了 Grunt, 结果每次本地安装模块, 又不能直接跑进程, 好麻烦
于是就开始想自己的方案了, 用 Node 脚本来直接将几个动作串联起来
我现在的做法是让每个插件 exports
出来一个 EventEmitter
的实例,
通过 emit
和 on
处理事件来关联不同的插件, 讲插件组合使用…
项目叫 Rain-boots, 放在 Github 上… 技术上是很简单没错…
Rain-boots 模块本身暴露的 require("rain-boots").rain
是个全局的 EventEmitter
.boots
则是一些常用函数的集合, 现在还很粗糙…
每一个插件可以暴露自己的 .rain
和 .boots
给外界, 来进行事件的传递
我自己的想法是在 Cakefile
文件里对这些事件进行组合搭配
尝试弄了个编译 coffee 的插件, 最后用的时候就像这样
coffee = require("coffee-boots").rain;
coffee.emit ("watch", {
from: "a.coffee"
to: "a.js"
});
然后检测到 a.coffee
的 change
事件就重新编译一次.
先打算完成一个自己基本需求能用的… 然后考虑下能不能方便别人用
支持。这个任务的设置最好能从一个setting文件里读。能检测setting文件并更新,就是eat your own dog food 了 :)