WeChat 개발 프로세스의 예를 요약합니다.

零下一度
풀어 주다: 2017-05-31 16:05:59
원래의
2266명이 탐색했습니다.

Editor

vscode를 직접 사용합니다(다른 편집기에도 동일하게 적용되며 여전히 미리보기용으로 WeChat 개발 도구를 사용합니다). 구문 강조를 위해 wxml을 html로, wxss를 css로 설정합니다

"files.associations": {
  "*.wxss": "css",
  "*.wxml": "html"
}
로그인 후 복사

할 수 있습니다. 미니 프로그램 관련 플러그인도 설치

코드 작성 시작

  • 우선 위챗 미니 프로그램 설명서(프레임워크, 컴포넌트, API)를 전부 읽어야 합니다. 나중에 사용할 때 찾을 수 있습니다.

  • view 구성 요소는 html

  • text의 p에 해당합니다. 이 선택기는 #id, .className, ::after, ::before

  • public 요소만 지원합니다. 구성 요소

프로젝트 디렉터리에 새 구성 요소를 만듭니다. 페이지와 유사한 디렉터리 구조에 따라 각 구성 요소의 템플릿, 스타일 및 js 파일을 동일한 폴더에 넣습니다.

WeChat 개발 프로세스의 예를 요약합니다.템플릿은 직접 < include/> 또는 필수 값 전달 +

  • 스타일 사용 @import를 사용하여

  • js를 사용하여 페이지에 도입 , 다음 mergePage를 사용하여 페이지 개체 중간을 로드합니다.

  • mergePage

구성요소 로드

  • const ErrorMsg = require(&#39;../../../components/error-msg/error-msg&#39;);
    Page(util.mergePage({
      // 页面 Page 方法...
      onLoad() {
        // 可以直接在页面方法中调用 showErrorMsg 方法
      }
    }, ErrorMsg/* 更多组件也可以*/));
    로그인 후 복사

  • mergePage 메소드를 사용하여 모든 구성요소 메소드와 페이지 이벤트를 페이지 객체에 등록하세요

컴포넌트 작성 방법

  • var errorTimer;
    module.exports = {
      showErrorMsg(msg, cb) {
        clearTimeout(errorTimer);
        this.setData({
          errorMsg: msg
        });
        errorTimer = setTimeout( () => {
          this.setData({
            errorMsg: false
          });
          cb && cb();
        }, 2000);
      }
      // 可以在这里注册 `onLoad`,`onShow`等页面事件
    }
    로그인 후 복사

    컴포넌트에서 this.setData를 사용하여 페이지 데이터를 업데이트하거나 onLoad, onShow 및 기타 페이지 이벤트를 등록할 수 있습니다. mergePage의 마지막 매개 변수가 있는 이벤트가 먼저 호출됩니다.

mergePage 소스 코드

  • /**
     * 合并 Page 对象所有的方法及事件
     * 子对象不能使用 data 属性,请在 onLoad 中使用 setData 方法设置
     */
    function mergePage(dest, ...src) {
      let args = arguments;
      let eventsStack = {
        onLoad: [],
        onReady: [],
        onShow: [],
        onHide: [],
        onUnload: [],
        onPullDownRefresh: [],
        onReachBottom: [],
      };
      // 保存所有的事件,最后一个参数的事件会最先调用。
      for(let name in eventsStack) {
        for(let i = args.length - 1; i >= 0; i--) {
          args[i][name] && eventsStack[name].push(args[i][name])
        }
      }
      Object.assign(...args);
      for(let name in eventsStack) {
        dest[name] = function() {
          for(let i = 0; i < eventsStack[name].length; i++) {
            eventsStack[name][i].apply(this, arguments);
          }
        }
      }
      return dest;
    }
    로그인 후 복사

    es 6

화살표 함수, 함수 매개변수 기본값 및 분석 구조

wx.request({
  complete: ({data= {}}) => {
    // 1. 因为 wx.request 返回的接口数据是在 data 属性里,这里我们只要 data 属性就行了,所以直接参数解析构
    // 2. 如果 failed,无 data 时,data 将为默认值 {}
    if(data.code !== 0) {
      // do something if request failed
      return;
    }
    // 请求正常处理代码
    // 3. 因为用的箭头函数,回调里可以正常使用 this, 访问 Page 对象的方法
    // 比如 this.setData(...)
  }
})
로그인 후 복사

일부 함수 매개변수는 기본 매개변수를 직접 사용할 수도 있습니다.

연산자 및 객체 속성 약어 확장

data 매개변수를 템플릿에 전달할 때
<template is="..." data="{{...obj, id: otherIdVariable, name}}"></template>
로그인 후 복사
와 같은 객체 속성 약어를 사용할 수 있습니다.

이런 방식으로 템플릿은 obj 객체의 모든 키를 사용할 수 있습니다.

템플릿 문자열

ES 6 템플릿 문자열을 애플릿에서 직접적이고 편리하게 사용할 수 있습니다
let url = `${app.globalData.API_PREFIX}/cart/add`;
로그인 후 복사

더 많은 es 6 기능

기타 참고 사항

wx.showToast 아이콘은 "성공", "로드 중"만 지원하며 오류 프롬프트를 사용자 정의해야 합니다

  • 템플릿의 변수에 값이 없는 경우 데이터가 전달되는지 확인하세요.

  • 개발 도구(v0.10.102800)에서는 다음 방법을 사용하여 도메인 이름을 요청하는 인터페이스를 추가할 수 있지만, 아쉽게도 WeChat에서는 사용할 수 없습니다.

  • // 放到 app.js 前面
     wxConfig.projectConfig.Network.RequestDomain.push(&#39;https://weapp.juanpi.com&#39;);
    로그인 후 복사

모든 페이지의 JS는 페이지가 열릴 때가 아닌 시작할 때 바로 실행되므로 전역적으로 작성된 일부 코드는 최대한 onLoad 뒤에 배치해야 합니다.

Debug
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