文件作用域
在 JavaScript 文件中聲明的變量和函數只在該文件中有效;不同的文件中可以聲明相同名字的變量和函數,不會互相影響。
通過全局函數 getApp()
可以獲取全局的應用實例,如果需要全局的數據可以在 App()
中設置,如:
// app.jsApp({
globalData: 1})
// a.js// The localValue can only be used in file a.js.var localValue = 'a'// Get the app instance.var app = getApp()// Get the global data and change it.app.globalData++
// b.js// You can redefine localValue in file b.js, without interference with the localValue in a.js.var localValue = 'b'// If a.js it run before b.js, now the globalData shoule be 2.console.log(getApp().globalData)
模塊化
可以將一些公共的代碼抽離成為一個單獨的 js 文件,作為一個模塊。模塊只有通過 module.exports
或者 exports
才能對外暴露接口。
需要注意的是:
exports
是 module.exports
的一個引用,因此在模塊里邊隨意更改 exports
的指向會造成未知的錯誤。所以更推薦開發者采用 module.exports
來暴露模塊接口,除非你已經清晰知道這兩者的關系。
小程序目前不支持直接引入 node_modules
, 開發者需要使用到 node_modules
時候建議拷貝出相關的代碼到小程序的目錄中。
// common.jsfunction sayHello(name) { console.log(`Hello ${name} !`)
}function sayGoodbye(name) { console.log(`Goodbye ${name} !`)
}module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye
在需要使用這些模塊的文件中,使用 require(path)
將公共代碼引入
var common = require('common.js')
Page({
helloMINA: function() {
common.sayHello('MINA')
},
goodbyeMINA: function() {
common.sayGoodbye('MINA')
}
})
Tips
tip
: require 暫時不支持絕對路徑