1. 程式人生 > >微信小程式-從零開始製作一個跑步微信小程式

微信小程式-從零開始製作一個跑步微信小程式

一、準備工作

1、註冊一個小程式賬號,得用一個沒註冊過公眾號的郵箱註冊。
2、註冊過程中需要很多認證,有很多認證,比較繁瑣,如果暫時只是開發測試,不進行提審、釋出的話,只要完成營業執照號填寫就可以了,不需要完成微信認證。
3、註冊完賬號,登入,在主頁面左邊列表中點選設定,然後再設定頁面中選開發設定就可以看到AppID,用於登入開發工具。

111819750-f342547cf1916b3d 主頁面 121819750-c0d366994ea28442 設定頁面

二、開發工具

131819750-9ce9b25dc71dfb83 開發工具 141819750-0f9c4f9eac30544c 開發工具編輯頁面

三、開始專案

開啟開發者工具,選擇小程式選項,到達新增專案頁面

151819750-e2a326972dde6bcd 新增專案

這個時候在前面設定頁面的AppId就用到了。

如果專案目錄中的檔案是個空資料夾,會提示是否建立quick start 專案。
選擇“是”,開發者工具會幫助我們在開發目錄裡生成一個簡單的 demo。
這個Demo擁有一個完整的小程式的大概框架。

1、框架

先看下一目錄:

161819750-b32bd589f698dac4 檔案目錄.png

app.js: 小程式邏輯,生命週期,,全域性變數
app.json: 小程式公共設定,導航欄顏色等,不可以註釋
app.wxss :小程式公共樣式,類CSS 。

小程式頁面構成:
171819750-ebee0fd2b89a187c 頁面構成

每一個小程式頁面是由同路徑下同名的四個不同字尾檔案的組成,如:index.js、index.wxml、index.wxss、index.json。

181819750-94ea900bb2e12460 葛文佳介紹

微信小程式中的每一個頁面的【路徑+頁面名】都需要寫在 app.json 的 pages 中,且 pages 中的第一個頁面是小程式的首頁。

191819750-c1940a47c64725df 路徑

這四個檔案按照功能可以分成三個部分:

配置:json 檔案
邏輯層:js檔案
檢視層:wxss.wxml檔案

在 iOS 上,小程式的 javascript 程式碼是執行在 JavaScriptCore 中
在 Android 上,小程式的 javascript 程式碼是通過 X5 核心來解析
在 開發工具上, 小程式的 javascript 程式碼是執行在 nwjs(chrome核心) 中。所以開發工具上的效果跟實際效果有所出入。

2、元件

微信提供了許多元件,主要分為八種:

檢視容器、
基礎內容、
表單元件、
操作反饋、
導航、
媒體元件、
地圖、
畫布

包含view、scroll-view、button、form等普通常用的元件,也提供了地圖map、畫布canvas

元件主要屬於檢視層,通過wxml來進行結構佈局,類似於html。通過wxss修改樣式,類似於css。
元件使用語法例項:

12 這是一個普通檢視樣式修改過的檢視

更多的元件以及相關使用方法可以到官方文件-元件檢視

3、API

網路
媒體
資料
位置
裝置
介面
開發介面

其中網路請求的使用必須先到公眾平臺登入小程式賬號,在設定頁面那裡,設定允許訪問的域名,網路請求包含了普通的http請求、支援上傳、下載、socket。基本上滿足了我們開發中所需要的網路需求。

這些API屬於邏輯層,寫在js檔案中,
使用例項:

12345678 wx.getLocation({type:'wgs84',success:function(res){varlatitude=res.latitude varlongitude=res.longitude varspeed=res.speed varaccuracy=res.accuracy}})

可以到官方文件-API檢視其它API的使用方法。

4、編譯執行

1、模擬器
可以在模擬器上看效果,上面降到了執行底層不同,效果跟在手機上執行有些差異

201819750-195c6b0a318eb2de 模擬器.png

2、真機
在左邊的選項欄中,選擇專案,然後點預覽會生產一個二維碼,用管理員微訊號掃一掃就可以在真機上看實際效果

211819750-8a621b6004d60464 Paste_Image.png

實踐–跑步小程式。

真機執行截圖(運行於iPhone7,微信版本:6.3.30):

221819750-3f78b677cfaad40e home.jpeg 231819750-cb5d8b8a7a888612 run.jpeg 241819750-460c81a2c4a7c1dd slideback.jpeg 251819750-7f05267108bf823b slide.jpeg

功能:

能夠計算里程、時間、實時獲取跑步路徑(有些粗糙)

思路:

主要使用了微信小程式的獲取位置APIwx.getLocation()和地圖元件map
首先實現一個計時器進行 計時,通過wx.getLocation()獲取座標,把獲取到的座標存在一個數組中,通過座標每隔一段時間獲取里程,進行累加得到總里程,同時也通過座標點進行連線
存在的問題:
1、因為目前找不到在地圖上畫連線的方法,所以採用了在地圖上貼小紅點圖的方法顯示大概跑步路徑,路徑比較粗糙。
2、雖然採用了API裡面的火星座標gcj02型別,但是獲取的座標跟國際座標差不多,依然存在著偏差。

