微信小程式-從零開始製作一個跑步微信小程式
一、準備工作
1、註冊一個小程式賬號,得用一個沒註冊過公眾號的郵箱註冊。
2、註冊過程中需要很多認證,有很多認證,比較繁瑣,如果暫時只是開發測試,不進行提審、釋出的話,只要完成營業執照號填寫就可以了,不需要完成微信認證。
3、註冊完賬號,登入,在主頁面左邊列表中點選設定,然後再設定頁面中選開發設定就可以看到AppID
,用於登入開發工具。
二、開發工具
開發工具 開發工具編輯頁面三、開始專案
開啟開發者工具,選擇小程式選項,到達新增專案頁面
新增專案這個時候在前面設定頁面的AppId
就用到了。
如果專案目錄中的檔案是個空資料夾,會提示是否建立quick start 專案。
選擇“是”,開發者工具會幫助我們在開發目錄裡生成一個簡單的 demo。
這個Demo擁有一個完整的小程式的大概框架。
1、框架
先看下一目錄:
檔案目錄.pngapp.js: 小程式邏輯,生命週期,,全域性變數
app.json: 小程式公共設定,導航欄顏色等,不可以註釋
app.wxss :小程式公共樣式,類CSS 。
小程式頁面構成:
頁面構成每一個小程式頁面是由同路徑下同名的四個不同字尾檔案的組成,如:index.js、index.wxml、index.wxss、index.json。
葛文佳介紹微信小程式中的每一個頁面的【路徑+頁面名】都需要寫在 app.json 的 pages 中,且 pages 中的第一個頁面是小程式的首頁。
路徑這四個檔案按照功能可以分成三個部分:
配置: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、模擬器
可以在模擬器上看效果,上面降到了執行底層不同,效果跟在手機上執行有些差異
2、真機
在左邊的選項欄中,選擇專案,然後點預覽會生產一個二維碼,用管理員微訊號掃一掃就可以在真機上看實際效果
實踐–跑步小程式。
真機執行截圖(運行於iPhone7,微信版本:6.3.30):
home.jpeg run.jpeg slideback.jpeg slide.jpeg功能:
能夠計算里程、時間、實時獲取跑步路徑(有些粗糙)
思路:
主要使用了微信小程式的獲取位置APIwx.getLocation()
和地圖元件map
。
首先實現一個計時器進行 計時,通過wx.getLocation()
獲取座標,把獲取到的座標存在一個數組中,通過座標每隔一段時間獲取里程,進行累加得到總里程,同時也通過座標點進行連線
存在的問題:
1、因為目前找不到在地圖上畫連線的方法,所以採用了在地圖上貼小紅點圖的方法顯示大概跑步路徑,路徑比較粗糙。
2、雖然採用了API裡面的火星座標gcj02型別,但是獲取的座標跟國際座標差不多,依然存在著偏差。
核心程式碼:
我把全部程式碼放在github上-weChatApp-Run,可以下載來看看或者先star收藏,我以後還會進行一些優化更新。現在只是一個學習Demo,大家溝通學習,實際應用還需更多優化。
wxml檔案佈局程式碼:
XHTML123456789101112131415161718192021 | <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檔案邏輯程式碼:
JavaScript123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 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列,如要購買付費,可以分 微信支付開發-從零開始-Part21、 簽名生成的通用步驟如下: 第一步,設所有傳送或者接收到的資料為集合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 |