iT邦幫忙

5

無法取代的原生 - Javascript

最近幾年javascript 實在是一門進步神速的語言,從基本瀏覽器腳本語言,到HTML5 使用canvas、video、websocket、worker等,甚至是後端編譯腳本nodeJS / ringoJS,當然還有許多從javascript 編寫出來的套件庫,整體來說javascript 發展的速度比我想像的還要快得多。

<span style="font-size: 20px;"><span style="color: red;">回顧javascript 歷史</span></span>

從Netscape 發展此種語言開始,壓根不會想到javascript 會演變成現在的局面,因此在當初訂定javascript 來說,就是毫無標準可言。Javascript 對於沒有接觸過程式開發的人來說,是一種好的開始,畢竟它的容錯性高,出錯率低,簡單來說就是,開心宣告就宣告,不用宣告也可以寫出能動的程式碼!這也造就了javascript 初期開始,可以直接複製、貼上、接專案的映像。

因此由Douglas Crockford 也開始提倡起javascript: Good parts(javascript :優良部份),也發展出jslint ,提供大家作為javascript 程式碼驗證工具,會這樣子做不是沒有原因,畢竟javascript 實在是『太方便寫』,自己寫自己的,當然獨自開發這不是太大的問題,但是如果遇到大型專案時,這種充滿『重構味道』的程式碼,自然是一場不可抹滅的惡夢。

<span style="font-size: 20px;"><span style="color: red;">套件庫掘起</span></span>

在AJAX 崛起之後,javascript 的發展就變得相當吃重,也漸漸的讓開發人員體會到前端開發的重要性。當然javascript 開發,對於前端來說還是有很多問題,光是跨瀏覽器就是個很令人頭大的問題。

因此各家開發出自己的套件、工具庫,例如YUI,dojo,jQuery等。當然這是個很不錯得方向,專家們開發出套件,而開發者可以利用套件組裝出自己所需要的效果,瑣碎的問題交由套件處理掉,讓開發者減少開發時間與降低開發門檻。

<span style="font-size: 20px;"><span style="color: red;">Javascript 還是沒這麼簡單</span></span>

前面的套件其實只解決了『前端開發的問題』,但是此時的javascript 已經不再是原本的javascript ,從前端到後端,甚至是指令等都可以利用javascript 來處理,例如nodeJS ,要怎麼利用javascript 寫出易讀,讓開發者容易瞭解、再利用的程式這是個難題。

coffeescript、Dart兩者都屬於基於javascript 之上的產物,其目的就是為了解決『javascript 物件化』的問題,對於我來說,這兩種語言都不算是新的產物,頂多算是開發javascript 簡化工具,開發的程式結構越來越有『物件導向』的感覺,閱讀程式碼也更加簡單、優雅。

<span style="font-size: 20px;"><span style="color: red;">潛在的問題</span></span>

萬變不離其宗,以上這幾種『工具』都是基於javascript 的變化型,根據使用套件及簡化作業的經驗來說,最終的最終還是會遇到許多不可解的問題,想要解決這些問題,或者是瞭解問題的所在,還是要去瞭解javascript ,只有根本的瞭解底層基礎運作,才是根本。

當然也許有開發者都不會碰到『地雷』,或者是『將地雷視而不見』,選擇繞路而行,雖然問題看似被解決了,事實上就變成了某種『經驗談』,或者是『它就是這樣子處理』,根本的問題還是存在著。

<span style="font-size: 20px;"><span style="color: red;">結語</span></span>

javascript 演變至今,已經有一種越來越強大的局面,不可否認它是一種『非常糟糕的語言』,任何一種寫法都可以執行。當然隨著規範的更動,以及開發者的努力,這些問題都會漸漸被限制,規範也會越來越清楚。

當然利用套件開始自己的javascript 之路其實是不錯的事情,不管是從前端的jQuery 開始,或者是直接撰寫coffeescript 、Dart開始,都是一個不錯的方向,從門檻最低的平路開始,在一路上中後段還是會發現 - <span style="color: red;">『越不想碰的,最終還是要面對』</span>,但至少你已經開始了這條,『不歸路』


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
Kuro Hsu
iT邦新手 1 級 ‧ 2013-04-12 16:11:08

出來混,遲早要還的。 Orz

ted99tw iT邦高手 1 級 ‧ 2013-04-12 17:56:51 檢舉

可以先還再討嗎...汗

總裁 iT邦好手 1 級 ‧ 2013-04-12 18:09:52 檢舉

聽起來這條路好像很恐怖...冷

0
wordsmith
iT邦高手 1 級 ‧ 2013-04-12 18:26:28

本立而道生啊,還是得在原生的JavaScript上下一點功夫才行

0
josephj
iT邦新手 5 級 ‧ 2013-04-12 22:24:45

學什麼東西真的都是如此
可能有一個比較進階的東西帶你入門
但是一但要玩得比較深入的話,就得返樸歸真了

0
賽門
iT邦超人 1 級 ‧ 2013-04-12 23:00:09

我個人看法...那一大堆JavaScript套件庫, 只是方便而己.
對JavaScript語言功能的發展, 其實是種阻礙.
因為很多套件庫並沒有很長遠的發展計劃, 很多都只是強者們一時興起寫出來的特異功能.
過陣子, 因為沒有持續維護套件庫的完整性, 而導致使用這些"孤兒"套件庫開發的網站維運, 成為網站經營者的惡夢.
所以, 我比較建議在JavaScript的應用討論時, 多些討論些有長遠發展計劃的JavaScript套件庫的深入應用.
可能會比討論那些JavaScript套件庫有什麼新奇Function Call來得對JavaScript programming有正面助益.

我要留言

立即登入留言