注冊(cè)

微信小程序模塊化,微信小程序文件作用域

2017-12-22
導(dǎo)讀:文件作用域 在JavaScript文件中聲明的變量和函數(shù)只在該文件中有效;不同的文件中可以聲明相同名字的變量和函數(shù),不會(huì)互相影響。 通過(guò)全局函數(shù) getApp() 可以獲取全局的應(yīng)用實(shí)例,如果...

文件作用域

在JavaScript文件中聲明的變量和函數(shù)只在該文件中有效;不同的文件中可以聲明相同名字的變量和函數(shù),不會(huì)互相影響。

通過(guò)全局函數(shù)getApp()可以獲取全局的應(yīng)用實(shí)例,如果需要全局的數(shù)據(jù)可以在App()中設(shè)置,如:

// app.js
App({
  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)

模塊化

我們可以將一些公共的代碼抽離成為一個(gè)單獨(dú)的js文件,作為一個(gè)模塊。模塊只有通過(guò)module.exports或者 exports才能對(duì)外暴露接口。

需要注意的是:

  • exportsmodule.exports的一個(gè)引用,因此在模塊里邊隨意更改exports的指向會(huì)造成未知的錯(cuò)誤。所以我們更推薦開(kāi)發(fā)者采用module.exports來(lái)暴露模塊接口,除非你已經(jīng)清晰知道這兩者的關(guān)系。
  • 小程序目前不支持直接引入node_modules,開(kāi)發(fā)者需要使用到node_modules時(shí)候建議拷貝出相關(guān)的代碼到小程序的目錄中。

// common.js
function 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

1. tip:require暫時(shí)不支持絕對(duì)路徑

 

更多微信小程序開(kāi)發(fā)教程,可以關(guān)注hi小程序。
重磅推薦:小程序開(kāi)店目錄

第一部分:小商店是什么

第二部分:如何開(kāi)通一個(gè)小商店

第三部分:如何登錄小商店

第四部分:開(kāi)店任務(wù)常見(jiàn)問(wèn)題

第五部分:小商店可以賣什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收貨/物流

第九部分:小程序怎么結(jié)算

第十部分:小程序客服

第十一部分:電商創(chuàng)業(yè)

第十二部分:小程序游戲開(kāi)發(fā)