微信小程式也已經出來有一段時間了,最近寫了幾款微信小程式項目,今天來說說感受。
首先開發一款微信小程序,最主要的就是針對於公司來運營的,因為,在申請appid(微信小程序ID號)時候,需要填寫相關的公司認證資訊如,營業執照等等
再次就是用一個未曾開通過公眾號的QQ號或微訊號來註冊一個微信小程式號碼。
最後,下載微信小程式開發工具。
由於這裡,我們更多的關注如何去開發一些app,而不是科譜微信小程序,故在此不在過多的解釋,詳細的說明,可以去官網幫助文檔。
首先,我們拿自己的專案在一步一步的說明並開發吧,下面是一個微信app的截圖
在看到上圖,小夥伴們大致上有一個了解,這個是調試工具中的,一些效果沒有在真機上好看。
由於在開發中,本以為畫面不是很流利,實際上完全出乎我的意料,動畫效果很流暢,可以與ios,andriod app相媲美,以後有時間講講開發其它app的相關例子。
在介紹這篇文章前,假設使用者都已經看過微信小程式的相關文件。
這個項目基本上是按照微信原有的文件結構來的,並沒有額外的去添加特別多的文件結構,因為微信小程序規定,項目文件大小不能超過1M,要求我們盡可能的壓縮小程式程式碼或其它圖片檔案等,以下是微信app檔案結構整體截圖
#
1.app.js 主要是全域公共的js方法宣告及呼叫所在的文件
2.app.json 是小程式整個的設定文件,所以有的頁面都在要此註冊,不然不允許存取(如下圖所示)
3.app.wxss 是小程式全域的css文件,公共css寫在此最好不過的了
4.pages下是對應著所有頁面,每個頁面,可以添加四種類型的文件,.json,.wxss,.wxml,.js (如下圖所示)
#5.utils 是我們公共的js存放的地方,因為微信小程式要求,每個js文件裡的方法不可以直接引用或調用,必須用module.exports方法導出,這樣pages 下的.js檔案才可以調用到我們在此寫的js方法。這點特別要注意
1)app.json頁面設定及註冊:
#
##2)pages頁面結構: 下面我們開始詳細的講解每個頁面一、首頁首頁分為四個檔案組成,如下圖所示,具體的頁面功能,上面已說過。 下面來看下,index.wxml效果 # 最上面的「來運吧」標題,在index.json檔案下定義的,每個檔案都可以用不同的.json來定義,當然程式碼也可以動態改變它 很簡單吧,標題就這麼簡單的出現了。1)接下來看看橫向捲動的banner,
index.wxml這樣來描述 #那麼swiper是什麼東東呢?微信小程式幫助文件這樣說明的 swiper滑桿視圖容器類型 | #預設值 | ||
---|---|---|---|
#說明 | |||
indicator-dots | #Boolean | false | 是否顯示面板指示點 |
autoplay | Boolean | false | 是否自動切換 |
current | |||
注意:其中只可放置<swiper-item/>
元件,其他節點會自動刪除。
僅可放置在<swiper/>
元件中,寬高自動設定為100%。
1 示例代码: 2 3 <swiper indicator-dots="{{indicatorDots}}" 4 autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}"> 5 <block wx:for="{{imgUrls}}"> 6 <swiper-item> 7 <image src="{{item}}" class="slide-image" width="355" height="150"/> 8 </swiper-item> 9 </block>10 </swiper>11 <button bindtap="changeIndicatorDots"> indicator-dots </button>12 <button bindtap="changeAutoplay"> autoplay </button>13 <slider bindchange="intervalChange" show-value min="500" max="2000"/> interval14 <slider bindchange="durationChange" show-value min="1000" max="10000"/> duration15 Page({16 data: {17 imgUrls: [18 'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',19 'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',20 'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'21 ],22 indicatorDots: false,23 autoplay: false,24 interval: 5000,25 duration: 100026 },27 changeIndicatorDots: function(e) {28 this.setData({29 indicatorDots: !this.data.indicatorDots30 })31 },32 changeAutoplay: function(e) {33 this.setData({34 autoplay: !this.data.autoplay35 })36 },37 intervalChange: function(e) {38 this.setData({39 interval: e.detail.value40 })41 },42 durationChange: function(e) {43 this.setData({44 duration: e.detail.value45 })46 }47 })
View Code
#看了上面的官方文檔,就可以清楚的知道,這個就是我們類似在寫html裡用到的banner滑動插件一樣,拿過來就可以使用,多麼的方便。
我們的專案中同樣用參數綁定的方式,輸出的相關參數
參數定義在index.js pages({...})方法中
#
為什麼要綁定參數?為什麼不直接寫入參數呢?好處太多,圖片我們不可能寫死,從伺服器請求圖片,同時可以方便的控制我們的相關參數來改變swiper的行為等。
至於參數綁定,官網說的也很清楚,這裡不在解釋。
2)城市選擇及切換
這塊看起來很簡單,其實很麻煩,如果對動畫不熟悉的朋友,可以會苦惱一番的。
上面的動畫很流暢,可能是因為抓取工具不太好,這點大可不用關心。
我們點擊中間的「交換圓」的時候,」出發城市「與」到達城市「相互交換,他們不是立即變化,而是中間有一個"位移"效果,同時,那個「交換的圓」也要旋轉180度。
這樣體驗感立刻"高上大"。呵呵,不是嗎?下面我們詳細的來實現它。
我們先來溫習下,官網動畫相關的文檔說明
建立一個動畫實例animation。呼叫實例的方法來描述動畫。最後透過動畫實例的export
方法匯出動畫資料傳遞給元件的animation
屬性。
注意: export
方法每次呼叫後會清除先前的動畫操作
OBJECT參數說明:
必填 | 說明 | ||
Integer | |||
動畫持續時間,單位ms,預設值400 | timingFunction | String |
transformOrigin | String | |
---|---|---|
animation | ||
樣式: | 方法 | |
##說明 | ||
#opacity | value | |
backgroundColor | color | |
width | length | |
height | length |
旋轉:
方法 | 參數 | #說明 |
---|---|---|
rotate | deg | deg的範圍-180~180,從原點順時針旋轉一個deg角度 |
rotateX | deg | deg的範圍-180~180,在X軸旋轉一個deg角度 |
rotateY | deg | # deg的範圍-180~180,在Y軸旋轉一個deg角度 |
rotateZ | deg | deg的範圍-180~180,在Z軸旋轉一個deg角度 |
rotate3d | (x,y,z,deg) | 同transform-function rotate3d |
縮放:
方法 | 說明 | |
---|---|---|
#scale | sx,[sy] | 一個參數時,表示在X軸、Y軸同時縮放sx倍數;兩個參數時表示在X軸縮放sx倍數,在Y軸縮放sy倍數 |
scaleX | sx | 在X軸縮放sx倍數 |
scaleY | sy | 在Y軸縮放sy倍數 |
scaleZ | sz | #在Z軸縮放sy倍數 |
scale3d | #(sx,sy,sz) | 在X軸縮放sx倍數,在Y軸縮放sy倍數,在Z軸縮放sz倍數 |
偏移:
方法 | ##參數說明 | |
---|---|---|
tx,[ty] | 一個參數時,表示在X軸偏移tx,單位px;兩個參數時,表示在X軸偏移tx,在Y軸偏移ty,單位px。 | |
tx | 在X軸偏移tx,單位px | |
ty | 在Y軸偏移tx,單位px | |
tz | #在Z軸偏移tx,單位px | |
(tx,ty,tz) | 在X軸偏移tx,在Y軸偏移ty ,在Z軸偏移tz,單位px |
#參數 | 說明 | |
---|---|---|
#ax,[ay] | 參數範圍-180~180;一個參數時,Y軸座標不變,X軸座標延順時針傾斜ax度;兩個參數時,分別在X軸傾斜ax度,在Y軸傾斜ay度 | |
ax | 參數範圍-180~180;Y軸座標不變,X軸座標延順時針傾斜ax度 | |
ay | 參數範圍-180~180;X軸座標不變,Y軸座標延順時針傾斜ay度 |
參數 | #說明 | |
---|---|---|
(a,b,c,d,tx,ty) | 同transform-function matrix | ##matrix3d |
同transform-function matrix3d | # |