모듈식


파일 범위

JavaScript 파일에 선언된 변수와 함수는 해당 파일에서만 유효합니다. 동일한 이름을 가진 변수와 함수는 서로 영향을 주지 않고 다른 파일에 선언될 수 있습니다.

전역 애플리케이션 인스턴스는 전역 함수 getApp()를 통해 얻을 수 있습니다. 전역 데이터가 필요한 경우 다음과 같이 App()에서 설정할 수 있습니다. 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

몇 가지 공통 코드를 별도의 js 파일에 모듈로 추출할 수 있습니다. 모듈은 module.exports를 통해서만 인터페이스를 외부 세계에 노출할 수 있습니다.

주의해야 할 점:

  • exportsmodule.exports에 대한 참조이므로 모듈에서 exports 포인터를 변경합니다. 알 수 없는 오류가 발생합니다. 따라서 둘 사이의 관계를 이미 명확하게 알고 있지 않은 한 개발자는 module.exports를 사용하여 모듈 인터페이스를 노출하는 것이 좋습니다.
  • 현재 미니 프로그램은 node_modules의 직접 도입을 지원하지 않습니다. 개발자가 node_modules를 사용해야 하는 경우 해당 코드를 미니의 디렉터리에 복사하는 것이 좋습니다. 프로그램.

rrreee

이러한 모듈을 사용해야 하는 파일에서 require(path)를 사용하여 공개 코드를 도입하세요.

rrreee

ES6 구문 및 API 지원

WeChat 애플릿은 iOS, Android 및 디버깅용 개발자 도구의 세 가지 터미널에서 실행됩니다.

  • iOS에서는 애플릿의 자바스크립트 코드가 JavaScriptCore에서 실행됩니다
  • Android 개발 도구에서는 미니 프로그램의 javascript 코드는 여전히 몇 가지 차이점이 있어 많은 개발자에게 큰 어려움을 안겨주었습니다.
0.10.101000 및 이후 버전의 개발 도구에서는 기본적으로 바벨을 사용하여 개발자 코드 ES6 구문을 세 가지 모두에서 잘 지원되는 ES5 코드로 변환하여 개발자가 다양한 환경으로 인해 발생하는 개발 문제를 해결하도록 돕습니다. 개발자는 프로젝트 설정에서 이 기능을 끌 수 있습니다. 🎜🎜주의해야 할 점: 🎜🎜🎜이 변환은 개발에서 문법 문제를 처리하는 데에만 도움이 됩니다. Promise와 같은 새로운 ES6 API에서는 개발자가 직접 Polyfill 또는 기타 클래스 라이브러리를 도입해야 합니다. 🎜🎜코드 품질 향상을 위해 ES6 변환 기능을 켜면 기본적으로 javasctipt strict 모드가 활성화됩니다. "엄격한 사용"을 참고하세요. 🎜🎜