1.6.Module
模組化的好處
模組
當要為相同介面產生多個實作時, 可撰寫一個預設實作作為原型, 可使用stampit(https://github.com/stampit-org/stampit)
stampit: a coposable factory
stampit.init
初始化property, 可傳入參數
example:
// Allow dbConnection to be passed from outside. const AcceptsDbConnection = stampit() .init(function ({dbConnection}) { this.dbConnection = dbConnection; });
stampit.props
當初始化完成後指定進行後續動作,或是可以賦值給property *example:
// Assigns the default connection string. const DefaultConnectionConfig = stampit() .init(function ({connectionConfig}) { // can pass the string as factory argument this.connectionConfig = connectionConfig; }) .props({ // if nothing was passed this value will be used connectionConfig: require('./config.json').db.connection });
stampit.methods
定義function
example:
// Adds .log() method to factory instantiated objects. const Logger = stampit() .methods({ log: console.log });
stampit.compose
允許繼承任意數量的來源 (with last-in priority.)
example:
// The connection object. const DbConnection = stampit() .props({ // Assigns the mongoose connection object. dbConnection: mongoose.connection }) .compose( Logger, // add logging capability via this.log() DefaultConnectionConfig, // add the default this.connectionConfig value AcceptsDbConnection // allow passing dbConnection as argument ) .init(function () { // Connecting to the DB upon creating an object. if (!this.dbConnection.readyState) { this.dbConnection.open(this.connectionConfig); this.log('Opening a DB connection'); } }) .methods({ // A method to close the connection. close() { if (this.dbConnection.readyState) { this.dbConnection.close(); this.log('Closing the DB connection'); } } });
常見的模組
模組模式 (module pattern)
非同步模組定義 (AMD)
AMD模組載入器
Require.js
Curl.js
CommonJS模組規範
是一個由CommonJS group所定出的module format, 是在Node上使用的模組撰寫風格
webpack 也是遵循這個規範
匯出: export
匯入: require
Last updated
Was this helpful?