- 相關(guān)推薦
Javascript自學(xué)方法攻略參考
基礎(chǔ)教學(xué):
當(dāng)然只是個(gè)人的經(jīng)驗(yàn),有什么不對(duì)的也請(qǐng)高手見諒和指正。
關(guān)于到培訓(xùn)學(xué)校學(xué)習(xí)的忠告:別說(shuō)現(xiàn)在沒有這樣的學(xué)校,就是有專門的學(xué)校也不要去,因?yàn)椴粫?huì)有好的老師的。不要浪費(fèi)你自己(很可能是你父母)的錢和時(shí)間。趁早死了這個(gè)念頭。
關(guān)于培訓(xùn)學(xué)校的這個(gè)我想我要比一般的朋友更有發(fā)言權(quán),因?yàn)槲冶救烁捎⒄Z(yǔ)培訓(xùn)將近2年,我很清楚培訓(xùn)市場(chǎng)的情況,你很難碰到一個(gè)好的老師。英語(yǔ)可能還好些,畢竟英語(yǔ)說(shuō)得好的老師還比較多,長(zhǎng)期跟老外泡在一起,確實(shí)對(duì)口語(yǔ)能力的提高很顯著,但是代價(jià)是很昂貴的。而你現(xiàn)在要學(xué)的是Javascript,呵呵,好的前端工程師可不多!
我的個(gè)人觀點(diǎn),有資格和有能力的教好Javascript的老師,一定要是個(gè)好的有著豐富的前端開發(fā)經(jīng)驗(yàn)的前端工程師。大學(xué)的老師,教授可能他們中很少有人符合這個(gè)要求,而好的前端工程師,都忙著自己的工作去了。剩下的有時(shí)間去教Javascript的人,呵呵,就不多說(shuō)了。
這里也發(fā)點(diǎn)牢騷,我們?cè)诖髮W(xué)校園里學(xué)習(xí)的東西,你學(xué)的時(shí)候根本不知道這個(gè)東西有什么意義,你自己不去鉆研,老師他是不會(huì)告訴你的。在培訓(xùn)學(xué)校,呵呵,也差不多。
如果不是一個(gè)好的前端工程師,他很難告訴你為什么我們現(xiàn)在提倡使用閉包把以前的全局變量放到閉包中作為閉包函數(shù)的局部變量?他也很難對(duì) Javascript變量作用域的相關(guān)知識(shí)跟你講透徹。在Javascript里能夠形成scope(作用域)的東西有哪些?為什么說(shuō)全局變量是魔鬼?閉包又是怎么產(chǎn)生的作用域?等等這樣很基礎(chǔ),但很重要的知識(shí)的意義,他不清楚,將給你聽,讓你明白這些知識(shí)和他們的意義就更困難。
呵呵,所以我的建議,想學(xué)Javascript,還是多跟你的身邊認(rèn)識(shí)的朋友,特別是那些從事前端開發(fā)的工程師多交流和學(xué)習(xí)。自己要多鉆研。呵呵,不認(rèn)識(shí)前端工程師,就到教程網(wǎng)與藍(lán)色理想來(lái)多看看(bbs.blueidea.com,記!這可不是廣告哦。,把你不清楚的問(wèn)題提出來(lái),但是我這里要說(shuō)一個(gè)好的學(xué)習(xí)習(xí)慣。什么時(shí)候提問(wèn)?
什么時(shí)候提問(wèn)?這個(gè)也是問(wèn)題嗎?對(duì)的,很多人,也是很多在校學(xué)生的一個(gè)不好的學(xué)習(xí)習(xí)慣,一有問(wèn)題就問(wèn)別人請(qǐng)求幫助。我個(gè)人這個(gè)是個(gè)壞習(xí)慣。難道問(wèn)問(wèn)題也是個(gè)壞習(xí)慣?對(duì)的,我個(gè)人覺得,你問(wèn)問(wèn)題尋求別人的幫助,應(yīng)該是在你自己已經(jīng)動(dòng)腦經(jīng)思考,通過(guò)各種途徑查閱相關(guān)資料都無(wú)法獲取問(wèn)題的最終解決辦法的情況下再來(lái)提問(wèn)?這樣你已經(jīng)對(duì)你要解決的問(wèn)題做過(guò)研究,有一定了解,你可以更詳細(xì)的告訴別人你想要的答案大概是什么樣的,或者說(shuō)你可以把你想描述的問(wèn)題講的更清楚。這樣別人來(lái)解決你的問(wèn)題的時(shí)候,也可以更快速的作出解答。我想你學(xué)起來(lái),對(duì)這個(gè)問(wèn)題的理解也會(huì)更深刻些。
好了,好像扯得有些遠(yuǎn)了。來(lái)談?wù)勗趺磳W(xué)習(xí)Javascript吧!先給大家潑點(diǎn)冷水,我想告訴你的是:Javascript要比其他的開發(fā)語(yǔ)言都難學(xué)好!
為什么?因?yàn)榫湍壳皝?lái)說(shuō),大家(國(guó)內(nèi)甚至是國(guó)外的程序員)普遍對(duì)Javascript這門編程語(yǔ)言(請(qǐng)?jiān)试S我這么說(shuō))了解和研究得不夠深,至少不像大家對(duì) JAVA,C#等這樣的語(yǔ)言了解的和研究得那么透。所以這個(gè)就引起了另一個(gè)問(wèn)題,現(xiàn)在市面上Javascript的書籍對(duì)Javascript這門語(yǔ)言的講解都不夠深入和全面。當(dāng)然是相對(duì)JAVA,C#這樣的語(yǔ)言來(lái)說(shuō)。所以這就導(dǎo)致了,學(xué)Javascript很困難。當(dāng)然學(xué)任何一門編程語(yǔ)言,特別是學(xué)好,學(xué)精都不容易。
不過(guò)也有好的消息,就是現(xiàn)在大家對(duì)Javascript的重視和更深入的研究,現(xiàn)在Javascript書籍里講解的內(nèi)容也要比4年前質(zhì)量高出太多了,可以這么說(shuō),你現(xiàn)在開始Javascript正是時(shí)候哦!呵呵!所以這里也給大家一個(gè)經(jīng)驗(yàn),買Javascript的書,最好不要買4年前,也就是2005 年前出版的。最好買近兩年出版的書。
說(shuō)到這里,我想說(shuō)說(shuō)一個(gè)現(xiàn)象,隨這大家近幾年對(duì)Javascript的重視和研究,主要是很多傳統(tǒng)的程序員開始學(xué)習(xí)和研究Javascript,他們把面向?qū)ο缶幊痰乃枷霂氲絁avascript的前端開發(fā),極大的促進(jìn)了Javascript的推廣和發(fā)展。這點(diǎn)要十分感謝他們。也許是處于這些程序員的傳統(tǒng)的開發(fā)的思想的影響,現(xiàn)在我們的Javascript庫(kù)如雨后春筍般的出現(xiàn)。
呵呵!JAVA有JAVA的庫(kù)和各種各樣的框架,C#也是模仿JAVA,也是有著豐富的開發(fā)庫(kù)。這些庫(kù)為我們的開發(fā)帶來(lái)了極大的方便,這是個(gè)很不錯(cuò)的事情。所以這些傳統(tǒng)的程序員在從事前端的開發(fā)的時(shí)候,也為自己編寫了庫(kù)。我們很熟悉的就有prototype,jQuery,YUI,Ext等等,我就不一一列舉了。當(dāng)然這些庫(kù)的出現(xiàn)也為我們的前端開發(fā)帶來(lái)了極大的方便,但是事情都有兩面性的,在這些庫(kù)的出現(xiàn)后,在給我們的開發(fā)帶來(lái)便利的同時(shí),也讓我們的很多朋友產(chǎn)生對(duì)庫(kù)的依賴,可能嚴(yán)重點(diǎn)的,沒有庫(kù)了,給他個(gè)記事本(我們姑且不提開發(fā)效率)可能就不知道如何下手了。
如果仔細(xì)想想,這個(gè)也是很可怕的事情。為什么?因?yàn)榇蠹叶疾辉偃セㄐ乃既パ芯縅avascript底層的知識(shí),只是一味的在這些庫(kù)的幫助下,構(gòu)建那些炫目的特效(還好,這些庫(kù)都是免費(fèi)的);蛘吒纱嘀苯佑脛e人寫好的插件。都不知道萬(wàn)一這些庫(kù)要是開始收費(fèi)(只是瞎想想),怎么辦?還有就是這些庫(kù)比如有別有用心的人,在中加點(diǎn)什么惡意的東西,我想很難有人會(huì)從頭到位把一個(gè)庫(kù)研究個(gè)透。你怎么辦?最嚴(yán)重的就是編程能力的下降,但給人的感覺是入門的門檻更底了。不要被“The Write Less, Do More”這樣的廣告迷惑了,因?yàn)樵谀慵虞d這個(gè)庫(kù)的同時(shí),別忘了“Size of your web page is much bigger, or say the size is HUGE".
所以當(dāng)大家使用這些庫(kù)的時(shí)候,我希望大家不僅僅是使用者,也要用心去閱讀這些庫(kù)的代碼,從中學(xué)習(xí)。收獲會(huì)很大的,而且說(shuō)不定,你會(huì)發(fā)現(xiàn)可個(gè)改善地方,甚至是有錯(cuò)誤的地方。這個(gè)是很有可能的。還有就是我剛才提到的,這些庫(kù)的開發(fā)者很多都是從傳統(tǒng)的程序員轉(zhuǎn)型過(guò)來(lái),或者說(shuō)是因?yàn)殚_發(fā)需要而開始學(xué)習(xí) Javascript,很可能會(huì)有錯(cuò)誤;蛘哒f(shuō)受以前學(xué)習(xí)語(yǔ)言的影響,寫的程序更像是在寫其他的語(yǔ)言,而不是寫Javascript,執(zhí)行效率并不高。所以不要迷信庫(kù)。
問(wèn)幾個(gè)問(wèn)題,你清楚jQuery是怎么實(shí)現(xiàn)CSS(3)和XML的XPath選擇器的嗎?jQuery又是怎么實(shí)現(xiàn)eventHandle的?怎么處理其中的瀏覽器兼容性問(wèn)題的?
如果你還不明白我提的問(wèn)題,那么請(qǐng)仔細(xì)看看jQuery是怎么實(shí)現(xiàn)的吧!如果你還讀不懂它,還是多看看我要給你介紹的Javascript的書吧,了解 Javascript的底層和基礎(chǔ)的知識(shí)。讓自己能讀懂jQuery,讓自己不要jQuery也能實(shí)現(xiàn)Dom的拖動(dòng),讓自己也能寫出自己的庫(kù)。當(dāng)然這話我說(shuō)得太大了。不過(guò)只要你是真正研究Javascript和相關(guān)的知識(shí),你也可以做到的。
繞了這么大一圈,現(xiàn)在讓我們正式開始吧,來(lái)介紹幾本學(xué)習(xí)Javascript的書吧。(以下介紹的書都是本人自己購(gòu)買閱讀過(guò)的,對(duì)了我不崇洋,一條真理:不要買中國(guó)人寫的Javascript書)
入門的書:
《Javascript高級(jí)編程技術(shù)》:不要被“高級(jí)”這兩個(gè)字嚇到,這個(gè)書其實(shí)是本很不錯(cuò)的入門的書,因?yàn)檫@本書也很詳細(xì)的介紹了javascript 的全部?jī)?nèi)置對(duì)象和語(yǔ)法,并且介紹了面向?qū)ο蟮乃枷,DOM、BOM的知識(shí),正則表達(dá)式,高級(jí)的DOM處理。Ajax的知識(shí),還是很全面的。而且個(gè)人認(rèn)為這本書對(duì)基礎(chǔ)知識(shí)的介紹并不比其他的同類書遜色。比起《Javascript權(quán)威指南》(我當(dāng)時(shí)買點(diǎn)的是第4版),我覺得更詳細(xì)些和更清楚些。在《指南》的第4版中,我覺得那本書中講的東西有點(diǎn)混亂。感覺一個(gè)知識(shí)點(diǎn)還沒有講清楚,就給你一個(gè)什么類,看得不明不白的。因?yàn)闆]有看《指南》的第五版,所以這里不推薦給大家。而且《高級(jí)編程》這本書要比《指南》便宜不少!陡呒(jí)編程》中也提出了采用功能(future)探測(cè)來(lái)取代瀏覽器版本探測(cè)來(lái)處理腳本兼容性的處理。個(gè)人覺得《指南》有的,這本書也都說(shuō)了。還有我前面提到的,這本書的作者是YAHOO的資深的前端工程師,你可以在他的網(wǎng)站下載到相關(guān)的代碼。
《Javascript DOM 編程藝術(shù)》:我個(gè)人的感覺是學(xué)習(xí)DOM編程的經(jīng)典入門書籍,作者是webstandards.org的創(chuàng)始人之一,書中以淺顯易懂的語(yǔ)言,教你一步一步的來(lái)講解DOM編程,一點(diǎn)點(diǎn)地提升網(wǎng)站的用戶體驗(yàn)。書中一直強(qiáng)調(diào)不唐突的腳本開發(fā),網(wǎng)站要向后兼容,強(qiáng)調(diào)網(wǎng)站的可訪問(wèn)性。這個(gè)也是大家在做前端開發(fā)時(shí)應(yīng)當(dāng)努力追求的,也是必須要有的開發(fā)指導(dǎo)思想?上Ш芏嗟暮笈_(tái)開發(fā)的程序員,根本沒有這個(gè)概念,所以你在開發(fā)的時(shí)候,一定要給你的程序員多。呵呵!
《CSS權(quán)威指南》第三版:做前端開發(fā),你必須要了解CSS,書中對(duì)CSS2的介紹很詳細(xì)了。仔細(xì)的看吧,我每次看的時(shí)候,有會(huì)有新的收獲。
《網(wǎng)站重構(gòu)》、《CSS網(wǎng)站布局實(shí)錄》(唯一一本推薦的國(guó)人寫的書):看完了,你會(huì)知道為什么學(xué)WEB標(biāo)準(zhǔn)?你會(huì)知道前端工程師的工作很重要。
提高階段:
《Javascript DOM 高級(jí)編程》:這本書里不光詳細(xì)的介紹的DOM編程的技巧,也講了使用面向?qū)ο缶幊痰姆椒,使用命名空間來(lái)管理書中所寫的開發(fā)庫(kù),在不斷的學(xué)習(xí)中,你的個(gè)人 DOM Javascript庫(kù)也不斷的充實(shí)。呵呵,就像我前面說(shuō)的,你可以寫出自己的庫(kù)了。當(dāng)然書中的代碼比較松散,還不能運(yùn)用到實(shí)際的企業(yè)級(jí)的開發(fā)中。但是書中對(duì)閉包的介紹和面向?qū)ο蟮拈_發(fā)思想,會(huì)使你對(duì)JS的認(rèn)識(shí)又提高了一個(gè)層次,雖然對(duì)面向?qū)ο箝_發(fā)的講解還不夠深。
《XML開發(fā)指南》:我們知道ajax,其中X就是指的XML,所以要了解XML的相關(guān)知識(shí),你這本書,是一定要看的。看了之后你會(huì)發(fā)現(xiàn)XML要了解的東西實(shí)在太多了,可能跟你了解的東西相比,你才知道點(diǎn)皮毛。對(duì)了,這里說(shuō)下,我并不推薦你使用XML來(lái)作為你的Ajax的程序的數(shù)據(jù)的載體。為什么?因?yàn)楹懿唤?jīng)濟(jì)。你先把數(shù)據(jù)轉(zhuǎn)換成XML文檔,然后再通過(guò)Javascript把XML文檔中的數(shù)據(jù)提出來(lái),把文檔轉(zhuǎn)成數(shù)據(jù)。而瀏覽器對(duì)XPath處理的兼容性的處理,你會(huì)很發(fā)狂的,F(xiàn)在我們有一個(gè)代替他的東西JSON。但是由于XML已經(jīng)是很多標(biāo)準(zhǔn)的默認(rèn)數(shù)據(jù)通訊載體,比如RSS等,所以你還是得掌握。
個(gè)人覺得學(xué)Javascript看這些書基本差不多了。當(dāng)然這些書也建議你看看《精通Javascript》、《PPK 談 Javascript》、《CSS高級(jí)技巧》、《Ajax in Action》、《Ajax高級(jí)編程》、《JavaScript:The Good Parts(影印版)》。
看完這些書,你了解了Javascript的相關(guān)知識(shí),了解了CSS(你會(huì)知道CSS都有哪些選擇器),你了解了XML的知識(shí)。呵呵,基礎(chǔ)的開發(fā)你應(yīng)該都可以自己解決了。而且你對(duì)Javascript的面向?qū)ο蟮拈_發(fā)也有了了解,有著向后兼容的開發(fā)思想。顯然你看完這些書,你對(duì)WEB標(biāo)準(zhǔn)也會(huì)有一個(gè)更深層次的理解。
當(dāng)然,想成為一個(gè)優(yōu)秀的前端工程師,你要學(xué)習(xí)的知識(shí)并不只有這些,你也要知道SEO的優(yōu)化知識(shí),因?yàn)槟銓懙捻?yè)面要對(duì)搜索引擎也要友好,要結(jié)構(gòu)合理。你還要了解SQL和數(shù)據(jù)庫(kù),最好還要了解C#等后臺(tái)編程的語(yǔ)言。兩個(gè)主要原因,要全面的提高自己,而且要充分的理解面向?qū)ο蟮木幊,這些傳統(tǒng)語(yǔ)言的思想更成熟,但要知道Javascript跟這些傳統(tǒng)的編程語(yǔ)言的繼承機(jī)制是不一樣的。所以不要用Javascript來(lái)寫C#。還有一個(gè)重要的原因,你要跟后臺(tái)的程序員合作,要他們更堅(jiān)決的執(zhí)行你的不唐突的開發(fā)思想,你必須要經(jīng)常給他們。但是你說(shuō)的話要讓他們聽得進(jìn)去,他說(shuō)的東西你要了解,而你最好也能給他一些有好的建議,他們才會(huì)聽你的。為了我們WEB標(biāo)準(zhǔn)的開展,辛苦點(diǎn)就辛苦點(diǎn)吧!
這里要補(bǔ)充的就是,前端開發(fā)你要自己努力學(xué)習(xí)還有JSON和正則表達(dá)式,目前還沒有很詳細(xì)的介紹正則的書,然后就是AJAX程序中取代XML的JSON的數(shù)據(jù)載體,掌握J(rèn)SON要比XML容易得多。最后就是大家也是我提到過(guò)很多次的閉包的使用,面向?qū)ο蟮拈_發(fā)的思想。
呵呵,最后就是多練習(xí),把你學(xué)到知識(shí)運(yùn)用到實(shí)際的開發(fā)中,常跟朋友多交流,我也希望能跟大家多交流心得。大家共同進(jìn)步!
【Javascript自學(xué)方法攻略參考】相關(guān)文章:
法國(guó)留學(xué)攻略參考11-30
日語(yǔ)自學(xué)方法06-14
日本留學(xué)獎(jiǎng)學(xué)金申請(qǐng)攻略參考09-25
對(duì)javascript的理解08-08
關(guān)于美國(guó)留學(xué)高中申請(qǐng)攻略參考09-24
荷蘭留學(xué)就業(yè)全攻略參考01-01
關(guān)于加拿大留學(xué)后就業(yè)攻略參考08-04
常用的JavaScript模式09-22