成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微信小程序開(kāi)發(fā)初體驗(yàn)

開(kāi)發(fā) 前端
上周被小程序刷了屏,嚇得我周末趕緊擼了個(gè) 小程序 版的 知乎日?qǐng)?bào) 壓壓驚, 總結(jié)一下這個(gè)開(kāi)發(fā)體驗(yàn),和踩過(guò)的坑。小程序 出來(lái)第二天就被破解,第三天微信就把開(kāi)發(fā)工具開(kāi)發(fā)下載了, 現(xiàn)在只需要下載 微信開(kāi)發(fā)者工具 就可以使用了,創(chuàng)建項(xiàng)目的時(shí)候,要選擇無(wú) appid, 這樣就不會(huì)有 appid 的驗(yàn)證了。

 上周被 小程序 刷了屏,嚇得我周末趕緊擼了個(gè) 小程序 版的 知乎日?qǐng)?bào) 壓壓驚, 總結(jié)一下這個(gè)開(kāi)發(fā)體驗(yàn),和踩過(guò)的坑。

 開(kāi)發(fā)環(huán)境準(zhǔn)備

小程序 出來(lái)第二天就被破解,第三天微信就把開(kāi)發(fā)工具開(kāi)發(fā)下載了, 現(xiàn)在只需要下載 微信開(kāi)發(fā)者工具 就可以使用了,

 創(chuàng)建項(xiàng)目的時(shí)候,要選擇無(wú) appid, 這樣就不會(huì)有 appid 的驗(yàn)證了。

目錄結(jié)構(gòu)

 

  • app.js 注冊(cè)app邏輯, app.wxss 全局樣式文件 app.json 配置信息
  • pages 存放頁(yè)面文件
  • utils 工具類代碼
  • images 圖片資源文件

小程序中每一個(gè)頁(yè)面都會(huì)有三個(gè)文件 .wxml .wxss .js ,對(duì)應(yīng)著結(jié)構(gòu)、樣式、和邏輯,相當(dāng)于網(wǎng)頁(yè)中的 html css 和 js 的關(guān)系。

開(kāi)發(fā)***個(gè)頁(yè)面

