由於專案原因,工作一年多還沒用js寫過外掛程式,專案太成熟,平時基本都是在使用已經封裝好的功能外掛程式。感覺自己好low......這兩天想自己抽空寫乙個canvas畫統計圖與折現圖的外掛程式,所以就去網上學習了下如何封裝.....雖然之前看了很多原始碼,但是感覺就算了解也是野路子.....
什麼是封裝呢?
我的理解就是 把乙個功能單獨做成乙個元件,就像做餃子,以前做餃子必須自己先用麵粉做餃子皮,再做餃子餡,然後再手工包餃子,但是現在人們發明了自動包餃子機器,雖然機器裡面的每一步驟和你自己包餃子是一樣的,但是實際上你現在需要做的就只有一件事,就是放原料。這邊機器就是封裝好的外掛程式,而原料就是你要傳的引數
為什麼要把js功能封裝成外掛程式呢?我覺得有以下幾點吧
1、便於**復用
2、避免各個相同功能元件的干擾,可能會有作用域的一些問題吧
3、便於維護,同時利於專案積累
4、不覺得一直複製貼上很low麼.......
我在網上看到的封裝好像有兩種,一種是js的原生封裝,一種是jquery的封裝。這邊我先講一下原生封裝吧。
我們在封裝的時候會把js**放到乙個自執行函式裡面,這樣可以防止變數衝突。
(function()()}然後再建立乙個建構函式
(function()把這個函式暴露給外部,以便全域性呼叫}())
(function其實現在你可以直接呼叫了,封裝好了,雖然沒實現什麼功能() window.demo =demo;
}())
var ss = new然後傳參怎麼搞呢,我們乙個外掛程式一般有一些必選引數或者可選引數,在我看來可選引數不過就是在外掛程式裡面給了預設值罷了。我們傳的引數會覆蓋外掛程式中的預設引數,可以用$.extend({})覆蓋demo();
或者new
demo();
(function(),options)然後你可以在在初始化建構函式的時候執行一些操作}window.demo = demo;
}())
就是這樣了。乙個超級簡單的封裝
我這邊有個疑問,extend只是jquery有嗎,js物件有什麼代替方法嗎?晚點在看看.............
還有需要提的是封裝js的時候我們要考慮周全,比如它的擴充套件性和相容性,還有效能怎麼樣,還有沒必要的就不需要封裝了......要有選擇性。
現在網上已經完成的外掛程式數不勝數,而且功能又十分強大,但是恰恰是這點,有的時候乙個很大的外掛程式我們只用到很小的一部分,那麼就需要我們自己修改成適合我們自己的了,而且有些專案的風格和現在的外掛程式風格也不同,所以關鍵是要適合自己的專案。
隔日不上
看了下jquery封裝
感覺就是把window物件換成了jquery物件?
(function呼叫的時候($))
};})(jquery);
$("#xx").demo();
封裝成外掛程式 Toast
需求 經常會有提示框,多個頁面使用,但是提示框的大小 icon圖示等會變化。思路 多個頁面使用,可以封裝成全域性元件。但是需要多次引人標籤,有點繁瑣。this.refs.tip.showtoast import toast from toast const obj obj.install funct...
js封裝成物件
將js封裝成物件物件去處理好處多多。在這裡做乙個記錄 先寫乙個簡單的例子 function userclass id,user return userobj 把真個物件返回 這樣一例項化 方法每一次都會給我建立並返回乙個嶄新的有屬性和方法的物件 var user new userclass 1,張三...
封裝JS外掛程式
jquery 根據json物件填充form表單 author en param fromid form表單id param jsondate json物件 上面的是樣式還是 的注釋 解釋。反正是自己封裝js 的第一步。封裝js的 就是為了方便使用,就比如可以封裝一些常用的 不用重複書寫多次。func...