ScaleDrone Websocket 平台從 Node.js 轉換到 Golang

又看到一間網路平台公司從 Node.js 跳到 Golang 了。ScaleDrone 是一間提供了 websocket 服務的公司,讓 web 可以透過 ScaleDrone 即時將訊息傳播到各種瀏覽器,但是今天看到 ScaleDrone 即將把後端平台使用的語言從 Node.js 轉換到 Golang,為什麼要轉語言呢,官方提到大量的 Websocket 連線,讓伺服器記憶體快吃不消了,然而 ScaleDrone 用 Go 語言來實際測試,發現記憶體不但沒有增加,反而還降低了 response 及 connections 時間。底下是針對 Node.js vs Go 語言轉換比較。

[Read More]

6to5 JavaScript Transpiler 重新命名為 Babel

es6-logo

先前寫了一篇 CoffeeScript 轉 ES6,裡面有提到 6to5 專案,此專案幫助開發者可以直接寫 JavaScript ECMAScript 6,該專案則會將 ES6 轉成 ES5,但是目前瀏覽器對於 ES6 的支援度還沒有很高,可以直接參考 ECMAScript 6 compatibility table,但是看到專案名稱 6to5,就會覺得如果之後 ES7 出來,不就要多開一個 7to6 專案,果然官方在 Blog 宣佈將名稱正式轉為 BabeljsBabel 也會持續使用最新 JavaScript Standard 開發 JavaScript transpiler 相關工具,讓各種平台程式都可以使用。

現在就可以透過 Babel 來開發 ES6

$ npm install --global babel

ES6 轉 ES5

$ babel script.js

一些來自 Mozilla, Esprima, jQuery Foundation, Acorn, 6to5, ESLint 組織成員,也合力開了 ESTree,而 Babel 以 ESTree 為基底來開發相關 Tool,所以最新的 Standard 也可以直接參考 ESTree。

成立 iojs 台灣群組

9950313

昨天在 node.js 台灣群組討論對岸已經成立 iojs-cn,不多說我們也請官方幫忙成立了 iojs-tw,目前的工作只有兩項,就是負責將[ iojs 官網]翻譯成中文,這部份 @cfsghost 已經送 PR 給官方了,另外就是翻譯官方的 Weekly Notes,iojs 每週五都會發布一篇 iojs 的最新動態,我們就是負責將其中文化,上週五已經翻譯好了請參考如下:

[Read More]

前端工程師必看 JavaScript The Right Way

325x450xtech-icon_js-strict.png.pagespeed.ic.iBvyvS-EQY

PHP 的工程師一定知道 PHP The Right Way,現在 JavaScript 也出了 JavaScript The Right Way,不管是新手或者是資深工程師,都值得把裡面提到文章一看再看,此網站包含

網站還提供了新手或老手必讀的文章,像是 Understanding JavaScript OOP, Understanding “Prototypes” in JavaScriptUnderstanding JavaScript Function Invocation and “this”。也有推薦值的購買的書籍,以及免費書籍

jquery-serialize-object 不支援 IE7,8 瀏覽器?

最近專案需求用到 jQuery Serialize Object plugin,它能夠自動將 Form 表單內的值,全部轉成 object 或 json 字串,減少開發者每次都要寫抓取 Form 表單內全部欄位的值。此套件安裝及使用方法都很容易,安裝可以透過 Bower 方式,或者是下載 source code 直接 include 即可,在 IE 7 或 8 為什麼沒辦法使用呢,原因是作者使用了 Array.prototype.forEach,此語法需要 JavaScript 1.6 版本,很抱歉,在 IE8 並不支援 forEach 寫法,所以 Mozilla Javascript 開發者文件內有提供 Compatibility 方法: if (!Array.prototype.forEach) { Array.prototype.forEach = function (fn, scope) { ‘use strict’; var i, len; for (i = 0, len = this.length; i < len; ++i) { if (i in this) { fn.call(scope, this[i], i, this); } } }; }[/code] 但是既然這是 jQuery Plugin,就可以透過 jQuery 內建的 each 函式來解決,最後發了 Pull request 給作者,就看作者收不收了 XD

將 Backbone Framework 升級到 1.1.0 注意事項

backbone

