2016年2月26日 星期五

ECMAScript和JavaScript的關係到底是?

先說一下ECMAScript (可以簡稱為ES) 是什麼好了,用稍稍簡單一點的說法來看,你可以說ECMAScript就是JavaScript的「學名」。JavaScript這個名稱 (好吧,就當作「俗名」) ,因為當年的各種因素 (包含名稱被註冊走的政策面、加上Java兩個字在當時的合作關係與行銷面…等) ,所以經歷了幾次的名稱異動,最後被世人認知的就是JavaScript,但ECMAScript終究是JavaScript的正統規格名稱。

其實ECMAScript是ECMA制定的這個語言的規範標準,其真正的標準編號是ECMA-262,JavaScript算是ECMAScript標準下的一個實作成品。所以如果要回歸到標準規格的製定,必定會由ECMAScript出發。目前 (2016年2月) ECMAScript的穩定版本為ECMAScript 6 (其實官方稱作ECMAScript 2015),於2015年6月正式發佈,其中最主要標榜ECMAScript可以用來開發更為複雜的應用程式架構,支援更多的新語法與功能。

其中雷哥最為興奮的是,以往的版本雖然已經是物件導向語言,但是要建立一個物件導向中的「物件」的作法,就和其他OOP語言有相當大的差異,但ECMAScript 2015支援了與其他OOP更為接近的Class寫法,讓JavaScript更具有親和力一點。

參考資訊

2016年2月23日 星期二

正視JavaScript這門技術

先談談什麼是JavaScript?

如果我們以研究的精神來看,這個問題是乎是必需要了解的事,但JavaScript一直以來也都讓大家都好像知道它是什麼,但卻又無法精準的理解。

大家可以先理解一下自己對JavaScript的了解程度,以及誤解了JavaScript又有多少。
(以下簡稱JS)

  1. JS是一種ECMAScript的體現
  2. JS是物件導向語言
  3. JS是弱型別的語言
  4. JS是直譯式語言
  5. JS可以操作DOM元件與網頁互動
以上幾點我相信從各種教科書或網站資訊都能找到更加豐富的內容,我在這也不打算詳細解說與介紹。我想特別提出來的是,大家長久以來多半很少真正了解以及用足夠的心力來撰寫JS Code,導致總有個誤解覺得JS程式碼很不精確,好像這樣寫或那樣寫應該都能執行,變數的宣告或使用方法與使用範圍也都是好像這樣寫也寫,那樣寫也不會有錯。原因無它,因為我們太常去拿現成JS Code來改一改就做好了網頁拼裝車。

JS的物件導向若有效運用,是可以依類別特性分門別類來設計與管理,然後JS最容易淪為結構化程式設計的方式進行,一開始網站小小的,就會將所有的JS全寫在同一個網頁內,或放在一整大包.js檔裡,一個一個function排排站,從滑鼠滾輪頭站到滾輪尾。

待需求增加,功能擴建,網站變的愈來愈大,大到JavaScript檔無法有組織的管理,程式碼雜亂無章,沒有人(當然一定會包含自己)願意去修改改這裡會壞那裡的義大利麵式code。

JS的物件導向語言其實是救星,但是要看撰寫的開發者有沒有心徹底的去改變與重新規劃,很多人誤以為套用了jQuery,就能讓自己的JS Code變的更專業,其實jQuery幫助你的並不是程式的規劃與設計這一部份,他只幫你解決惱人的跨平台問題,讓你有更強大方便的方式來與網頁互動,另外一大好處是你以其為基底,有更多support的元件可以擴充使用。但他絕對不會幫助你讓你的code具備良好的規劃與高維護性。

總之,程式設計的基本功,包含如何規劃你的物件導向類別,類別之間的耦合性、內聚性問題,正確的使用基本語言特性以達成高效率與低錯誤的高品質程式碼,是否能適切的引入適合的設計模式增加程式彈性與擴充性,這些和JavaScript本身的關聯性都不大。這都是開發者自己需要勤練功夫的課題。

正視JavaScript這門技術,就從基本功作起,對程式有高度的掌握能力,才能進一步寫出強大與靈活的應用,這是學習JavaScript不二法門。

2016年2月22日 星期一

JavaScript重回前端一哥

如果我們用一種較戲劇性的方式來看待網頁前端互動技術,是誰讓Flash應用從火紅的高峰直接跌落谷底,到人人喊打的冏境?這一刀砍下,做了時代性的劃分,那就是智慧型手機的興盛這一個突如其來的招式。

誰都沒有想過,當Apple宣稱了iOS將不支援Adobe Flash的各種應用(我們姑且不論「Flash效能影響說」的政治性或策略性目的),讓行動裝置上再也看不到Flash的網頁後,這個技術在一瞬間成為了過街老鼠。多少人連到某個網頁後,光在首頁就因為無法正常播放Flash的內容,而讓內頁不得其門而入。僅管Google Android陣營並沒有完全不支援Flash,但從各種「預設是不支援的」跡像來看,Flash其實已經被判了半個死刑。(半死不活)

有人可能會認為,不會呀,用一般電腦上網仍然看的到Flash呀,應該不致於太糟吧?這件事 僅適用於已經做好Flash內容的網站,這點是可以被容忍的。當有新網站需要被規劃設計時,Flash技術會成為發展跨平台網頁的一個最大的絆腳石。哪怕他有再炫、再強大的互動性,在如日中天的行動裝置上看不到內容,是業主會接受嗎?(光在驗收時,用自己的手機去看網頁就看不到了,能驗收的過嗎?)

HTML5在這個分界點,登高一呼,讓網頁前端技術先有了穩定的基石,那要讓這一切能夠如預期般的運作,要靠誰呢?這個角色就是一直存在那說著:「我準備好了」的前端互動一哥JavaScript。

這個時勢造英雄的劇本,注定讓JavaScript有英雄命,而且這條命真的很硬!

Flash原本能做的事,在升級了武器和防具的HTML5、JavaScript、CSS3等上陣後,都是可以被實現的。而且讓人興奮的事就是,他們都是基於公開的標準,再也不用掛在特定品牌的Player裡了,完完全全可以直接操作DOM,在網頁上做純粹的互動。除此之外,包含WebGL的技術再度捲土重來,Client端軟硬體環境都日漸成熟(手機都強大到如同一台電腦了),直接使用JavaScript的原生Web3D技術(不需透過任何特定廠商的3D Viwer)也大張旗鼓的冒出頭來(沒錯,當然具備跨平台以及與網頁元件直接融合),而且效能還真是好!

可以看見的未來是,公開標準的前端技術,擁有跨平台優勢,搭配好適切的響應式網頁設計 (Responsive Web Design),是一條正在發光發熱的道路。

所以不管以前的我們,怎麼看待這些前端網頁技術(哪怕以前曾經誤解覺得他們只是花拳繡腿的技術),現在身為有心想做好前端技術的開發者們,都可以好好的磨劍了。(咦?太晚了嗎?)

前端再起之路!我們就從JavaScript當新的起點吧!