Skip to content

模組化

require

引入模塊。 返回模塊通過 module.exports 或exports暴露的接口。

需要引入其他分包的模塊的時候,可以通過配置callback回呼函數來非同步獲取指定模塊。 非同步獲取失敗的時候,將會觸發error回呼函數。

參數

名稱類型是否必填必填
pathstring需要引入模塊文件相對於當前文件的相對路徑,或npm模塊名,或npm模塊路徑。 默認不支持絕對路徑,可通過配置resolveAlias自定義路徑映射
callbackfunction非同步加載成功回呼函數,該回呼函數參數為成功加載的模塊
errorfunction非同步加載失敗回呼函數,該回呼函數參數為錯誤資訊和模塊名

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 = sayGoodbye
js
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

當前模塊對象

内容

内容類型說明
exportsObject模塊向外暴露的對象,使用require引用該模塊時可以獲取

示例代碼:

js
// common.js
function sayHello(name) {
  console.log(`Hello ${name} !`)
}
function sayGoodbye(name) {
  console.log(`Goodbye ${name} !`)
}


module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye

exports

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