Backbone.js 經過了半年終於在 10 月 Release 了 1.1.0 版本,這次升級最重要的一點就是,Backbone 本來在 View 有支援 options,讓你可以透過初始化過程,將自定額外的 key 及 value 帶入,並且可以隨時透過 this.options.key 的方式取得資料。直接給例子來解說好了

this.example = new Backbone.View.extend({
  template_name: "user_edit",
  el: "#main"
});
上面是宣告 Backbone.view 的寫法,程式設計師可以傳入 object 設定,並且可以在程式任意地方,使用

this.example.options.template_name 方式來得到 user_edit 值,如果是使用 Backbone 1.1.0 之前的版本都沒問題,要升級到 1.1.0,又想要此功能,請務必在 view 的宣告前就必須加一段程式碼(後面解說)。為什麼作者會拿掉呢?因為有開發者發 issue 說為什麼 View 有這功能,那 Model 為什麼沒有呢?,這會讓未來加入開發的程式設計師感到困擾,所以作者就決定拿掉這塊

[Read More]

[小技巧] JavaScript Cross Browser Best Practices

ie-logo-small
先前寫了一篇

modern.IE 的使用方式及介紹,今天在 Facebook 上看到 Eric Shangkuan 說已經有了中文介面,如果你的瀏覽器是中文版,應該就可以直接看到中文介面了,裡面有篇文章非常重要,寫 Web 的工程師都必須注意,那就是 Cross Browser Best Practices,這篇文章教您如何撰寫相容於舊版 IE 瀏覽器的一些小技巧,這些技巧也不只用在 IE 上,更是教您在實做 CSS,JavaScript 的注意事項。我們來看看 Javascript 的小技巧。

[Read More]

Backbone.js rewrite into CoffeeScript?

backbone
看到

@gsamokovarov 提出將 Backbone.js 改寫成 CoffeeScript 架構的 Pull request,結果官方團隊其中一位開發作者回應了一張圖,代表他的心情 XD,各位有興趣可以點上面連結看看,後來有其他人回應說,為什麼官方不用 CoffeeScript 來寫了,發此 Pull Request 的作者也有說,他只是將架構改成 CoffeeScript 讓大家參考看看而已,沒有真的希望可以納入整個 Backbone.js 專案,如果有其他開發者需要的話,一樣可以 fork 此專案,說明文件也用 docco 產生好了,可以參考此連結,官方作者也提到,大部份的第3方 Library 還是不會使用 CoffeeScript 來當作基底開發,畢竟並非所有人都知道 CoffeeScript,如果官方想這麼開發的話,早就再 2010 年丟釋出 Backbone.js 的時候就直接採用了,不會拖到現在還沒出來,當然最後官方也希望將此 pull request 寫到 wiki 裡面給大家參考,等待原作者補開發動機及細節。

台灣第一屆 JavaScript Conference Developer 會議

JSDC 2012

自從去年辦了台灣第一屆 2011 PHP Conference,2012年開始又來新的第一屆 Javascript Conference,在去年的 PHP 會議由於第一次開始舉辦 PHP Conference,所以比較少人投稿,導致議程裡面出現很多 Javascript 議題,這也是很多朋友的疑問 XD。底下來回顧 JSDC 5/19 (六) 個人參加的議程。由於早上差不多10點半才到,所以前兩場議程(Key Note - Ericsk, Node.JS on Windows Azure)就沒有聽到了,比較可惜。如果沒去聽現場的,可以到官方網站下載投影片參考。

[Read More]

jQuery 1.7 透過 on 來綁定事件

既上一篇作者寫了 Javascript 前端工具 Backbone.js Framework 初學介紹,這次來將程式改寫成 jQuery 寫法,藉這個機會來介紹 jQuery 新功能 on API,底下來看看 jQuery event handle 的演進

//在 jQuery 1.3 以上版本
$(selector).live(events, data, handler);
//在 jQuery 1.4.3 以上版本 
$(document).delegate(selector, events, data, handler);
//在 jQuery 1.7 以上版本
$(document).on(events, selector, data, handler);
上面三種寫法都可以綁定網頁上全部元件,如果只是單純只是用 click bind event 的話,那只要新增的元件就無法作用,講得有點抽象,底下直接看個例子: [Read More]