跳到主要內容

文章

目前顯示的是 七月, 2012的文章

[分享] CoffeeScript Vim plugin

CoffeeScript Vim plugin CoffeeScript ,也有人稱為 Coffee ,最近開始寫 Coffee,因為有時候很懶得打字,也想要快點把程式建構出來, Coffee 是目前看到可以最偷懶將 JavaScript 寫出來,同時通過 JSLint 的方法之一。 不過通常我都使用 Vim ,這邊就稍微介紹一下 CoffeeScript 在 Vim 裡 面的好工具。
CoffeeScript support for VimCoffeeScript support for vim
設定方式 直接使用vim-pathogen 是一種 vim plug auto load 載入模組,設定方式不多介紹。

切到 ~/.vim/bundle vim-pathogen 的路徑下,

git clone https://github.com/kchmck/vim-coffee-script.git
接著需要設定一下 vim-pathogen, 在 ~/.vimrc 底下需要設定


call pathogen#infect()

安裝完成
Vimrc 設定 通常會設定幾個快速方法,
au BufWritePost *.coffee silent CoffeeMake! au BufWritePost *.coffee :CoffeeCompile watch vert 儲存檔案後,直接編譯,同時觀看 js 結果。 更多設定請參考 CoffeeScript support for vim

[分享] watchFile 陷阱與進階討探 (Node.js), watchFile tricky way on Node.js

watchFile 陷阱與進階討探
這兩天因為之前寫得一個 simple-livereload 無法支援 Windows, Mac ,開始進行小改版,也稍微對 file systemPath 做些小小測試,其中發現了一個關於 watchfile 小小的問題。

問題探討
先來看一下程式碼
var fs = require('fs'); var fullpath = '/home/clonn/test.html'; fs.watchFile(fullpath, function (curr, prev) { console.log('file update') });
接著進行檔案執行之後,會發現出現一個問題,當我修改 test.html 的時候,照理來說應該只有出現一次 file update ,可是卻出現 兩次 ,這實在有點不合乎邏輯。
拜了一下 Google 大神之後,終於找到原因,因為 file system 的 watchFile 實做,當關注的檔案片段(data chunk) 被更動的時候,就會觸發(trriger),接著檔案修改完成,又會重新觸發一次事件,所以導致當一個檔案修改,會被觸發兩次。

處理方法
在 filewatch 的 listen 事件當中會提供 curr, prev,之前和目前的物件(Object) ,接著使用此事件進行時間比對,所以剛才的檔案我們修改如下,
var fs = require('fs'); var fullpath = '/home/clonn/test.html'; fs.watchFile(fullpath, function (curr, prev) { if (curr.mtime.getTime() !== prev.mtime.getTime()) console.log('file update'); }); 如此就可以得到正確結果,檔案修改,就只會進行一次觸發。

進階處理
其實 fs.watch, fs.watchFile 會回傳 listener 物件,如果要使用可以將程式碼修改如下,
var fs = require('fs'); var fullpath…