Modular


Skop Fail

Pembolehubah dan fungsi yang diisytiharkan dalam fail JavaScript hanya sah dalam fail tersebut dan fungsi dengan nama yang sama boleh diisytiharkan dalam fail yang berbeza tanpa menjejaskan satu sama lain.

Aplikasi global boleh diperolehi melalui fungsi global getApp() Jika data global diperlukan, ia boleh ditetapkan dalam App(), seperti: 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 是 module.exports 的一个引用,因此在模块里边随意更改 exports 的指向会造成未知的错误。所以我们更推荐开发者采用 module.exports 来暴露模块接口,除非你已经清晰知道这两者的关系。
  • 小程序目前不支持直接引入 node_modules , 开发者需要使用到 node_modules 时候建议拷贝出相关的代码到小程序的目录中。


// common.js
function sayHello(name) {
  console.log('Hello ' + name + '!')
}
module.exports = {
  sayHello: sayHello
}

在需要使用这些模块的文件中,使用require(path).

var common = require('common.js')
Page({
  helloMINA: function() {
    common.sayHello('MINA')
  }
})
rrreeerrreee

Modularization

Kami boleh mengekstrak beberapa kod biasa ke dalam fail js yang berasingan sebagai modul. Modul hanya boleh mendedahkan antara muka kepada dunia luar melalui module.exports.

Perlu diambil perhatian bahawa:

  • eksport ialah rujukan kepada module.exports, jadi menukar penunjuk eksport dalam modul akan menyebabkan Punca ralat yang tidak diketahui. Oleh itu, kami mengesyorkan pembangun menggunakan module.exports untuk mendedahkan antara muka modul, melainkan anda sudah mengetahui dengan jelas hubungan antara kedua-duanya.
  • Program mini pada masa ini tidak menyokong pengenalan langsung node_modules Apabila pembangun perlu menggunakan node_modules, adalah disyorkan untuk menyalin kod yang berkaitan ke direktori mini. program.

rrreee

Dalam fail yang perlu menggunakan modul ini, gunakan require(path) untuk memperkenalkan kod awam.

rrreee

Sintaks ES6 dan sokongan API

Aplet WeChat berjalan pada tiga terminal: iOS, Android dan alat pembangun untuk penyahpepijatan

  • Pada iOS, kod javascript applet berjalan dalam JavaScriptCore
  • Pada Android Pada alat pembangunan, alat pembangunan kod javascript program mini dihuraikan melalui masih terdapat beberapa perbezaan, yang telah menyebabkan masalah besar kepada banyak pembangun.
Dalam alat pembangunan 0.10.101000 dan versi yang lebih baru, babel akan digunakan secara lalai untuk menukar sintaks ES6 kod pembangun kepada kod ES5 yang disokong dengan baik oleh ketiga-tiga hujungnya, membantu pembangun menyelesaikan masalah pembangunan yang disebabkan oleh persekitaran yang berbeza. Pembangun boleh mematikan ciri ini dalam tetapan projek. 🎜🎜Perlu diambil perhatian bahawa: 🎜🎜🎜Penukaran ini hanya akan membantu pembangunan menangani masalah tatabahasa ES6 API Baharu seperti Promise memerlukan pembangun memperkenalkan Polyfill atau perpustakaan kelas lain sendiri. 🎜🎜Untuk meningkatkan kualiti kod, apabila fungsi penukaran ES6 dihidupkan, mod ketat javasctipt didayakan secara lalai, sila rujuk "guna ketat". 🎜🎜