跳到主要內容

發表文章

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

[分享] CoffeeScript Vim plugin

CoffeeScript Vim plugin CoffeeScript ,也有人稱為 Coffee ,最近開始寫 Coffee,因為有時候很懶得打字,也想要快點把程式建構出來, Coffee 是目前看到可以最偷懶將 JavaScript 寫出來,同時通過 JSLint 的方法之一。 不過通常我都使用 Vim ,這邊就稍微介紹一下 CoffeeScript 在 Vim 裡 面的好工具。 CoffeeScript support for Vim CoffeeScript 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 system , Path 做些小小測試,其中發現了一個關於 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