JavaScript & jQuery 的應用(一):概念

JavaScript & jQuery 的應用(一):概念

其實應該要先介紹一本好書:jQuery in Action(jQuery實戰手冊)

jQuery in Action

這本書主要是介紹jQuery 在1.2中有哪些重要的function及一些好用的UI Plugin,以及一些在

WEB上面開發需要注意的一些觀念。雖然我jQuery也用了好一陣子了,不過還是著重在他

的強大的選擇器上面,其實很多好用的東西都沒用過。

 

看完之後,我深深的覺得自己以前寫的CODE真的是有夠醜的,好想重寫哦……


所以我打算這一系列要來簡單的介紹利用jQuery達成一個小小的功能,而且可以體會一下

書裡面提到的一些概念性的東西。

 

先簡單的介紹書裡面有提的一些重要的概念:

1.Unobtrusive JavaScript

將結構(內文)與樣式表、以及行為分離。這邊有篇文章在說明為什麼要這樣處理:

Understanding Progressive Enhancement (譯文)

另外還有撰寫的七大準則:

The seven rules of Unobtrusive JavaScript (譯文)
 

2.JavaScript 封裝

其實就是讓JavaScript更具物件導向性,另外一個好處是,當我們在眾多的頁面上使用Javascrip的

時候,很可能會發生名稱衝突的問題,這時候就很難去追查是誰影響誰,所以可以再利用命名空

間(Namespace)加以區隔。

物件導向Javascript - 封裝

JavaScript 物件導向的寫法

 

3.各家瀏覽器的相容性

我覺得,jQuery的強大在於他的多重選擇器,另外一點就是跨瀏覽器的組合,這個應該是寫web的

工程師一個心裡的痛。書裡面有舉了個例子,W3C在定義DOM LEVEL2的時候,在監聽事件的觸

發上使用了:

addEventListener(eventType, listener, useCapture)


eventType 事件類型,ex:click, change
listener 觸發的程序
useCapture 指定為capture模式或是bubble模式

但在IE裡面,使用的卻是:

 

attachEvent(eventName, handler)


eventName 事件名稱,ex:onclick, onchange
handler 觸發的程序

 

且IE不支援capture模式,這使得我們在開發上有相當大的困擾,但如果利用jQuery,則只要一句:

 

bind(eventType, data, listener)



就可以輕鬆解決跨平台的問題。

註:如果不知道什麼是Capture和Bubble Mode可以看這裡:Event dispatch and DOM event flow

 

4.DOCTYPE的重要性

DOCTYPE為什麼重要?因為他會影響排版在各家不同瀏覽器呈現的效果,尤其是IE有分為strict mode

及 quirks mode二種模式。在PPK中有詳細的介紹各家瀏覽器的狀況。

Quirks mode and strict mode

另外,在W3C的Box model中,width及height是不含留白與框線寬度,但是傳統模式是有含的(IE採用傳統模式)
Box model tweaking

 

 

所以在網頁的編輯上,最好一定要宣告使用的DOCTYPE。