模組化
require
引入模塊。 返回模塊通過 module.exports 或exports暴露的接口。
需要引入其他分包的模塊的時候,可以通過配置callback回呼函數來非同步獲取指定模塊。 非同步獲取失敗的時候,將會觸發error回呼函數。
參數
| 名稱 | 類型 | 是否必填 | 必填 |
|---|---|---|---|
| path | string | 是 | 需要引入模塊文件相對於當前文件的相對路徑,或npm模塊名,或npm模塊路徑。 默認不支持絕對路徑,可通過配置resolveAlias自定義路徑映射 |
| callback | function | 否 | 非同步加載成功回呼函數,該回呼函數參數為成功加載的模塊 |
| error | function | 否 | 非同步加載失敗回呼函數,該回呼函數參數為錯誤資訊和模塊名 |
require.async鏈式調用
可以通過鏈式調用的管道使用
js
require
.async('path/to/mod')
.then((mod) => {
console.log(mod)
})
.catch(({ errMsg, mod }) => {
console.error(`path: ${mod}, ${errMsg}`)
})示例代碼:
同一包內調用
js
// common.js
function sayHello(name) {
console.log(`Hello ${name} !`)
}
function sayGoodbye(name) {
console.log(`Goodbye ${name} !`)
}
module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbyejs
var common = require('common.js')
Page({
helloMINA: function() {
common.sayHello('MINA')
},
goodbyeMINA: function() {
common.sayGoodbye('MINA')
}
})跨分包異步調用
js
// subpackage/common.js Subcontracting common files
export const sayHello = () => console.log("hello")js
// pages/index.js main package page
let common;
require('../../subpackage/common.js', (mod) => {
common = mod
}, ({ errMsg, mod }) => {
console.error(`path: ${mod}, ${errMsg}`)
})
Page({
sayHello() {
common && common.sayHello()
}
})module
Object module
當前模塊對象
内容
| 内容 | 類型 | 說明 |
|---|---|---|
| exports | Object | 模塊向外暴露的對象,使用require引用該模塊時可以獲取 |
示例代碼:
js
// common.js
function sayHello(name) {
console.log(`Hello ${name} !`)
}
function sayGoodbye(name) {
console.log(`Goodbye ${name} !`)
}
module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbyeexports
Object exports
module.exports的引用。
示例代碼:
js
// common.js
function sayHello(name) {
console.log(`Hello ${name} !`)
}
function sayGoodbye(name) {
console.log(`Goodbye ${name} !`)
}
module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye