web前端入門到實戰:擼兩個天氣小程式
經過最近兩年多的發展,小程式的地位也逐漸越來越高了,各個平臺前赴後繼做了自家的小程式平臺,隨著市場的需求越來愈多,uni-app 是一個使用 Vue.js 開發所有前端應用的框架,開發者編寫一套程式碼,可釋出到iOS、Android、H5、以及各種小程式(微信/支付寶/百度/頭條/QQ/釘釘)等多個平臺。即使不跨端,uni-app同時也是更好的小程式開發框架。
效果圖
1、獲取位置資訊
在定位功能中,本程式用到騰訊地圖的api 以及 騰訊天氣的api介面,
需要到官網中註冊開發者賬號,透過註冊後得到的appKey來請求我們需要的資料,詳細註冊步驟請自行度娘
由於需要用到定位功能,uniapp的getLocation方法獲取到的是當前位置的座標,然後對應騰訊地圖具體城市
uni.getLocation({ // #ifdef MP-WEIXIN type: 'wgs84', // #endif async success (res) { const {latitude, longitude} = res const result = await that.ajax({url: 'https://apis.map.qq.com/ws/geocoder/v1', data: { location: `${latitude},${longitude}`, key: '' }}) let {province, city, district} = result.result.address_component that.getData(province, city, district) }, fail(){ uni.showModal({ content: '檢測到您沒開啟定位許可權,是否去設定開啟?', confirmText: "確認", cancelText: "取消", success: function (res) { if (res.confirm) { // #ifdef MP-WEIXIN wx.openSetting({ success: (res) => { that.getIn() } }) // #endif // #ifdef MP-ALIPAY my.openSetting({ success: (res) => { that.getIn() } }) // #endif } } }); } }) web前端開發學習Q-q-u-n:784783012 ,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端專案實戰教學影片)
2、查詢天氣
得到城市名後,再用城市名查詢天氣的介面,得到未來幾天的天氣預報。
天氣介面使用騰訊天氣介面api。
在小程式中使用前,要在小程式設定介面,開發設定中新增request合法域名。
methods: { async getData(province, city, district){ const that = this const data = await that.ajax({url: 'https://wis.qq.com/weather/common', data: { source: 'xw', weather_type: 'observe|alarm|air|forecast_1h|forecast_24h|index|limit|tips|rise', province: province, city: city, county: district }}) that.region = [province, city, district] if(data.status != 200){ uni.showToast({ title: result.message, icon: 'none' }); return false; } if(!data.data.air.aqi_name){ uni.showToast({ title: '暫無該地區的天氣資訊', icon: 'none' }); return false; } that.data = data.data } } web前端開發學習Q-q-u-n:784783012 ,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端專案實戰教學影片)
3、小程式介面
由於沒有什麼審美,缺乏想象力,參考騰訊天氣的介面來做的。功能十分簡單,檢視當前地區的天氣和切換其他地區的天氣,檢視最近24小時的天氣情況以及最近6天的天氣情況,展示今天的農曆時間。
4、外掛使用
想快速完成小程式的搭建,裡面的折線圖採用的
,
因為可以相容支付寶小程式和微信小程式,農曆查詢也是採用的外掛calendar.js
折線圖在支付寶小程式中會有模糊的問題,需要做相容處理
<template> <!-- #ifdef MP-ALIPAY --> <canvas canvas-id="canvas" id="canvas" width="750" height="240" style="width:750rpx;height:240rpx;" class="canvas"> </canvas> <!-- #endif --> <!-- #ifdef MP-WEIXIN --> <canvas canvas-id="canvas" id="canvas" class="canvas"> </canvas> <!-- #endif --> </template> <script> var wxCharts = require('../../utils/chart.js'); lineChart = new wxCharts({ $this: this, canvasId: 'canvas', type: 'line', categories: ['', '', '', '', '' ,''], colors: ['#ffad35', '#4fc3f7'], background: '#fff', animation: true, series: [{ name: '', data: that.max, format: function (val, name) { return val + '°'; } }, { name: '', data: that.min, format: function (val, name) { return val + '°'; } }], xAxis: { disableGrid: true, disabled: true, axisLine: false }, yAxis: { max: Math.max.apply(Math, that.max) * 1 + 0.1, disabled: true, disableGrid: true, }, legend:{ show: false }, // #ifdef MP-ALIPAY pixelRatio: that.pixelRatio, // 解決支付寶模糊問題 // #endif width: that.cWidth, height: that.cHeight }); </script>
微信小程式有城市選擇元件,支付寶的沒有可以直接使用的城市元件,uniapp官方介紹:支援安裝 mpvue 元件,但npm方式不支援小程式自定義元件(如 wxml格式的vant-weapp),找到一款支付寶可以使用的城市外掛:
,
城市選擇元件
<template> <view class="txt-location" @tap="showCityPicker"> <view class="icon"></view> <block v-if="region.length">{{region[0]}}{{region[1]}}{{region[2]}}</block> <block v-else>選擇城市</block> <!-- #ifdef MP-WEIXIN --> <picker class="city" mode="region" @change="handleChange" :value="region"> <view class="picker"> 當前選擇:{{region[0]}},{{region[1]}},{{region[2]}} </view> </picker> <!-- #endif --> </view> <mpvue-city-picker ref="mpvueCityPicker" :pickerValueDefault="pickerValueDefault" @onConfirm="onConfirm"></mpvue-city-picker> </template> <script> import mpvueCityPicker from 'mpvue-citypicker'; export default { data() { return { region: [], pickerValueDefault: [0, 0, 1] }; }, components: { mpvueCityPicker }, methods: { showCityPicker() { // #ifdef MP-ALIPAY this.$refs.mpvueCityPicker.show() // #endif }, onConfirm(e) { if(e.label){ this.region = e.label.split('-') this.getData(this.region[0], this.region[1], this.region[2]) } }, handleChange(e) { this.region = e.detail.value this.getData(this.region[0], this.region[1], this.region[2]) } } }; </script> web前端開發學習Q-q-u-n:784783012 ,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端專案實戰教學影片)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2662429/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 兩天擼一個天氣應用微信小程式微信小程式
- 擼一個微信天氣小程式
- 從入門到上線一個天氣小程式
- web前端入門到實戰:Js代理模式Web前端JS模式
- 微信小程式入門到實戰(三)微信小程式
- 微信小程式入門到實戰(二)微信小程式
- 微信小程式入門到實戰(一)微信小程式
- web前端入門到實戰:30行前端程式碼實現任意文字轉粒子Web前端
- 小程式從入門到實戰系列(一)
- web前端入門到實戰:HTML元素巢狀問題Web前端HTML巢狀
- web前端入門到實戰:好用的Js圖表庫Web前端JS
- web前端入門到實戰:css3 實現大轉盤Web前端CSSS3
- web前端入門到實戰:簡單的圖片輪播Web前端
- web前端入門到實戰:常用網頁元素命名規範Web前端網頁
- 小程式入門到實戰(二)--案例原始碼分享原始碼
- web前端入門到實戰:H5-canvas實現粒子時鐘Web前端H5Canvas
- web前端入門到實戰:css騷操作之表單驗證Web前端CSS
- 兩週擼一個掘金微信小程式微信小程式
- web前端入門到實戰:非同步載入CSS最簡單的實現方式Web前端非同步CSS
- web前端入門到實戰:JS中new操作符原始碼實現Web前端JS原始碼
- 小冊《從 0 到 1 實現天氣小程式》跳坑記一
- web前端入門到實戰:CSS 層疊上下文(Stacking Context)Web前端CSSContext
- web前端入門到實戰:css滑鼠經過彈出子選單特效Web前端CSS特效
- web前端入門到實戰:js擷取字串相關的知識點Web前端JS字串
- web前端入門到實戰:html元素有多個類名時,樣式覆蓋問題Web前端HTML
- 七天.NET 8操作SQLite入門到實戰 - 第三天SQLite快速入門SQLite
- Flutter For Web入門實戰FlutterWeb
- Web前端之 CSS入門第六天Web前端CSS
- web前端入門到實戰:你真的瞭解CSS繼承嗎?看完必跪Web前端CSS繼承
- web前端入門到實戰:css3迴圈,模擬拼多多動畫效果Web前端CSSS3動畫
- 【從頭到腳】擼一個多人視訊聊天 — 前端 WebRTC 實戰(一)前端Web
- web3從入門到實戰-理論篇Web
- Natsuha - 用Taro寫個天氣微信小程式微信小程式
- React實戰之React+Redux實現一個天氣預報小專案ReactRedux
- web3從入門到實戰-NFT與代幣Web
- 前端大資料視覺化從入門到實戰前端大資料視覺化
- 米8搶到沒?不急,擼個小程式先?
- Locust 從入門到實戰