核心程式碼:

我把全部程式碼放在github上-weChatApp-Run,可以下載來看看或者先star收藏,我以後還會進行一些優化更新。現在只是一個學習Demo,大家溝通學習,實際應用還需更多優化。

wxml檔案佈局程式碼:

XHTML
123456789101112131415161718192021 <view class="head"style="flex-direction:row;"><image class="icon"src="/resources/joyrun.png"mode="aspectFill"/><button bindtap="openLocation">開啟位置</button><button bindtap="starRun">開始跑步</button><button bindtap="stopRun">暫停跑步</button><text>\n里程數:{{meters}}km</text><text>\n\n時間:{{time}}</text></view><view class="mainView"><mapclass="mapView"style="width: 100%; height: 375px;"latitude="{{latitude}}"longitude="{{longitude}}"markers="{{markers}}"covers="{{covers}}"        ></map></view>

js檔案邏輯程式碼:

JavaScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 varcountTooGetLocation=0;vartotal_micro_second=0;varstarRun=0;vartotalSecond=0;varoriMeters=0.0;/* 毫秒級倒計時 */functioncount_down(that){if(starRun==0){return;}if(countTooGetLocation>=100){vartime=date_format(total_micro_second);that.updateTime(time);}if(countTooGetLocation>=5000){//1000為1sthat.getLocation();countTooGetLocation=0;}setTimeoutsetTimeout(function(){countTooGetLocation+=10;total_micro_second+=10;count_down(that);},10)}// 時間格式化輸出,如03:25:19 86。每10ms都會呼叫一次functiondate_format(micro_second){// 秒數varsecond=Math.floor(micro_second/1000);// 小時位varhr=Math.floor(second/3600);// 分鐘位varmin=fill_zero_prefix(Math.floor((second-hr*3600)/60));// 秒位varsec=fill_zero_prefix((second-hr*3600-min*60));// equal to => var sec = second % 60;returnhr+":"+min+":"+sec+" ";}functiongetDistance(lat1,lng1,lat2,lng2){vardis=0;varradLat1=toRadians(lat1);varradLat2=toRadians(lat2);vardeltaLat=radLat1-radLat2;vardeltaLng=toRadians(lng1)-toRadians(lng2);vardis=2*Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat/2),2)+Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(deltaLng/2),2)));returndis*6378137;functiontoRadians(d){returnd*Math.PI/180;}}functionfill_zero_prefix(num){returnnum<10?"0"+num:num}//****************************************************************************************//****************************************************************************************Page({data:{clock:'',isLocation:false,latitude:0,longitude:0,markers:[],covers:[],meters:0.00,time:"0:00:00"

相關推薦

程式-開始製作一個跑步程式

一、準備工作 1、註冊一個小程式賬號,得用一個沒註冊過公眾號的郵箱註冊。 2、註冊過程中需要很多認證,有很多認證,比較繁瑣,如果暫時只是開發測試,不進行提審、釋出的話,只要完成營業執照號填寫就可以了,不需要完成微信認證。 3、註冊完賬號,登入,在主頁面左邊列表中點選設定,然後再

實戰:開始製作一個跑步程式

一、準備工作 首先註冊一個小程式賬號,得用一個沒註冊過公眾號的郵箱註冊。 註冊過程中需要很多認證,比較繁瑣。如果暫時只是開發測試,不進行提審、釋出的話,只要完成營業執照號的填寫就可以了,不需要完成微信認證。 註冊完賬號,並使用該帳號進行登入。 在主頁面左邊列表中點

程式-開始新建一個專案

新建時,不勾選【建立普通快捷啟動模板】 在根目錄下建立3個應用程式檔案 app.json   app.js   app.wxss 在根目錄下建立pages檔案, 在pages檔案下建立welcome資料夾並建立四個頁面檔案 welcome.js

開始製作一個個人網站(2017.12.8更新,未完成)

1 你需要準備什麼(包括軟體和服務): IntelliJ IDEA2017.1 旗艦版(非常重要,因為社群版(IntelliJ IDEA CE)沒辦法新增tomcat Service 由於JetBrains破解器的存在大家可以比(si)較(wu)順(ji)暢

程式開始開發步驟(七)引入外部js 檔案

            上一章講到小程式頁面的四種常見的跳轉的方法,這一章寫如何引入一個外部的js檔案,既utils資料夾的用處,其實步驟很簡單:1:準備好外部想要引入的外部檔案,命名為util.js,並且填充固定的檔案內容(一般是固定的庫)圖片.png2:開啟util.js ,繼續填寫重要內容將要使用的方法

程式開始開發步驟(八)引入框架WeUI

            首先來看下WeUI的官方介紹:WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信內網頁和微信小程式量身設計,令使用者的使用感知更加統一。在微信小程式的開發過程中,涉及到的前端複雜的樣式介面的問題,就需要使用個UI框架,這樣可以省去以後很多麻煩。WeUI作為一個

程式開始開發步驟(二)

上一章註冊完小程式,新增新建的專案,大致的準備開發已經完成,本章要分享的是要建立一個簡單的頁面了,建立小程式頁面的具體幾個步驟:1. 在pages 中新增一個目錄選中page,右擊滑鼠,從硬碟開啟,開啟硬碟檔案之後,新建一個資料夾test(或者點選+號,逐個新增目錄,新增目錄下面所需要

程式開始開發步驟(三)底部導航欄

上一章節,我們分享瞭如何建立一個新的頁面和設定頁面的標題,這一章我們來聊聊底部導航欄是如何實現的。即點選底部的導航,會實現不同對應頁面之間的切換。 我們先來看個我們要實現的底部導航欄的效果圖:(三個導航圖示示例,微信小程式最多能加5個) 1. 圖標準備

程式開始開發步驟(六)4種頁面跳轉的方法

四種跳轉的方法,在index裡面寫下一段程式碼進行測試 1:從首頁跳轉到日誌頁面(可以返回) (注意,在沒有設定底部導航的情況下,沒有tab也可使用這個屬性,有tab頁則需更換switchTab屬性) <view> <navigator

程式開始開發步驟(四)自定義分享的功能

上一章節,實現了小程式的底部導航的功能,這一節開始實現一些簡單的功能。本章節介紹的是小程式的自定義分享的功能。 可以分享小程式的任何一個頁面給好友或群聊。注意是分享給好友或群聊,並沒有分享到朋友圈。一方面微信在嘗試流量分發方式,但同時又不願意開放最大的流量入口。

程式怎麼申請 開始一個程式教程

微信小程式申請前的準備: 首先,你需要註冊一個小程式賬號。需要用一個沒註冊過公眾號的郵箱註冊。註冊過程中需要很多認證,比較繁瑣。如果暫時只是試水、沒有釋出的打算,那麼只要完成基本資訊填寫就可以,不需要完成微信認證。 之後,就可以在公眾平臺使用註冊的帳戶進行登入。 然後,在主

程式開始開發步驟(一)

從零到有寫一個小程式系列專題,很早以前就想寫來分享,但由於專案一直在進展,沒有過多的時間研究技術,現在可以繼續分享了。1:註冊用沒有註冊過微信公眾平臺的郵箱註冊一個微信公眾號, 申請帳號 ,點選 https://mp.weixin.qq.com/wxopen/waregister?ac

程式開始開發步驟(二)建立程式頁面

上一章註冊完小程式,新增新建的專案,大致的準備開發已經完成,本章要分享的是 要建立一個簡單的頁面了,建立小程式頁面的具體幾個步驟: 1. 在pages 中新增一個目錄 選中page,右擊滑鼠,從硬碟開啟,開啟硬碟檔案之後,新建一個資料夾test(或者點選+號,逐個新增目錄

開始製作一款打卡類程式

這學期受某人所託,給學院做了一款打卡小程式。其效果如下: 一個類似論壇的社群,可發帖、評論、回覆。 打卡可換算積分,一天只能打卡一次,且有今日打卡排行榜實時展示。 跑步也可換算積分,換算的規則男女有別。 這個小程式的上線成本比較高,需要營業執照,還有

基於Bmob開始一個部落格程式

實現以下技能點 1、整合Bmob小程式SDK作為資料儲存 2、wemark解析markdown文字 3、列表頁佈局與上拉無限載入 實現的效果 一、建立Bmob應用 進入Bmob官網:http://bmob.cn/,註冊一個賬號,免費的賬號可以建立8個子應用,每個應用單表列數是20列,如要購買付費,可以分

支付開發-開始-Part2

1、 簽名生成的通用步驟如下: 第一步,設所有傳送或者接收到的資料為集合M,將集合M內非空引數值的引數按照引數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字串stringA。 特別注意以下重要規則: ◆ 引數名ASC

支付開發-開始-Part1

公司的產品是基於微信做的一個社群活動報名系統,產品研發還沒多久,以前僅僅支援免費報名-下一步要做付費報名,報名時即付費!由於基於微信報名,理所當然用微信支付。微信開發我也是首次,微信支付更不用說,真正

大四學長手把手教我們開始利用Python開發微公眾號!已學會

基礎配置 微信公眾 快遞 技術分享 工作 信息 怎麽 test 實現 在一般的使用中,我們可以通過設置關鍵字實現一些基本的自動回復功能,但是這樣的關鍵字回復遠遠不能滿足我們的實際需求,比如我們要實現一個查快遞的功能,必然是要通過調用快遞接口對不同用戶的不同輸

轉 Docker 開始製作基礎映象[centos]

轉自 https://blog.csdn.net/bolg_hero/article/details/50263569 http://www.oschina.net/news/62897/docker-hub-contains-high-risk-vulnerabilities 這裡有個統計,do

開始一個Spark Structured Streaming程式來統計單詞個數

本文將從零開始寫一個Spark Structured Streaming程式來統計單詞的個數。單詞的來源是socket,讀者也可以換成kafka,計算的結果輸出到控制檯,讀者也可以改成輸出到kafka的某個topic。 準備環境: JDK和Scala安裝,並配置好環境變數JAVA_H