위 챗 애플 릿 개발 가속 화 에 대한 작은 제안

1.app.json 으로 페이지 만 들 기
우리 의 일반적인 개발 습관 에 따라 새로운 페이지 를 만 듭 니 다.보통 폴 더 를 만 들 고 해당 페이지 의 형식 을 만 듭 니 다.생 성 이 완료 되면 app.json 에서 이 페이지 를 자동 으로 등록 합 니 다.실제로 우 리 는 app.json 에 직접 페이지 를 등록 함으로써 해당 하 는 페이지 를 만 들 수 있다.

"pages": [
    "pages/index/index",
    "pages/newpage/newpage"
 ],
위 와 같이 설정 파일 에 이 경 로 를 등록 하면 애플 릿 이 자동 으로 해당 경 로 를 만 듭 니 다.
2.컴 파일 모드 활용

우리 가 특정한 페이지 를 디 버 깅 하려 고 할 때 상당 한 개발 자 들 은 app.json 을 직접 수정 하여 첫 번 째 스 택 페이지 를 조정 하 는 습관 이 있 습 니 다.실제로 컴 파일 모드 로 컴 파일 페이지 를 추가 하여 설정 파일 을 수정 하 는 행 위 를 대체 할 수 있 습 니 다.
3.구성 요소 재 활용 애플 릿 스타일
이 점 은 자주 잊 혀 집 니 다.새 component 를 만 들 때 애플 릿 이 이 설정 을 보 여주 지 않 기 때 문 입 니 다.설정 options 는 다음 과 같 습 니 다.구성 요 소 는 전역 스타일(app.wxss)을 사용 할 수 있 습 니 다.

Component({
  //  colorui  
  options: {
    addGlobalClass: true,
    multipleSlots: true
  },
  ...
 }
4.app.js 내용 함수 화 초기 화
많은 애플 릿 onLaunch 에는 많은 내용 이 쓰 여 있어 혼 란 스 럽 고 후기 디 버 깅 이 특히 고통스럽다.서로 다른 초기 화 내용 을 서로 다른 함수,함수 화,모듈 화 로 쓸 수 있 습 니 다.

onLaunch: function(options) {
    //                
    this.InitCloud(); //       / ESC
    this.InitCustom(); //   custom      
    this.InitEdu(); //         
 },
5.템 플 릿 활용 하기
내용 이 대량으로 중복 되 는 wxml 내용 에 대해 서 는 template 템 플 릿 파일 로 추출 하여 사용 할 때 직접 가 져 와 사용 하면 됩 니 다.

<import src="template/NexuTemplate.wxml"/>
<view wx:for="{{dirlist}}" wx:key="item">
 <template is="dirshow" data="{{item}}"></template>
</view>
6.클 라 우 드 개발 혼합 개발
콘 텐 츠 안전 식별,openid 획득,이미지 감 황,결제 절차,콘 텐 츠 푸 시 등 이 자신의 배경 으로 이 루어 지면 쉽 지 않 지만 클 라 우 드 개발 기술 로 이 부분 을 교체 하고 업무 논리 에 전념 하면 새로운 세상 을 열 수 있 습 니 다.
클 라 우 드 개발 부분 기능(뒤에 클 라 우 드 개발 혼합 개발 내용 을 소개 하 는 글 을 한 편 쓰 겠 습 니 다):

const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})


//        
exports.main = async (event, context) => {
  // console.log(event)
  switch (event.action) {
    case 'getWXACode': {
      return getWXACode(event)
    }
    case 'getOpenData': {
      return getOpenData(event)
    }
    case 'msgSecCheck': {
      return msgSecCheck(event)
    }
    case 'imgSecCheck': {
      return imgSecCheck(event)
    }
    case 'submitPages': {
      return submitPages(event)
    }
    default: {
      return
    }
  }
}

//      
async function getWXACode(event) {
  console.log(event.url)
  //               ,            ,        ID      

  const wxacodeResult = await cloud.openapi.wxacode.get({
    path: event.url || 'pages/index/index',
  })

  const fileExtensionMatches = wxacodeResult.contentType.match(/\/([^\/]+)/)
  const fileExtension = (fileExtensionMatches && fileExtensionMatches[1]) || 'jpg'

  const uploadResult = await cloud.uploadFile({
    //      ,             
    cloudPath: `wxCode/wxCode${Math.random() * 9999999}.${fileExtension}`,
    //                 Buffer
    fileContent: wxacodeResult.buffer,
  })

  if (!uploadResult.fileID) {
    throw new Error(`    ,    ,            ${uploadResult.statusCode}`)
  }

  return uploadResult.fileID
}

//   openid
async function getOpenData(event) {
  //   wx-server-sdk >= 0.5.0
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

//         
async function msgSecCheck(event) {
  //   wx-server-sdk >= 0.5.0
  return cloud.openapi.security.msgSecCheck({
    content: event.content,
  })
}

//         
async function imgSecCheck(event) {
  return cloud.openapi.security.imgSecCheck({
    media: {
      contentType: event.contentType,
      value: Buffer.from(event.value)
    }
  })
}

//     
async function submitPages(event) {
  return cloud.openapi.search.submitPages({
    pages: [{
      path: event.path,
      query: event.query
    }]
  })
}




//    
function getDateTime(sj) {
  var now = new Date(sj * 1000);
  var year = now.getFullYear();
  var month = now.getMonth() + 1;
  var date = now.getDate();
  var hour = now.getHours();
  var minute = now.getMinutes();
  // var second = now.getSeconds();
  return year + " " + month + " " + date + " ";
}

7.개인 설정 데 이 터 를 한 파일 에 모 으 기
예 를 들 어 서버 도 메 인 이름,인터페이스 토 큰 등 은 변 할 수 있 지만 자주 사용 하 는 데 이 터 는 한 파일 에 집중 된다.

module.exports={
  UseCloud:true,
  CloudId:'',      //     id
  TraceUser:true,           //        
  AdaptStorge:true,         //        
  SevDomain:'http://localhost'     //      
}
8.개발 자 도구 의 버 전 관리 도구 활용

총결산
위 챗 애플 릿 개발 을 가속 화 하 는 데 관 한 작은 제안 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 위 챗 애플 릿 개발 제안 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기