如何編寫一個(gè)JS庫(kù)

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

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

普通的庫(kù)

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

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

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

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

jQuery 插件###

通過(guò)一下方法可以使的插件可以 跨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這倆項(xiàng)目來(lái)進(jìn)行分析,

初始化###

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

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

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

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

i18n與配置管理###

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

THE END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容