亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓自己寫的代碼支持commonjs規范?

如何讓自己寫的代碼支持commonjs規范?

滄海一幻覺 2018-08-07 13:13:24
假如我有一個es.js 這個庫一開始是個空對象,我讓它支持commonjs規范,封裝了一下。然后我希望自己慢慢寫插件 比如 es.Klass.js es.validate.js,這些插件也想用commonjs規范封裝,但是插件和插件之間有可能還有復用關系,應該怎么辦呢?就好比es.validate會用到es.Klass然后我寫代碼的時候必須是 var es = require('es');var Klass = require('es.Klass');var Validate = require('es.Validate');//上面三行代碼該死的順序還不能顛倒 new Validate();我希望可以直接寫成var Validate = require('es.Validate');new Validate();請問如何實現代碼的封裝????
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

無語。你這插件明明用的AMD的規范,為什么標題要說是commonjs, - -!

借助requirejs,聲明依賴關系就行了。如果兩個模塊引入順序不同會造成不同的結果,那么一般來說是依賴關系造成的。

比如我要編寫一個叫做demo.js的插件,demo1.js與demo2.js都是它的模塊

// demo1.js define(function() {    return {    
        xxxx: 'hello'
    }
})
// demo2.js 依賴于demo1.jsdefine(function() {    var d1 = require('./demo1.js');    
    return {        message: d1.xxxx + ' world!'
    }
})
// demo.js 依賴于demo2.js// 聲明依賴的另外一種寫法define(['./demo2.js'], function(d2) {    return {    
        getMessage: function() {            return d2.message
        }
    }
})

也可以在代碼中這樣寫

// commonjsif(typeof module !== 'undefined' && module.exports) {    module.exports = myPlugin;
}// amd requireelse if(typeof define !== 'undefined' && define.amd) {
    define('myPlugin', [], function() {        return myPlugin;
    })
}else {    window.myPlugin = myPlugin
}


查看完整回答
反對 回復 2018-09-20
  • 1 回答
  • 0 關注
  • 938 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號