1. 程式人生 > >小程式用什麼開發?快速開發一個自己的微信小程式教程

小程式用什麼開發?快速開發一個自己的微信小程式教程

一.寫在前面

  1.為什麼要學小程式開發?

  對於前端開發而言,微信小程式因為其簡單快速、開發成本低、使用者流量巨大等特點,也就成了前端開發工程師必會的一個技能。

  2.開發準備:

  (1)有人開玩笑說,會vue小程式根本都不用學:

  微信小程式雖然是騰訊自己搞的,但是核心的思想跟vue等框架是一樣一樣的哦~

  (2)善於蒐集精美的小元件: “我們不生產程式碼,我們只是程式碼的搬運工”,善於找到想要的元件並把他們巧妙優雅的組裝成一個大專案,也算是程式設計師一項基本技能了。

  具體怎麼找到想要的小程式demo,篇末會給大家推薦小程式的資源,有很多大神的專案哦

  擼起袖子開幹了

  一.註冊小程式賬號,下載IDE

  1.官網註冊https://mp.weixin.qq.com/,並下載IDE。

  2.官方文件一向都是最好的學習資料。

  注意:

  (1)註冊賬號之後會有一個appid,新建專案的時候需要填上,不然很多功能是用不了的,比如不能預覽,不能上傳程式碼等等。

  (2)如果你註冊過微信公眾號的話,一定要注意,微信公眾號和小程式是兩個賬號,二者的appid也是不同,小程式開發必須使用小程式的appid哦。

QQ截圖20180712102142

  二.小程式框架介紹和執行機制

  1.我們建立了“普通快速啟動模板”,然後整個專案目錄如下:

QQ截圖20180712102146

  2.app.js

  整個專案的啟動檔案,如註釋寫的onlaunch方法有三大功能,瀏覽器快取進行存和取資料;用登陸成功的回撥;獲取使用者資訊。

  globalData是定義整個專案的全域性變數或者常量哦。

QQ截圖20180712102150

  3.app.json

  整個專案的配置檔案,比如註冊頁面,配置tab頁,設定整個專案的樣式,頁面標題等等;

  !注意:小程式啟動預設的第一個頁面,就是app.json的pages中的第一個頁面哦。

  4.pages

  小程式的頁面元件,有幾個頁面就會有幾個子資料夾。比如快速啟動模板,就有兩個頁面,index和logs

  5.開啟index目錄

  可以看到有三個檔案,其實和我們web開發的檔案是一一對應的。

  index.wxml對應index.html;

  index.wxss對應index.css;

  index.js就是js檔案哦。

  一般我們還會給每個頁面元件新增一個.json檔案,作為該頁面元件的配置檔案,設定頁面標題等功能

  6.雙擊index.js檔案

  (1)var app = getApp();

  引入整個專案的app.js檔案,用來取期中的公共變數等資訊。

  如果要使用util.js工具庫中的某個方法,在util.js中module.exports匯出,然後在需要的頁面中require即可得到哦。

  (2)比如,我們要獲取豆瓣電影的時候,我們需要呼叫豆瓣的api;我們先在app.js中的gloabData中定義doubanBase

  然後在index.js中使用app.globaData.doubanBase即可取到這個值。

  當然這些常量你也可以在頁面需要的時候,再用寫死的值,但是為了整個專案的維護,還是建議把這種公用引數統一寫在配置檔案中哦。

QQ截圖20180712102156

  (3)接下來在整個page({})中,第一個data,就是本頁面元件的內部資料,會渲染到該頁面的wxml檔案中,類似於vue、react哦~

  通過setData修改data資料,驅動頁面渲染

QQ截圖20180712102201

  (4)一些生命週期函式

  比如onload(), onready(), onshow(), onhide()等等,監聽頁面載入、頁面初次渲染、頁面顯示、頁面隱藏等等

  更多的可以查官網API哦。其中用的最多的就是onload()方法,和onShareAppMessage()方法(設定頁面分享的資訊)

  7 .wxml模板的使用。

  比如本專案電影頁面,就是以最小的星級評價元件wxml當做模板,star到movie到movie-list,一級一級的巢狀使用。

  star-template.wxml頁面寫好name屬性;然後import引入的時候通過name獲得即可

QQ截圖20180712102206

  8.常用的wxml標籤

  view,text,icon,swiper,block,scroll-view等等,這些標籤直接查官網文件即可

  三.小程式框架、各個頁面以及釋出上線的注意點

  1.整個框架中的一些注意點

  (1)整個wxml頁面,最底層的標籤是哦。

  (2) 每個頁面頂部導航欄的顏色,title在本頁面的json中配置,如果沒有配置的話,取app.json中的總配置哦。

  (3)json中不能寫註釋哦,不然會報錯的。

  (4)路由相關

QQ截圖20180712102210

  1)使用wx.SwitchTab跳轉tab頁的話,在app.json中除了註冊pages頁面,還需要在tabBar中註冊tab頁,才能生效哦。

  注意:tab最多5個,也就是我們說的頭部或者底部最多5個選單。其他的頁面只能通過其他路由方法開啟哦。

  2)navigateTo是跳到某個非tab頁,比如歡迎頁,電影詳情頁,城市選擇頁;在app.json中註冊後,不能在tabBar裡註冊哦,不然同樣也是不能跳轉的哦。

  3)reLaunch跳轉,新開的頁面左上角是沒有退回按鈕的,本專案只用了一次,切換城市的時候哦。

  (5)頁面之間傳遞引數

  引數寫在跳轉的url之中,然後另一個頁面在onload方法中的傳參option接收到。如下傳遞和獲取id

