18 七月 2010 @ 11:45 下午 

當javascript 效能執行的越來越好時,開始有人把javascript這個client端運行的language動到server side了。如果server side 和client side 都能夠用同一種語言來撰寫該有多好?事實上,javascript是個很好的OO語言,只是他的物件導向概念迥異於Java之類的語言,然而ECMA定義了javascript的browser-based的語言標準,但是並沒有考慮到其他層面的標準。於是commonJS就因此而誕生了,commonJS定義了其他層面的API,讓javascript這個語言還可以拿來做server-side applications, command-line tools, Desktop GUI-based applications …等,而不是只能在browser上執行而已。但implementation就百家爭鳴了,你可以在Getting CommonJS找到很多實做。

nodeJS是我最早接觸的server side JS,會玩他是因為他太火了,因為Ajaxian也不斷的有關於他的新消息,plurk的技術長Amix也曾經來到台灣介紹過它,用在server push 的技術中(Comet with node.js and V8),而且也在plurk上實際應用(Plurk: Instant conversations using Comet),令人相當振奮,這才是有web 產業應有的精神,研究、應用、實做、測試、上線。令人折服。

隨著網站越做越複雜,大部分的網站,不管後端是用哪種語言,前端幾乎都是用javascript,但是平心而論,前後端都用同一個語言,到底有什麼好處?目前的動態語言都非常的強大了,幹麼要在多學一個新的東西,了解他的架構、API等等~我想了很久,唔~大概有好幾個小時吧,參考了許多blog,以下是我整理出來的結論:

  1. 整合前後端的需求 : 事實上,javascript天生就是拿來做DOM rendering的,試想一種情況:我希望使用AJAX來做頁面的呈現,但卻也要能用server-side language來呈現網頁結果(SEO考量),這等於要為同樣的功能撰寫兩次。server端要寫一次,client-side又要做AJAX特效,前後端若能使用同一種語言,那將可以整合這樣的需求。再想另一種情況,要做到多國語言化,如果純粹在server端做多國語言化,是可以解決一些需求,但隨著若要在client端也做到多國語言,就像剛剛那種情況一樣要重複做兩次工。因此統一server-side side 和client-side的需求將可以整合前後端的需求。
  2. 動態語言:js跟其他動態語言特性一樣,甚至更勝一籌,比方說匿名函式的特性,prototype 擴充的特性等等。
  3. Not only Browser: 不再侷限只能在瀏覽器上執行,你可以在server上面運行javascript囉。(這是我個人很興奮的事情)。

RingoJS

最近注意到RingoJS,真是讓我驚艷!用Java來implement, 甚至可以在google App Engine來實做,而且非常容易安裝(Getting Started – Ringo)。光看他的介紹,就足夠吸引我投入了。這應該會是我最近努力在玩的東西。I love it. 下集待續…..

Posted By: BLACKBING
Last Edit: 18 七月 2010 @ 11:46 下午

EmailPermalink
Tags
Categories: RingoJS, serverJS


 

Responses to this post » (4 Total)

 
  1. arden 說道:

    我觉得nodejs肯定比ringojs有发展前景,首先nodejs是基于v8引擎,而ringojs是基于Rhino引擎,从这两个引擎来看一个是基于c++一个是基于java,从开发活跃度来说rhino已经好久没更新了,说明开发不活跃,基本上处于死的状态,而v8开发非常活跃,并且有google这样的大牌,毫无疑问nodejs的发展前景远大于ringojs.

  2. BLACKBING 說道:

    Arden, 感謝你的回應,小弟才疏學淺,因為看到commonJS這麼多的實做,因此想要了解一下其他的到底有什麼有趣的地方。nodeJS也很有趣,有空也可以討論討論nodeJS,你對其他implement有什麼研究嗎?

  3. arden 說道:

    我也是刚学,只是了解点皮毛,感觉CommonJS的实现还是挺多的~

  4. 老狗 說道:

    大家安:
    就我個人來看目前NODE稍微有点不足,我们公司的一些产品已经开始用NODE了,但是发现NODE对于传统关系型数据库支持的并不是很好(當然,異步的話。。。),所以啦,最近也在看RINGO,希望RINGO可以在在這方面有更好的解決方案,混用嘛^^

Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


 Last 50 Posts
 Back
Change Theme...
  • Users » 25
  • Posts/Pages » 64
  • Comments » 35
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About Me



    No Child Pages.

留言板



    No Child Pages.

Album



    No Child Pages.