這個新的 module 做了一件有趣的事,由於 node.js 在伺服器寫 js 已經蠻酷的,進一步應該很多人都會聯想到,要怎麼在伺服器跟瀏覽器上共用已經寫過的 js 函式。
也有些人提出了一些方法來做,可以做一些簡單的判斷來做目前環境是瀏覽器或是伺服器來做不同的處理。
而這個 nowjs 主要主打的是在伺服器寫一個 function,你可以在瀏覽器端呼叫到,已經頗有趣的以外,呼叫到能幹麼呢?
主要就是傳訊息,你可以直接在 client 端呼叫伺服器的函式,並同時在伺服器呼叫一個函式,等同於呼叫 client 端的函式,達到廣播到所有使用者端的效果,其實基於web socket 就能達到這個效果,但能想出這個介面並設計出來也還頗有新意的。
跟之前有 lib 做到 php 在伺服器端建立 ajax 的概念有點類似,想要簡化 ajax 要寫 js 對某些人所帶來的[[困擾]],但這個實現我看起來覺得蠻失敗的..
但這概念搬到 nodejs 的世界來反而有不一樣的出發點,因為這邊沒有在想說這是件麻煩,而是達到用 js 做到跨前後端的假象…
但要小心要是做的太漂亮,反而容易讓新手搞不懂前後端的分別了…其實 nodejs 對 web 新手來講應該不是一個好玩具…
這部份未來倒是可以發展一下…讓開發變得更適合新手應該比較容易推廣
範例:
//server var everyone = require("now").initialize(httpServer); //建立一個函式 供 client 呼叫 , 並呼叫一個 client 的函式 everyone.now.distributeMessage = function(message){ everyone.now.receiveMessage(this.now.name, message); };
//client <script type="text/javascript" src="http://localhost:8080/nowjs/now.js"></script> <script type="text/javascript"> $(document).ready(function() { now.name = 'mlwmlw'; now.distributeMessage('hello'); //設計一個函式讓 server 可以呼叫= =? now.receiveMessage = function(name, message) { alert(name + ':' + message); }; });
以下是官方教學影片…
參考資源: