WeChat 미니 프로그램 개발 첫 경험

高洛峰
풀어 주다: 2017-02-10 11:55:52
원래의
2113명이 탐색했습니다.

지난주 미니 프로그램에 너무 빠져서 주말에 급하게 Zhihu Daily의 미니 프로그램 버전을 만들었습니다. 마음을 편하게 하기 위해 이번 개발 경험과 제가 겪은 함정을 요약하고 싶습니다. 미니 프로그램은 출시된 지 이틀 만에 크랙이 발생했습니다. 위챗은 개발 도구를 다운로드한 지 3일 만에 프로젝트를 생성할 때 앱 ID를 선택하지 않아도 됩니다. 아니오 appid가 확인되었습니다.

지난주에 미니프로그램을 접하게 되었는데 너무 무서워서 주말에 급하게 Zhihu Daily의 미니프로그램 버전을 만들게 되었는데, 이 개발 경험과 그 내용을 정리해 보고자 합니다. 내가 겪은 함정.

개발 환경 준비

애플릿이 나온 지 3일 만에 크랙이 발생했습니다. 이제 개발 도구만 다운로드하면 됩니다. WeChat 개발자 도구를 사용할 준비가 되었습니다.

WeChat 미니 프로그램 개발 첫 경험

프로젝트 생성 시 앱 ID 없음을 선택하면 앱 ID 확인이 없습니다.

디렉토리 구조

WeChat 미니 프로그램 개발 첫 경험

  • app.js는 앱 로직, app.wxss 전역 스타일 파일 앱을 등록합니다. json 구성 정보

  • 페이지 저장 페이지 파일

  • utils 도구 클래스 코드

  • 이미지 사진 리소스 파일

미니 프로그램의 각 페이지에는 html css와 html css의 관계에 해당하는 구조, 스타일 및 논리에 해당하는 wxml .wxss .js 파일이 세 개 있습니다. 웹페이지의 js.

첫 번째 페이지 개발

코드는 새 프로젝트에서 가져옵니다.

<!--index.wxml--> <view>   <view>     <image></image>     <text>{{userInfo.nickName}}</text>   </view>   <view>     <text>{{motto}}</text>   </view> </view>
로그인 후 복사
/**index.wxss**/ .userinfo {   display: flex;   flex-direction: column;   align-items: center; }  .userinfo-avatar {   width: 128rpx;   height: 128rpx;   margin: 20rpx;   border-radius: 50%; }  .userinfo-nickname {   color: #aaa; }  .usermotto {   margin-top: 200px; }
로그인 후 복사
//index.js //获取应用实例 var app = getApp() Page({   data: {     motto: 'Hello World',     userInfo: {}   },   //事件处理函数   bindViewTap: function() {     wx.navigateTo({       url: '../logs/logs'     })   },   onLoad: function () {     console.log('onLoad')     var that = this     //调用应用实例的方法获取全局数据     app.getUserInfo(function(userInfo){       //更新数据       that.setData({         userInfo:userInfo       })     })   } })
로그인 후 복사

새 프로젝트에서는 색인 아래에 이러한 코드가 표시됩니다. 그리고 각각 wxml 소개 wxss js

wxml

페이지 구조에 대한 설명 파일이며 주로 다음 내용에 사용됩니다

  • 태그 있음 이 양식은

  • wx:for wx:if 및 기타 명령을 사용하여 일부 논리적 처리를 완료하는 구성 요소를 지정합니다. 템플릿

  • bind*를 사용하여 이벤트 바인딩

wxss

스타일 파일입니다. 기본적으로 CSS 구문과 동일하지만 제한된 선택기 구문을 지원합니다. 여기를 보면 Flexbox를 사용하여 레이아웃을 완성할 수 있습니다.

내부적으로 가져오기 명령을 사용하여 외부 스타일 파일을 도입할 수도 있습니다

@import "common.wxss";  .pd {     padding-left: 5px; }
로그인 후 복사

js

페이지 로직 제어, commonJs 사양을 따르세요

// util.js function formatTime(date) {   // .... }  function formatDate(date, split) {   // ... } module.exports = {   formatTime: formatTime,   formatDate: formatDate }
로그인 후 복사
var utils = require('../../utils/util.js')
로그인 후 복사

여기 js는 브라우저 환경에서 실행되지 않기 때문에 윈도우 등의 코드는 점차 개선되어야 할 것 같습니다.

페이지의 Page 메소드를 사용하여 페이지 등록

Page({   data:{     // text:"这是一个页面"   },   onLoad:function(options){     // 页面初始化 options为页面跳转所带来的参数   },   onReady:function(){     // 页面渲染完成   },   onShow:function(){     // 页面显示   },   onHide:function(){     // 页面隐藏   },   onUnload:function(){     // 页面关闭   } })
로그인 후 복사

바인딩된 데이터를 변경해야 하는 경우 setData 메소드를 호출하여 수정해야 하며, 이는 페이지 업데이트를 트리거합니다.

Page({     data: {         text: '这是一个页面'     },     onLoad: function() {         this.setData({             text: 'this is page'         })     } })
로그인 후 복사

조건부 렌더링 및 목록 렌더링

다음 내용은 WeChat 공식 문서에서 가져온 것입니다.

애플릿은 wx:if="{{condition}}"을 사용하여 조건부 렌더링을 완료합니다. vue의 v-if

<view> True </view>
로그인 후 복사

와 마찬가지로 wx:elif 및 wx를 사용하여 추가할 수도 있습니다. :else else 블록:

<view> 5}}"> 1 </view> <view> 2}}"> 2 </view> <view> 3 </view>
로그인 후 복사

wx:for는 배열을 바인딩하는 속성을 제어하며 배열에 있는 각 항목의 데이터를 사용하여 구성 요소를 반복적으로 렌더링할 수 있습니다.

내장 변수 index(배열 순회를 위한 첨자), item(배열 순회를 위한 각 항목)

<view>   {{index}}: {{item.message}} </view>
로그인 후 복사
rrree

wx:for-item을 사용하여 현재 요소의 변수 이름을 지정합니다. array

wx:for-index를 사용하여 배열의 현재 첨자의 변수 이름을 지정하세요.

Page({   items: [{     message: 'foo',   },{     message: 'bar'   }] })
로그인 후 복사

이벤트 바인딩

wxml은 그냥 사용하세요 바인딩[eventName]="handler " 구문 바인딩 이벤트

<view>  {{idx}}: {{itemName.message}}  </view>
로그인 후 복사
<view><text>tap</text></view>
로그인 후 복사
로그인 후 복사

data-* 및 e.target.dateset을 통해 매개변수 전달

Page({     bindViewTap: function(e) {         console.log(e.taget)     } })
로그인 후 복사
<view><text>tap</text></view>
로그인 후 복사
로그인 후 복사

지금까지 밟았던 함정

이벤트 바인딩에서 e.target.dataset

이벤트와 매개변수를 상위 구성요소에 바인딩할 때 클릭하면 하위 구성요소가 이벤트를 버블링합니다. 현재 e.target.dataset가 비어있습니다.

rrreerree

온라인 이미지 로딩이 불안정합니다

Zhihu Daily 프로젝트에 많은 수가 있습니다. 인터넷에서 다운로드해야 하는 이미지의 수가 매우 불안정합니다.

마침내

위챗 애플릿은 아직 내부 테스트 단계이고, 개선해야 할 문제가 많지만, 개발을 위해서는 속도와 사용감이 꽤 좋고, 정식 출시되는 날이 기대됩니다.

WeChat 애플릿 개발 첫 경험과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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