當新手使用JS庫遇到問題怎么辦


見標題,知其意。在做網站時候,其實我們會用很多JS庫,網絡上流行的和公司自己封裝的,這些東西都很好用,但是或多或少的有些bug或者有一些缺陷,即使真的很完善,但也可能達不到自己特定的一些需求。所以遇到問題,是很正常的。但是為什么要說是新手遇到問題呢?這就是因為,有些問題,工作幾年的攻城獅,輕而易舉的就解決了,所以對於他們這些根本不是問題,或者對於他們這些就是私人定制而已。

其實我也是這樣走過來的,如果叫我自己完全封裝一個非常強悍的JS庫,我肯定是沒有辦法做的,不是因為技術,而是經驗不夠,因為考慮的需要非常多的因素。就如ORM一樣,我們會用非常成熟的,而不會自己去封裝。

不說這么多了,下面開始講講如何解決我們在生產環境當中遇到問題怎么辦?當時我這里也要為大家講一下前提條件,即准入知識,只有這樣大家才有能力去解決問題的。

一、准入知識
a) JQuery&JS

這個兩個基本的必須得懂,具體的可以去http://www.w3school.com.cn學習

b) JS面向對象

參見:http://www.cnblogs.com/gaojun/archive/2013/10/24/3386552.html該博主也是參見《JavaScript 高級程序設計》這本說的,所以該博文對面向對象講的很到位,有些我沒有注意到過。

c) JQuery&JS擴展方法的實現

其實大家應該都遇到過,通過前台腳本,去除字符串前后,JQuery和JS,都沒有公共的方法,我也不知道是為什么,還說所的就是替換字符串的,盡然默認只替換第一個匹配的。這里也有現成的博文,供大家閱讀

JQuery: http://www.cnblogs.com/xcj26/p/3345556.html

JS: http://www.cnblogs.com/kissdodog/p/3386480.html

這兩篇文章都很不錯,特別是JQuery這篇讓我也明白了一些以前不知道的。

這里小小的總結下,請各位讀者按照a,b,c的順序進行知識准備,其實這個就是一個技術的升華,其實這些都沒有多難,只是我們以前沒有了解過。所以現在我們有必要把知識掌握了方便以后工作當中使用

二、讀懂別人的JS庫中的代碼

這個很重要,你連別人的代碼都讀不懂,談什么修改別人的代碼或者擴展別人的代碼。當時我相信,只要大家達到了准入知識,讀一些不是非常復雜的代碼,我相信沒有多大的我問題。所以掌握基礎是關鍵,來不得半點虛假。

我們讀別人的代碼要膽大心細,大家都是寫程序的,JS庫也是人寫出來的,其他比我們強,還是要按JS語法來實現,只是比我們寫作水平高而已。就如我們高考作文拿不到滿分,但是不至於連滿分作文都看不懂了吧。要是這樣的話我就為你捉急了啊。

三、嘗試修改JS庫中的代碼

終於到了這個環節了,但是我要強調一下,不要輕易去修改網絡上流行的代碼。這里本來就是將如何修改代碼,但是為什么又不要輕易去修改呢?大家不要疑惑,不讓修改是考慮到,這些JS庫,有非常專業的團隊在維護,代碼嚴謹性非常高,如果你改了,很可能影響整個JS庫的使用。即使真是一個Bug或者需要個人定制功能,建議重新實現和擴展。這樣有利於JS庫的升級和自己實現的代碼可以獨立未獲。如果你真的修改了JS庫的代碼,請記住,一定要記錄到文檔,否者升級了JS庫,你所修改的代碼就會被覆蓋,你做工作就白費了。通常慣例,也是允許修改庫代碼的,所以大家要謹記。

這里我就以我在工作當中遇到的一個例子,來給大家講解。

看到右側有一個本地保存的提示信息了吧,很多人都想把這個信息給去除,官方也提供的關閉參數,但是無法達到我們預期不提示的效果,但是把自動保存間隔時間設計很長時間,似乎就能達到預期效果,但是這個方法確實是不太合理的。

首先我們是要找到這段提示的出處

通過上圖我們看到,其實這個就是一個配置文件,如何使用,我們可以靠猜,首先我們看到這個值對應的鍵名是success,一看這個,就知道很難找的,但是我們又看到autosave這個節點名稱,我們想都不想,這個節點肯定會出現在代碼里。我們就拿這個去搜索,看下兩張圖。

這是我找到最可能是導致提示信息出現的兩段代碼。我們可以細細讀一下這些兩段代碼,看看各是什么用途

這里提供一個博文:http://www.kissthink.com/archive/--4232.html

這里可以讓我們知道,第二張圖,其實就是為了讓自動保存允許起來,所以我們放到第一張圖。

我們發現了這關鍵字,有沒有印象,這個關鍵字是在哪里見過,對這個就是配置文件里的,我們開始的時候就說,設置間隔時間起效過,設置啟用自動保存這個參數卻不見作用,這樣我們所搜下關鍵字enableAutoSave,整個庫里面都找不到。這個說明這個功能根本沒有實現。

我們把這個產生在代碼里使用上級可以了。結果如下圖:

總結,這里只是為了實現效果,其他地方的代碼我沒有去深究,但是我想這樣修改應該不會影響其他地方。我認為修改別人的代碼不能,難的是修改后不會導致新的問題參數。再次強調,不要輕易跟我一樣再代碼里做修改。如果能找到代碼外的實現方式是最好的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM