當(dāng)新手使用JS庫(kù)遇到問(wèn)題怎么辦
見(jiàn)標(biāo)題,知其意。在做網(wǎng)站時(shí)候,其實(shí)我們會(huì)用很多JS庫(kù),網(wǎng)絡(luò)上流行的和公司自己封裝的,這些東西都很好用,但是或多或少的有些bug或者有一些缺陷,即使真的很完善,但也可能達(dá)不到自己特定的一些需求。所以遇到問(wèn)題,是很正常的。但是為什么要說(shuō)是新手遇到問(wèn)題呢?這就是因?yàn)椋行﹩?wèn)題,工作幾年的攻城獅,輕而易舉的就解決了,所以對(duì)于他們這些根本不是問(wèn)題,或者對(duì)于他們這些就是私人定制而已。
其實(shí)我也是這樣走過(guò)來(lái)的,如果叫我自己完全封裝一個(gè)非常強(qiáng)悍的JS庫(kù),我肯定是沒(méi)有辦法做的,不是因?yàn)榧夹g(shù),而是經(jīng)驗(yàn)不夠,因?yàn)榭紤]的需要非常多的因素。就如ORM一樣,我們會(huì)用非常成熟的,而不會(huì)自己去封裝。
不說(shuō)這么多了,下面開(kāi)始講講如何解決我們?cè)谏a(chǎn)環(huán)境當(dāng)中遇到問(wèn)題怎么辦?當(dāng)時(shí)我這里也要為大家講一下前提條件,即準(zhǔn)入知識(shí),只有這樣大家才有能力去解決問(wèn)題的。
一、準(zhǔn)入知識(shí)
a) JQuery&JS
這個(gè)兩個(gè)基本的必須得懂,具體的可以去http://www.w3school.com.cn學(xué)習(xí)
b) JS面向?qū)ο?/p>
參見(jiàn):http://www.cnblogs.com/gaojun/archive/2013/10/24/3386552.html該博主也是參見(jiàn)《JavaScript 高級(jí)程序設(shè)計(jì)》這本說(shuō)的,所以該博文對(duì)面向?qū)ο笾v的很到位,有些我沒(méi)有注意到過(guò)。
c) JQuery&JS擴(kuò)展方法的實(shí)現(xiàn)
其實(shí)大家應(yīng)該都遇到過(guò),通過(guò)前臺(tái)腳本,去除字符串前后,JQuery和JS,都沒(méi)有公共的方法,我也不知道是為什么,還說(shuō)所的就是替換字符串的,盡然默認(rèn)只替換***個(gè)匹配的。這里也有現(xiàn)成的博文,供大家閱讀
JQuery: http://www.cnblogs.com/xcj26/p/3345556.html
JS: http://www.cnblogs.com/kissdodog/p/3386480.html
這兩篇文章都很不錯(cuò),特別是JQuery這篇讓我也明白了一些以前不知道的。
這里小小的總結(jié)下,請(qǐng)各位讀者按照a,b,c的順序進(jìn)行知識(shí)準(zhǔn)備,其實(shí)這個(gè)就是一個(gè)技術(shù)的升華,其實(shí)這些都沒(méi)有多難,只是我們以前沒(méi)有了解過(guò)。所以現(xiàn)在我們有必要把知識(shí)掌握了方便以后工作當(dāng)中使用
二、讀懂別人的JS庫(kù)中的代碼
這個(gè)很重要,你連別人的代碼都讀不懂,談什么修改別人的代碼或者擴(kuò)展別人的代碼。當(dāng)時(shí)我相信,只要大家達(dá)到了準(zhǔn)入知識(shí),讀一些不是非常復(fù)雜的代碼,我相信沒(méi)有多大的我問(wèn)題。所以掌握基礎(chǔ)是關(guān)鍵,來(lái)不得半點(diǎn)虛假。
我們讀別人的代碼要膽大心細(xì),大家都是寫(xiě)程序的,JS庫(kù)也是人寫(xiě)出來(lái)的,其他比我們強(qiáng),還是要按JS語(yǔ)法來(lái)實(shí)現(xiàn),只是比我們寫(xiě)作水平高而已。就如我們高考作文拿不到滿分,但是不至于連滿分作文都看不懂了吧。要是這樣的話我就為你捉急了啊。
三、嘗試修改JS庫(kù)中的代碼
終于到了這個(gè)環(huán)節(jié)了,但是我要強(qiáng)調(diào)一下,不要輕易去修改網(wǎng)絡(luò)上流行的代碼。這里本來(lái)就是將如何修改代碼,但是為什么又不要輕易去修改呢?大家不要疑惑,不讓修改是考慮到,這些JS庫(kù),有非常專業(yè)的團(tuán)隊(duì)在維護(hù),代碼嚴(yán)謹(jǐn)性非常高,如果你改了,很可能影響整個(gè)JS庫(kù)的使用。即使真是一個(gè)Bug或者需要個(gè)人定制功能,建議重新實(shí)現(xiàn)和擴(kuò)展。這樣有利于JS庫(kù)的升級(jí)和自己實(shí)現(xiàn)的代碼可以獨(dú)立未獲。如果你真的修改了JS庫(kù)的代碼,請(qǐng)記住,一定要記錄到文檔,否者升級(jí)了JS庫(kù),你所修改的代碼就會(huì)被覆蓋,你做工作就白費(fèi)了。通常慣例,也是允許修改庫(kù)代碼的,所以大家要謹(jǐn)記。
這里我就以我在工作當(dāng)中遇到的一個(gè)例子,來(lái)給大家講解。
看到右側(cè)有一個(gè)本地保存的提示信息了吧,很多人都想把這個(gè)信息給去除,官方也提供的關(guān)閉參數(shù),但是無(wú)法達(dá)到我們預(yù)期不提示的效果,但是把自動(dòng)保存間隔時(shí)間設(shè)計(jì)很長(zhǎng)時(shí)間,似乎就能達(dá)到預(yù)期效果,但是這個(gè)方法確實(shí)是不太合理的。
首先我們是要找到這段提示的出處
通過(guò)上圖我們看到,其實(shí)這個(gè)就是一個(gè)配置文件,如何使用,我們可以靠猜,首先我們看到這個(gè)值對(duì)應(yīng)的鍵名是success,一看這個(gè),就知道很難找的,但是我們又看到autosave這個(gè)節(jié)點(diǎn)名稱,我們想都不想,這個(gè)節(jié)點(diǎn)肯定會(huì)出現(xiàn)在代碼里。我們就拿這個(gè)去搜索,看下兩張圖。
這是我找到最可能是導(dǎo)致提示信息出現(xiàn)的兩段代碼。我們可以細(xì)細(xì)讀一下這些兩段代碼,看看各是什么用途
這里提供一個(gè)博文:http://www.kissthink.com/archive/--4232.html
這里可以讓我們知道,第二張圖,其實(shí)就是為了讓自動(dòng)保存允許起來(lái),所以我們放到***張圖。
我們發(fā)現(xiàn)了這關(guān)鍵字,有沒(méi)有印象,這個(gè)關(guān)鍵字是在哪里見(jiàn)過(guò),對(duì)這個(gè)就是配置文件里的,我們開(kāi)始的時(shí)候就說(shuō),設(shè)置間隔時(shí)間起效過(guò),設(shè)置啟用自動(dòng)保存這個(gè)參數(shù)卻不見(jiàn)作用,這樣我們所搜下關(guān)鍵字enableAutoSave,整個(gè)庫(kù)里面都找不到。這個(gè)說(shuō)明這個(gè)功能根本沒(méi)有實(shí)現(xiàn)。
我們把這個(gè)產(chǎn)生在代碼里使用上級(jí)可以了。結(jié)果如下圖:
總結(jié),這里只是為了實(shí)現(xiàn)效果,其他地方的代碼我沒(méi)有去深究,但是我想這樣修改應(yīng)該不會(huì)影響其他地方。我認(rèn)為修改別人的代碼不能,難的是修改后不會(huì)導(dǎo)致新的問(wèn)題參數(shù)。再次強(qiáng)調(diào),不要輕易跟我一樣再代碼里做修改。如果能找到代碼外的實(shí)現(xiàn)方式是***的。
版權(quán)聲明:
本文由z-albert原創(chuàng)并發(fā)布于博客園,歡迎轉(zhuǎn)載,未經(jīng)本人同意不可以修改原文內(nèi)容且必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文鏈接,否則保留追究法律責(zé)任的權(quán)利。如有問(wèn)題,歡迎留言,也可以通過(guò)y442926727@qq.com 聯(lián)系我,非常感謝。
由于本人技術(shù)能力和文字表達(dá)能力有限,若有描述錯(cuò)誤或描述不清,懇請(qǐng)批評(píng)指正!有興趣者可加群:144063225參與交流
更多內(nèi)容,敬請(qǐng)觀注博客:http://www.cnblogs.com/z-albert/