Modulaire


Portée du fichier

Les variables et fonctions déclarées dans un fichier JavaScript ne sont valides que dans ce fichier ; les variables et les fonctions portant le même nom peuvent être déclarées dans différents fichiers sans s'affecter mutuellement.

L'instance globale de l'application peut être obtenue via la fonction globale getApp() Si des données globales sont nécessaires, elles peuvent être définies dans App(), par exemple : 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

Modularisation

Nous pouvons extraire du code commun dans un fichier js séparé en tant que module. Les modules ne peuvent exposer les interfaces au monde extérieur que via module.exports.

Il est à noter que :

  • exports est une référence à module.exports, donc changer le pointeur de exports dans le module provoquera une erreur inconnue. Par conséquent, nous recommandons aux développeurs d'utiliser module.exports pour exposer les interfaces des modules, à moins que vous ne connaissiez déjà clairement la relation entre les deux.
  • Le mini programme ne prend actuellement pas en charge l'introduction directe de node_modules Lorsque les développeurs doivent utiliser node_modules, il est recommandé de copier le code correspondant dans le répertoire du mini. programme.

rrreee

Dans les fichiers qui doivent utiliser ces modules, utilisez require(path) pour introduire le code public.

rrreee

Syntaxe ES6 et support API

L'applet WeChat s'exécute sur trois terminaux : iOS, Android et des outils de développement pour le débogage

  • Sur iOS, le code javascript de l'applet s'exécute en JavaScriptCore
  • Sur Android Sur l'outil de développement, le Le code javascript du mini-programme est analysé via Il existe encore quelques différences, ce qui a causé de gros problèmes à de nombreux développeurs.
Dans les outils de développement de la version 0.10.101000 et des versions ultérieures, babel sera utilisé par défaut pour convertir la syntaxe ES6 du code développeur en code ES5 bien pris en charge par les trois extrémités, aidant ainsi les développeurs à résoudre les problèmes de développement causés par différents environnements. Les développeurs peuvent désactiver cette fonctionnalité dans les paramètres du projet. 🎜🎜Il convient de noter que : 🎜🎜🎜Cette conversion aidera uniquement le développement à résoudre les problèmes grammaticaux. Les nouvelles API ES6 telles que Promise obligent les développeurs à introduire eux-mêmes Polyfill ou d'autres bibliothèques de classes. 🎜🎜Afin d'améliorer la qualité du code, lorsque la fonction de conversion ES6 est activée, le mode strict javasctipt est activé par défaut, veuillez vous référer à « utiliser strict ». 🎜🎜