如何編寫一個JS庫

編寫js/jQuery插件有一些約定俗成的套路,根據(jù)這些套路依葫蘆畫瓢,代碼的結(jié)構(gòu)上就不會出現(xiàn)太大的問題了,特別推薦這個叫 javascript-patterns 的項目,一些demo讓我收獲良多。

基本結(jié)構(gòu)

普通的庫

用最基本的匿名函數(shù)實(shí)現(xiàn)即可

(function(){
    var root = this;
    root.YOURLIB = function(){
        FUNC1 : function(){},
        FUNC2 : function(){}
    }
}())

也可以使用call而不是使用閉包,此時兩種寫法等效,undersocre.js用的是call寫法

(function(){
    var root = this;
    root.YOURLIB = function(){
        FUNC1 : function(){},
        FUNC2 : function(){}
    }
}.call(this))

jQuery 插件###

通過一下方法可以使的插件可以 跨CMD/AMD/Browser

(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        // CommonJS
        factory(require('jquery'));
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function ($) {

    $.fn.render = function() {}
    $.render2 = function() {}
}))

當(dāng)然,如果不考慮Seajs,RequireJS的話,最方便的還是使用匿名函數(shù),然后把window.jQuery當(dāng)成參數(shù)傳進(jìn)去

內(nèi)部組織

我們以 bootstrap-select v1.6.3,smooth-scroll這倆項目來進(jìn)行分析,

初始化###

一般的Library都會提供一套defaults配置文件,然后使用的時候和用戶自定義的settings進(jìn)行extend, smooth-scroll中的那種

settings = extend(defaults, options ||{})); 寫法就相當(dāng)贊,可以以一種十分簡單的方式防止空指針異常

剩下的就是根據(jù)業(yè)務(wù)劃分業(yè)務(wù)的funciton了,對于如何劃分,只有多加練習(xí)了。

另外,在注釋里像寫上 privatepublic 來區(qū)分對外接口和對內(nèi)接口是個不錯的習(xí)慣。

i18n與配置管理###

i18n是吧那些國際話的字符全都放到defautls,比較優(yōu)雅的做法是defaults定義一個對象,這樣國際化文件
便能和原有的庫文件進(jìn)行分離,具體參考 bootstrap-datapicker

THE END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容