QQ截圖20180712102214

  (6)data-開頭的自定義屬性的使用

  比如wxml中我們怎麼寫

QQ截圖20180712102221

  點選的事件物件可以這麼取,var postId = event.currentTarget.dataset.postid;

  注意: 大寫會轉換成小寫,帶_符號會轉成駝峰形式

  (7)事件物件event,event.target和event.currentTarget的區別:

  target指的是當前點選的元件 和currentTarget 指的是事件捕獲的元件。

  比如,輪播圖元件,點選事件應該要繫結到swiper上,這樣才能監控任意一張圖片是否被點選,

  這時target這裡指的是image(因為點選的是圖片),而currentTarget指的是swiper(因為繫結點選事件在swiper上)

  (8)使用免費的網路介面:

  本專案中用到了 和風天氣api,騰訊地圖api,百度地圖api,豆瓣電影api,聚合頭條新聞api等,具體用法可以看各自官網的介面文件哦,很詳細的

  注意:免費介面是有訪問限制的,所以如果用別人的元件用了這種介面的話,最好還是自己註冊一個新的key替換上哦

  附上一個免費介面大全:

  https://github.com/jokermonn/-Api

QQ截圖20180712102226

  !!另外還要注意,要把這些介面的域名配置到小程式的合法域名中,不然也是訪問不了的

QQ截圖20180712102229

  (8)wxss有一個坑:無法讀取本地資源,比如背景圖片用本地就會報錯哦。

  把本地圖片弄成網路圖片的幾種方式: 上傳到個人網站;QQ空間相簿等等也是可以的哦

  2.切換城市頁面:

  (1)首頁使用navigateTo跳轉到切換城市頁,由於首頁並沒有關閉,導致切換了城市返回來,天氣資訊還是舊的。

  正確的處理邏輯如下:

  1)使用reLaunch跳轉到切換城市頁面,實質是關閉所有頁面開啟新的頁面哦。

  2)切換城市頁面,更新公共變數中城市資訊為手動切換的城區,再switchTab回到首頁,觸發首頁重新載入。

  3)首頁獲取城市資訊的時候加一個判斷,全域性沒有才取定位的,全域性有(比如剛才設定了)就用全域性的哦。

  (2)城市列表的滾動和回到頂部

  基於scroll-view元件的scroll-top屬性,初始就是0,滾動就會增加的;點選回到頂部給它置為0即可回到頂部

  3.天氣頁

  (1)初始化頁面,天氣顯示的邏輯

  首先呼叫小程式的wx.getLocation方法獲得當前的經緯度,然後呼叫騰訊地圖獲得當前的城市名稱和區縣名稱,並存到公共變數中,

  再呼叫查詢天氣和空氣質量的方法哦。

  (2)容錯處理

  城市的名稱長短不一,有點名字特別長,比如巴彥淖爾市這種,需要動態的獲取完整的城市名稱;

  有些偏僻的城市暫時沒有天氣資訊,我們需要對返回的結果進行判斷,沒有資訊的需要給使用者一個良好的提示資訊。

  4.周邊-地圖服務頁面

  (1)呼叫百度地圖的各種服務,查詢酒店,美食,生活服務三種資訊,更多資訊可以看百度地圖的文件

  (2)點選時給被點中的圖示加個邊框,資料驅動檢視,所以使用一個長度為3的陣列儲存三個圖示當前是否被點中的狀態

  然後wxml再根據資料來動態新增class,增加邊框樣式

  5.豆瓣電影頁

  (1)電影詳情頁的預覽圖片,用小程式本身的previewImage實現。

  (2)詳情頁使用onReachBottom()方法,監控使用者上拉觸底事件,然後傳送請求繼續獲得資料,實現懶載入的效果

  (3)使用者體驗方面的優化,js中將整數評分比如7分統一改為7.0分,然後wxml模板再判斷分數是否為0顯示“暫無評分”

  (4)搜尋之後清空搜尋框

  因為小程式中不能使用getelementbyId這種方式獲得元素,只能用資料來控制了

  在data中加一個屬性searchText來儲存搜尋框的內容並和 input的value屬性繫結,搜尋完成或者點選X時,searchText變數清空即可實現清空輸入框的效果哦。

  6.新聞頁面

  (1)聚合頭條新聞的免費介面,只返回了新聞的基本資訊,新聞的主體內容是沒有的哦。

  我找了好多新聞類的介面,好像都是沒有新聞主體內容的。如果誰知道更好的介面歡迎留言告訴我哈~

  (2)當然,也可以自己去爬新聞網站的資料哦

  7.更多頁面

  (1)小程式目前開放外鏈的功能只是給公司組織的小程式開放了,個人開發還是不能使用外鏈的哦。

  (2)彩蛋頁面,獲得使用者資訊

  通過 wx.setStorageSync('userInfos', userInfos); 可以獲得登陸小程式的使用者的個人資訊,可以傳送給後臺存到資料庫中,方便對使用者進行分析

  我這裡只是儲存到瀏覽器快取中哦,最大應該是10M快取;如果使用者把這個小程式從小程式列表中刪除掉,就會清空這個快取。

  8.釋出注意

  (1) 新版本小程式釋出的限制為2M,一般都是圖片最佔空間,所以儘量使用網路圖片

  具體怎麼把本地圖片變成網路圖片,上面有講哦。

  (2)在開發者工具上預覽測試沒問題,點選上傳;網頁版小程式個的人中心的左側“開發管理”選單,第三塊--開發版本就有了內容。

  (3)點選提交,填寫小程式相關資訊,就可以提交稽核了哦。

  注意:分類最好填寫準確,這樣才能更快的通過稽核哦。我這個小程式一天半時間過審上線的。