@ChingHanHo

I Build Stuff.

io.js 是什麼?Node.js 社群分裂事件觀察

這個事件已經燒了好幾天,剛開始注意到是 Hacker News 上出現「IO.js – Evented I/O for V8 javascript」這篇推文,我甚至還不曉得到底該寫 IO.js 還是 io.js 比較正確。

整件事情發展詭譎得像 Prometheus 的 Elisabeth Shaw 剛發現黑色黏液一樣,不知道到底是希望還是崩壞的開始。最近公司有要用 Node.js 所以我就追了一下新聞,大概統整出來的概況寫了這篇觀察紀錄,或許有些可能有錯麻煩在幫我指正,感謝喔!

Node 樣版引擎評估:Jade、Handlebars

短文版

用 jade。

長文版

因為這個專案效能不會是評估重點,語法設計、擴充性、使用彈性會是比較在意的部分。

活在樣版引擎這個群雄割據的戰國時代實在太多選擇,從各方的評論和簡略地掃描文件上的語法特性,挑出以下幾個我比較喜歡的:

TJ 當初設計 Express 承襲 Ruby micro-framework Sinatra 的設計理念,ejs 好像是因應而生(?),從 ejs 語法上面可以看到非常多 Ruby 樣版引擎 ERb 的影子,對我來說是最「友善」的。不過 TJ 另創 jade 樣版引擎加上投奔 Go 世界以後,ejs 的活躍程度越來越低,從今年 5 月之後就再也沒有更新過了。

我向來都會先以「社群活躍度」來評量一個程式專案計畫可靠度,jade 貢獻者在 Github 上成立 jadejs 組織來維護專案,長久來看蠻可靠的。而 handlebars 在 Github 上也廣受 Javascript 開發者歡迎,所以最後我就拿這兩套樣版引擎來比較,以下是值得提出來講的部分。

(再強調一次好了:語法設計、擴充性、使用彈性是我比較在意的項目)

MongoDB 的 ODM:mongoose 簡單介紹

mongoose

mongoose 是一套給 Node.js 用的 MongoDB ODM,跟常聽到的 ORM 不同的地方只是一些技術名詞定義上的把戲,其實是差不多的意思。

透過 mongoose 可以用包裝過的、更高階的、更直覺的 API 語法,以及模擬 SQL 資料庫 schema-based 的方式,來操作 MongoDB 資料庫。以下是個官方文件給的簡單範例,先建立了一個叫做 Cat 的 Model,model 的第二個參數就是建立 schema 的所在:

1
2
3
4
5
6
7
8
9
var Cat = mongoose.model('Cat',
  { name: String }
);

var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
  if (err) // ...
  console.log('meow');
});

Node.js 的 Http vs Connect vs Express

node-express

這篇應該是我第一篇寫有關 Node.js 的文章,未來應該會開始多寫一些有關 Javascript 的東西。這次主題要來聊聊 Node.js 的 http 模組,跟知名的 Connect 和 Express 之間的關係,如果上網去問,有人會回說就像是 Ruby 的 Rack 一樣,但是具體到底是什麼東西呢?

劣以為的 OOCSS 和 SMACSS 以及其他 CSS 規範

真心覺得寫出 CSS 並不難,但是要寫出可被維護的 CSS 比其他程式語言都還難。所幸已經有許多大師級的人物,提出許多設計模式和思維,藉由站在巨人的肩膀上可以讓事情事半功倍。這篇文章就來說說 OOCSS、SMACSS 和撰寫 CSS 時應該注意的規範。

(本文的例子用的是 SCSS 語法)