代碼來(lái)自新建項(xiàng)目

  1. <!--index.wxml--> 
  2. <view class="container"
  3.   <view  bindtap="bindViewTap" class="userinfo"
  4.     <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image> 
  5.     <text class="userinfo-nickname">{{userInfo.nickName}}</text> 
  6.   </view
  7.   <view class="usermotto"
  8.     <text class="user-motto">{{motto}}</text> 
  9.   </view
  10. </view 
  1. /**index.wxss**/ 
  2. .userinfo { 
  3.   display: flex; 
  4.   flex-direction: column
  5.   align-items: center; 
  6.  
  7. .userinfo-avatar { 
  8.   width: 128rpx; 
  9.   height: 128rpx; 
  10.   margin: 20rpx; 
  11.   border-radius: 50%; 
  12.  
  13. .userinfo-nickname { 
  14.   color: #aaa; 
  15.  
  16. .usermotto { 
  17.   margin-top: 200px; 
  18.  
  1. //index.js 
  2. //獲取應(yīng)用實(shí)例 
  3. var app = getApp() 
  4. Page({ 
  5.   data: { 
  6.     motto: 'Hello World'
  7.     userInfo: {} 
  8.   }, 
  9.   //事件處理函數(shù) 
  10.   bindViewTap: function() { 
  11.     wx.navigateTo({ 
  12.       url: '../logs/logs' 
  13.     }) 
  14.   }, 
  15.   onLoad: function () { 
  16.     console.log('onLoad'
  17.     var that = this 
  18.     //調(diào)用應(yīng)用實(shí)例的方法獲取全局?jǐn)?shù)據(jù) 
  19.     app.getUserInfo(function(userInfo){ 
  20.       //更新數(shù)據(jù) 
  21.       that.setData({ 
  22.         userInfo:userInfo 
  23.       }) 
  24.     }) 
  25.   } 
  26. })  

新建的項(xiàng)目中,index 下都會(huì)看到這些代碼,接下來(lái)分別介紹 wxml wxss js

wxml

這個(gè)是頁(yè)面結(jié)構(gòu)的描述文件, 主要用于以下內(nèi)容

  • 用標(biāo)簽形式指定組件使用 <view></view>
  • 使用 wx:for wx:if 等指令完成一些模板上的邏輯處理
  • 使用 bind* 綁定事件

wxss

樣式文件,和 css 語(yǔ)法基本一致,不過(guò)支持的選擇器語(yǔ)法有限 看這里, 可以使用 flexbox 完成布局。

內(nèi)部也可以使用 import 命令引入外部樣式文件

  1. @import "common.wxss"
  2.  
  3. .pd { 
  4.     padding-left: 5px; 
  5.  

js

頁(yè)面邏輯控制, 遵循 commonJs 規(guī)范 

  1. // util.js 
  2. function formatTime(date) { 
  3.   // .... 
  4.  
  5. function formatDate(date, split) { 
  6.   // ... 
  7. module.exports = { 
  8.   formatTime: formatTime, 
  9.   formatDate: formatDate 
  10.  
  1. var utils = require('../../utils/util.js'

這里的js 并不是在 瀏覽器環(huán)境下運(yùn)行, 所以 window.* 這一類的代碼都會(huì)報(bào)錯(cuò), dom 操作也是不被允許的,官方目前好像是不能支持其他的 js 庫(kù)運(yùn)行,全封閉式,這個(gè)以后應(yīng)該會(huì)逐漸完善。

頁(yè)面上使用 Page 方法來(lái)注冊(cè)一個(gè)頁(yè)面

  1. Page({ 
  2.   data:{ 
  3.     // text:"這是一個(gè)頁(yè)面" 
  4.   }, 
  5.   onLoad:function(options){ 
  6.     // 頁(yè)面初始化 options為頁(yè)面跳轉(zhuǎn)所帶來(lái)的參數(shù) 
  7.   }, 
  8.   onReady:function(){ 
  9.     // 頁(yè)面渲染完成 
  10.   }, 
  11.   onShow:function(){ 
  12.     // 頁(yè)面顯示 
  13.   }, 
  14.   onHide:function(){ 
  15.     // 頁(yè)面隱藏 
  16.   }, 
  17.   onUnload:function(){ 
  18.     // 頁(yè)面關(guān)閉 
  19.   } 
  20. })  

當(dāng)我們需要改變 綁定的數(shù)據(jù)時(shí),必須調(diào)用 setData 方法修改,才會(huì)觸發(fā)頁(yè)面更新,像這樣:

  1. Page({ 
  2.     data: { 
  3.         text: '這是一個(gè)頁(yè)面' 
  4.     }, 
  5.     onLoad: function() { 
  6.         this.setData({ 
  7.             text: 'this is page' 
  8.         }) 
  9.     } 
  10. })  

條件渲染和列表渲染

以下內(nèi)容來(lái)自微信官方文檔。

小程序使用 wx:if="{{condition}}" 完成條件渲染,類似于 vue 的 v-if 

  1. <view wx:if="{{condition}}"True </view

也可以用 wx:elif 和 wx:else 來(lái)添加一個(gè) else 塊: 

  1. <view wx:if="{{length > 5}}"> 1 </view
  2. <view wx:elif="{{length > 2}}"> 2 </view
  3. <view wx:else> 3 </view 

wx:for 控制屬性綁定一個(gè)數(shù)組,即可使用數(shù)組中各項(xiàng)的數(shù)據(jù)重復(fù)渲染該組件。

內(nèi)置變量 index (數(shù)組遍歷的下標(biāo)), item (數(shù)組遍歷的每一項(xiàng)) 

  1. <view wx:for="{{items}}"
  2.   {{index}}: {{item.message}} 
  3. </view 
  1. Page({ 
  2.   items: [{ 
  3.     message: 'foo'
  4.   },{ 
  5.     message: 'bar' 
  6.   }] 
  7. })  

使用wx:for-item可以指定數(shù)組當(dāng)前元素的變量名

使用wx:for-index可以指定數(shù)組當(dāng)前下標(biāo)的變量名:

  1. <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName"
  2.  
  3. {{idx}}: {{itemName.message}} 
  4.  
  5. </view 

事件綁定

wxml 只是用 bind[eventName]="handler" 語(yǔ)法綁定事件 

  1. <view bindtap="bindViewTap" class="userinfo"><text>tap</text></view 
  1. Page({ 
  2.     bindViewTap: function(e) { 
  3.         console.log(e.taget) 
  4.     } 
  5. })  

通過(guò) data-* 和 e.target.dateset 傳遞參數(shù) 

  1. <view bindtap="bindViewTap" data-test-msg="啦啦啦啦啦啦" class="userinfo"><text>tap</text></view 
  1. Page({ 
  2.     bindViewTap: function(e) { 
  3.         // 會(huì)自動(dòng)轉(zhuǎn)成駝峰式命名 
  4.         console.log(e.taget.dataset.testMsg) // 啦啦啦啦啦啦 
  5.     } 
  6. })  

目前踩過(guò)的坑

事件綁定中 e.target.dataset

當(dāng)在父組件綁定事件和參數(shù),點(diǎn)擊時(shí)又子組件冒泡事件到父組件,這個(gè)時(shí)候 e.target.dataset 為空 

  1. <view bindtap="bindViewTap" data-test-msg="啦啦啦啦啦啦" class="userinfo"
  2.  
  3. <view><text>tap</text></view
  4.  
  5. </view 
  1. Page({ 
  2.     bindViewTap: function(e) { 
  3.         console.log(e.taget.dataset.testMsg) // undefined 
  4.     } 
  5. })  

在線圖片加載不穩(wěn)定

在知乎日?qǐng)?bào)這個(gè)項(xiàng)目上有大量圖片需要從網(wǎng)上下載,這里 image 組件額顯示顯得極其不穩(wěn)定,有很多的圖片都顯示不出來(lái).

***

微信小程序現(xiàn)在還在內(nèi)測(cè)階段,有很多的問(wèn)題需要完善,不過(guò)對(duì)于開(kāi)發(fā)速度和體驗(yàn)來(lái)說(shuō)還是不錯(cuò)的,期待正式發(fā)布的那一天。

資源

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2017-05-08 15:03:07

微信小程序開(kāi)發(fā)實(shí)戰(zhàn)

2016-09-28 18:10:59

微信程序MINA

2016-11-04 10:49:48

微信小程序

2016-09-27 20:36:23

微信HttpWeb

2018-09-11 10:32:07

云開(kāi)發(fā)小程序開(kāi)發(fā)者

2011-07-28 14:19:12

iPhone 網(wǎng)絡(luò)編程 聊天程序

2016-11-07 10:30:07

微信小程序安裝配置

2018-12-25 22:38:12

微信功能系統(tǒng)

2021-03-10 09:44:20

微信小程序APP

2020-12-01 15:37:07

Python

2010-08-01 16:11:53

Android

2016-11-28 15:52:09

微信小程序開(kāi)發(fā)

2016-10-20 21:02:12

微信小程序javascript

2017-01-09 10:01:49

微信小程序

2017-06-09 10:06:54

微信小程序架構(gòu)分析

2017-06-09 10:40:00

微信小程序架構(gòu)分析

2017-06-09 12:58:20

微信小程序架構(gòu)分析

2016-11-04 10:31:49

微信程序指南

2021-02-23 12:25:26

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2016-11-22 11:23:52

微信小程序騰訊微信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91中文字幕在线 | 国产精品免费一区二区三区四区 | 99久久精品国产麻豆演员表 | 国产成人精品在线 | 色欧美片视频在线观看 | 羞羞网站在线观看 | 欧美一级片免费看 | 三级av在线| 免费日韩av网站 | 久久草在线视频 | 免费一级毛片 | 成人av免费 | 国产亚洲欧美日韩精品一区二区三区 | 国产精品福利网站 | 国产精品18hdxxxⅹ在线 | 国产在线资源 | 日本中文字幕在线观看 | 婷婷综合色 | 欧美精品1区| 日韩视频在线播放 | 97精品国产 | 亚洲精精品 | 99免费看 | 中文字幕一区二区三区精彩视频 | 九九综合 | 无人区国产成人久久三区 | 在线一区 | 亚洲精品免费观看 | 7777在线| 91精品国产日韩91久久久久久 | 亚洲国产精品久久久久久 | 最新中文字幕第一页视频 | 国产精品美女久久久久aⅴ国产馆 | 日韩免费福利视频 | 精品一区二区久久久久久久网站 | 成人在线视频一区二区三区 | 一本一道久久a久久精品综合 | 免费av手机在线观看 | 成人精品鲁一区一区二区 | 人人干人人舔 | 亚洲天堂精品久久 |