위챗 애플릿 학습의 길-모듈화
4333 단어 위챗 애플릿
최초 프런트엔드 JavaScript 코드는 크기가 크지 않으므로 다음 코드와 같이 하나의 폴더에 균일하게 배치됩니다.
var name ='weixin',
age=12;
function getName(){
//
}
function getAge(){
//
}
이후에 전단 코드가 갈수록 많아졌기 때문에 관리와 업무 분해를 편리하게 하기 위해 우리는 코드를 여러 파일로 분해해야 했다. 이때 상술한 코드를user에 봉인해야 한다.js 파일에서 필요할 때 페이지를 가져오거나 파일로 포장하면 됩니다.초기에 팀 구성원이 적고 모든 것이 정상적으로 운행되었다. 팀이 점점 커질 때까지 어떤 사람들은 불평하기 시작했다. 나는name 변수를 정의하고 싶지만user.js에 이미 존재합니다. myName으로 정의할 수 없습니다.왜 내가 내 코드에 getage 방법을 정했기 때문에 다른 사람의 코드에 문제가 생겼을까?이러한 파일 분할 작업을 통해 우리는 코드에 대해 물리적 분리를 했을 뿐 여러 사람이 개발하고 간단한 코드 관리를 초보적으로 실현할 수 있었지만 역할 영역의 격리를 제대로 하지 못했다. 다른 파일에 이미 존재하는 변수 이름을 모르기 때문에 전역 충돌 문제를 더욱 쉽고 심각하게 만들었다.그리고 이런 전역 충돌을 피하기 위해 자바의 방식을 참고하여 명명 공간과 클립을 도입하여 변수 충돌 문제를 해결하기로 결정했다.그래서 사용자.js의 코드는 다음과 같이 변했다.
Page({
function(){
myProject = myProject || {};//
myProject.user ={};
myProject.user.name='weixin';
var age=12;// ,
myProject.user.getName = function(){
//
}
myProject.user.getAge = function(){
//
}
}
});
이렇게 하면 다른 동료들은 my Project를 통해name을 가져오고 getName과 getage 방법을 호출합니다. 이름 공간을 통해 대부분의 충돌을 완화시킬 수 있지만, 이를 위해 우리는 긴 이름 공간을 기억해야 합니다. 또한 사용자라는 공간을 사용하면 다른 사람이 사용할 수 없고, 문제를 완벽하게 해결할 수 없습니다.그리고 더 무서운 건 만약에user.js는 다른utils에 의존합니다.js, 다른 동료는user를 읽어야 합니다.js 원본 코드는 이 의존 관계를 이해하고 순서대로utils를 도입합니다.js、user.js,user를 직접 도입합니다.js는 그의 코드에 오류를 일으킬 것입니다. 만약 utils가 다른 자원에 의존한다면, 그는 모든 의존을 알아야 합니다. 그는 단지 나의 getName 방법을 호출하려고 했을 뿐입니다. 이것은 호출된 동료에게 악몽입니다.이때 우리는 새로운 조직 방식이 필요하다. 그래서 모듈화가 탄생했다.
현재 모듈화된 규범은 통일되지 않고 대체적으로 CommonJS와 ES6 두 가지 규범으로 나눌 수 있다. 모두가 관심이 있으면 인터넷 관련 자료를 참고할 수 있다. 애플릿 모듈화 메커니즘은 비교적 CommonJS규범에 가깝고 어떤 규범이든 학습하기 매우 간단하다.
파일 역할 영역
애플릿의 JavaScript 파일은 모듈로 중국 파일에서 선언된 변수와 함수는 해당 파일에서만 유효하며 서로 다른 파일의 동일한 변수 이름과 함수 이름은 서로 영향을 주지 않습니다.다음 예제에서는 getApp()을 호출하여 애플릿 인스턴스를 가져오는 전역 방법을 모듈에서 호출할 수 있습니다.
App({
myGlobalData:{
/** */
name:'weixin'
}
});
var myPrivateData ="value1";/**myPrivateData a.js */
var appData = getApp();
appData.myGlobalData.name+='app';
var myPrivateData= "value2";/**myPrivateData a.js */
var appData = getApp();
/** a.js b.js , "weixin app value2" */
cnsole.log(appData.myGlobalData.name+" "+myPrivateData);
모듈 사용
모듈 인터페이스의 노출 및 도입은 간단합니다.
var privateData = 'weixin';
function run(who){
console.log(who+'run');
}
function walk(who){
console.log(who+'walk');
}
module.exports.run=run;
exports.walk = walk;
/**
* :
* module.exports={
* run:run,
* walk:walk
* };
*/
var otherMod = require('mod.js');
Page({
onShow:function(){
/** sombody run */
otherMod.run('somebody');
/** sombody walk */
otherMod.walk('somebody');
}
});
주의해야 할 점:
기타
1. JavaScript 운영 환경
위챗 애플릿 논리 코드는 iOS, Android, 디버깅을 위한 개발자 도구 세 가지로 각각 다른 세 가지 해석 엔진을 실행한다.
비록 삼단의 환경이 매우 비슷하지만 적어도 현재 일부 문법, 특성에 대한 지원은 약간의 차이가 있기 때문에 개발 과정에서 가능한 한 삼단에서 테스트를 해야 한다.
2. ES6 문법과 API는 애플릿에서 개발자가 ES6 문법으로 인코딩할 수 있도록 지원한다. 0.10.101000 및 이후 버전의 개발 도구에서는 기본적으로 바벨을 사용하여 개발자의 ES6 코드를 3단 모두 잘 지원하는 ES5 코드로 변환하여 개발자가 환경에 따라 발생하는 개발 문제를 해결하도록 돕는다.ES6 구문을 사용하지 않는 경우 개발자는 프로젝트 설정에서 이 기능을 해제할 수 있습니다.전환 시 주의해야 할 사항:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
유니앱, 위챗 애플릿에서 MQTT 사용 문제(1)MQTT.js는 JavaScript로 작성된 MQTT 프로토콜의 클라이언트 라이브러리로 Node에 사용할 수 있습니다.js와 브라우저.노드에서.js단은 전역 설치를 통해 명령행 연결을 사용할 수 있으며 MQTT...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.