小程序:傳圖識字君
傳圖片上去把上面的文字抓取下來
做任何程序開發要首先找到其官方文檔,我們先來看看其有哪些官方文檔。
微信小程序開發文檔鏈接為:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html,如下圖:
這里就是做微信小程序開發的全部官方文檔。
知道了文檔的位置,下面我們來介紹下如何做一個微信小程序開發:
/*********************************************************************
插播:
微信小程序全套視頻教程在線觀看地址:http://v.qq.com/vplus/92e0ff1abe80fce5bcfe344f11a106c5/foldervideos/hod000101p9le1c
由於上傳到騰訊視頻后,視頻文件被自動壓縮了,導致在線觀看的視頻不是特別清晰。
如需清晰版的視頻文件,請從以下鏈接下載:https://pan.baidu.com/s/1dN8lci
本套視頻教程包含了微信小程序開發的基礎知識,特別適合學習微信小程序開發入門使用,請按照順序觀看學習。
本套教程原來銷售199元,現免費奉送,所有內容都是筆者親自錄制。
需要課程講解中用到的示例源碼請關注微信公眾號:“微little程序”,按照提示獲取源碼。關注成功后,也可直接點擊公眾號中的“視頻教程”菜單,詳細了解獲取配套示例源碼的方式。
拿到示例源碼后,自己再做嘗試,學習會更有效果。
也可掃描下方二維碼關注該公眾號:
******************************************************************************/
繼續:
第一步:下載微信小程序開發者工具並安裝,下載路徑:
https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html
進到下載界面后,根據自己的操作系統選擇相應的鏈接進行下載,下載完成后進行安裝。
第二步:登錄工具
開發者工具安裝完成后我們就可以將其打開,初次打開會需要用微信掃碼登錄,如下圖,用手機微信掃一掃后確認登錄就可以了。
第三步:創建一個項目
步驟一:登錄成功后,顯示界面如下,點擊下圖中的“+”號處,進入步驟二
步驟二:填寫項目信息,填寫說明請參見下圖,填寫完成后,點擊“新建”,就完成了一個項目的創建過程。(如果是一個已有項目,即:已經有項目的代碼文件,請點擊“導入項目”,將已有項目導入即可。)
新創建的項目,會默認生成一份demo代碼,用於展示代碼結構,界面如下圖:
第四步:項目代碼結構解釋
我們可以看到這個項目已經初始化並包含了一些簡單的代碼文件。最關鍵也是必不可少的,是 app.js、app.json、app.wxss 這三個。其中,.js
后綴的是腳本文件,.json
后綴的文件是配置文件,.wxss
后綴的是樣式表文件。微信小程序會讀取這些文件,並生成小程序實例。
下面我們簡單了解這三個文件的功能,方便修改以及從頭開發自己的微信小程序。
1、app.js是小程序的腳本代碼。我們可以在這個文件中監聽並處理小程序的生命周期函數、聲明全局變量。調用框架提供的豐富的 API,如本例的同步存儲及同步讀取本地數據。
2、 app.json 是對整個小程序的全局配置。我們可以在這個文件中配置小程序是由哪些頁面組成,配置小程序的窗口背景色,配置導航條樣式,配置默認標題。注意該文件不可添加任何注釋。
3、app.wxss 是整個小程序的公共樣式表。我們可以在頁面組件的 class 屬性上直接使用 app.wxss 中聲明的樣式規則。
我們注意到,在實例程序的代碼中還有2個文件夾,一個是pages,一個是utils,其中utils是放通用工具類方法的一個文件夾,pages是存放所有頁面的文件夾。我們着重講一下這個pages.
第五步:小程序頁面文件構成
在這個示例中,我們有兩個頁面,index 頁面和 logs 頁面,即歡迎頁和小程序啟動日志的展示頁,他們都在 pages 目錄下。微信小程序中的每一個頁面的【路徑+頁面名】都需要寫在 app.json 的 pages 中,且 pages 中的第一個頁面是小程序的首頁。
每一個小程序頁面是由同路徑下同名的四個不同后綴文件組成的,如:index.js、index.wxml、index.wxss、index.json。.js
后綴的文件是腳本文件,.json
后綴的文件是配置文件,.wxss
后綴的是樣式表文件,.wxml
后綴的文件是頁面結構文件。
index.wxml 是頁面的結構文件:
<!--index.wxml--> <view class="container"> <view class="userinfo"> <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 獲取頭像昵稱 </button> <block wx:else> <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image> <text class="userinfo-nickname">{{userInfo.nickName}}</text> </block> </view> <view class="usermotto"> <text class="user-motto">{{motto}}</text> </view> </view>
本例中使用了<view>
、<image>
、<text>、
<button>等組件
來搭建頁面結構,綁定數據和交互處理函數。
index.js 是頁面的腳本文件,在這個文件中我們可以監聽並處理頁面的生命周期函數、獲取小程序實例,聲明並處理數據,響應頁面交互事件等。
//index.js //獲取應用實例 const app = getApp() Page({ data: { motto: 'Hello World', userInfo: {}, hasUserInfo: false, canIUse: wx.canIUse('button.open-type.getUserInfo') }, //事件處理函數 bindViewTap: function() { wx.navigateTo({ url: '../logs/logs' }) }, onLoad: function () { if (app.globalData.userInfo) { this.setData({ userInfo: app.globalData.userInfo, hasUserInfo: true }) } else if (this.data.canIUse){ // 由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回 // 所以此處加入 callback 以防止這種情況 app.userInfoReadyCallback = res => { this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } } else { // 在沒有 open-type=getUserInfo 版本的兼容處理 wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } }, getUserInfo: function(e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) } })
index.wxss 是頁面的樣式表:
/**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; }
頁面的樣式表是非必要的。當有頁面樣式表時,頁面的樣式表中的樣式規則會層疊覆蓋 app.wxss 中的樣式規則。如果不指定頁面的樣式表,也可以在頁面的結構文件中直接使用 app.wxss 中指定的樣式規則。
index.json 是頁面的配置文件:
頁面的配置文件也是非必要的。當有頁面的配置文件時,配置項在該頁面會覆蓋 app.json 的 window 中相同的配置項。如果沒有指定的頁面配置文件,則在該頁面直接使用 app.json 中的默認配置。
logs 的頁面結構
<!--logs.wxml--> <view class="container log-list"> <block wx:for-items="{{logs}}" wx:for-item="log"> <text class="log-item">{{index + 1}}. {{log}}</text> </block> </view>
logs 頁面使用 <block/>
控制標簽來組織代碼,在 <block/>
上使用 wx:for-items
綁定 logs
數據,並將 logs
數據循環展開節點
//logs.js var util = require('../../utils/util.js') Page({ data: { logs: [] }, onLoad: function () { this.setData({ logs: (wx.getStorageSync('logs') || []).map(function (log) { return util.formatTime(new Date(log)) }) }) } })
運行結果如下:
第五步:手機預覽
點擊開發工具的頂部工具欄中的"預覽",即可生成預覽二維碼,用微信掃碼后即可在微信客戶端中預覽體驗。
以上便是微信小程序前端開發的基本流程,而實際上要做一個內容可以更新的小程序,單有前端開發是遠遠不夠的,還需要后台開發。后台開發與web開發的后台基本無異,可以選擇用java、php、nodejs等任一語言,有一點需要注意的是小程序后台服務器必須是https協議的,這就要求必須購買雲服務器並將后台服務器設置成https服務。
本文由微信公眾號“微little程序”整理發布,可在微信中搜索公眾號“微little程序”關注,也可掃描下面的二維碼關注。專注微信小程序領域,發布微信小程序資訊,探討微信小程序開發技術。
由於篇幅有限,有關注冊小程序賬號、小程序代碼開發的詳細教程請在公眾號“微little程序”中瀏覽。
最新文章也將第一時間在該公眾號中發布。