全棧開發工程師微信小程序-中(中)javascript
open-data
用於展現微信開放的數據java
type 開放數據類型 open-gid 當 type="groupName" 時生效, 羣id lang 當 type="user*" 時生效,以哪一種語言展現 userInfo
<open-data type="groupName" open-gid="xxxxxx"></open-data> <open-data type="userAvatarUrl"></open-data> <open-data type="userGender" lang="zh_CN"></open-data>
web-view
web-view
組件是一個能夠用來承載網頁的容器.git
src webview 指向網頁的連接
案例:web
<web-view src="https://mp.weixin.qq.com/"></web-view>
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js" ></script>
onShareAppMessage
json
案例:canvas
Page({ onShareAppMessage(options) { console.log(options.webViewUrl) } })
ad
廣告小程序
目前暫時以邀請制開放申請,請留意後續模板消息的通知微信小程序
official-account
用戶掃碼打開小程序,在小程序內配置公衆號關注組件,快捷關注公衆號.api
使用前要前往小程序後臺,在「設置」->「接口設置」->「公衆號關注組件」中設置.微信
示例代碼:
<official-account></official-account>
原生組件
camera canvas input live-player live-pusher map textarea video // cover-view 與 cover-image
// 無障礙的屬性 button input textarea checkbox switch radio slider picker-view scroll-view progress navigator image icon view cover-view cover-image map
javascript
語言var arr = "dashucoding"; var arr = 10; var arr = true; var arr = [2,"dashu",23]; var arr = {name:"dashu"}; var name = "dashu"; if(name === "dashu"){ this.alert("dashucoding"); }else{ this.alert("dashu"); } // this表明當前的頁面對象
事件
事件是視圖層到邏輯層的通訊方式.事件分冒泡事件和非冒泡事件,冒泡事件是當一個組件上的事件被觸發後,會向父節點傳遞,非冒泡事件是不會向父節點傳遞的.
<view id="tapTest" data-hi="WeChat" bindtap="tapName">Click me!</view> target是觸發事件的源組件 currentTarget是事件綁定的當前組件 bindtap, catchtouchstart bind事件綁定不會阻止冒泡事件 向上冒泡 catch事件綁定能夠阻止冒泡事件冒泡事件 向上冒泡 // 事件對象能夠攜帶額外信息,如 id, dataset, touches Page({ tapName(event) { console.log(event) } }) changedTouches detail 自定義事件所攜帶的數據
touchstart 手指觸摸動做開始 touchmove 手指觸摸後移動 touchcancel 手指觸摸動做被打斷 touchend 手指觸摸動做結束 tap 手指觸摸後立刻離開
<view id="outer" bindtap="handleTap1"> outer view <view id="middle" catchtap="handleTap2"> middle view <view id="inner" bindtap="handleTap3">inner view</view> </view> </view>
<view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2" > outer view <view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4" > inner view </view> </view>
<view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view> Page({ bindViewTap(event) { event.currentTarget.dataset.alphaBeta === 1 // - 會轉爲駝峯寫法 event.currentTarget.dataset.alphabeta === 2 // 大寫會轉爲小寫 } })
事件:
target
是觸發事件的源組件,currentTarget
是事件綁定的當前組件.key
以bind
或catch
開頭,常見:bindtap
,catchtouchstart
.bind
事件綁定不會阻止冒泡事件向上冒泡,catch
事件綁定能夠阻止冒泡事件向上冒泡.
type: 事件類型 timeStamp: 事件生成時的時間截 target: 觸發事件的組件的一些屬性值集合 currentTarget: 當前組件的一些屬性值集合 TouchEvent: touches:當前停留在屏幕中的觸摸點信息 changedTouches:當前變化的觸摸點信息
三元操做符
let arr = x > 20 ? "dashu" : "dashucoding"
操做符
if(var !== null || var !== undefined || var !== ""){ }
<wxs module="util"> var sub = function(val) { return val.substring(0, 10) } var sub1 = function(val) { return val.substring(0, 7) } module.exports.sub1 = sub1; module.exports.sub = sub; </wxs> <wxs module="util"> var sub = function(val) { return val.substring(0, 10) } var subtxst = function(index) { if (index == "1") { return index = "病假" } else { return index = "事假" } } module.exports.sub = sub; module.exports.subtxst = subtxst; </wxs> {{util.subtxst(item.leaveType)}}
rpx
單位,是根據屏幕寬度進行自適應調整,規定的屏幕寬度爲750rpx
,在官方iphone6
上的屏幕寬度是375px
,共有750
個物理像素.
750rpx=375px=750物理像素 1rpx=0.5px=1物理像素
微信小程序基礎
調式功能,在小程序有調式工具:
Console, Sources, Network, Storage, AppData, wxml
小程序調式三大功能區:
模擬器,調式工具,小程序操做區
模擬器能夠對小程序在客戶端一些真實的表現,能夠呈現出顯示狀態.小程序中具備自定義編譯,能夠用來在開發者調式時進入不一樣的場景.
有時候上傳會有readme
和.gitignore
文件不會被打包上傳,目的是爲了優化大小.
若是勾了 ES6
轉 ES5
或代碼壓縮,目的是爲了優化編譯的速度,對於體積過大的文件,工具就會跳過這些文件.
調式工具7大模塊:
Wxml、Console、Sources、Network、Appdata、Storage、Sensor、Trace
注:
uploadFile
和downloadFile
暫時不支持在Network
Panel
中查看
build: 編譯小程序 preview: 預覽 upload: 上傳代碼 openVendor: 打開基礎庫所在目錄 openToolsLog: 打開工具日誌目錄 checkProxy(url): 檢查指定url
查看,點擊菜單欄中的 「工具 - 自定義分析」 .
Storage
能夠用來顯示當前項目的wx.setStorage
或wx.setStorageSync
後;
AppData
能夠用於當前項目,顯示數據狀況;
Console
能夠用來顯示小程序的輸出信息;
Sources
能夠用來顯示當前項目的腳本文件;
Network
能夠用來實現發送的請求和調用文件的信息;
Wxml
能夠用來查看真實的頁面結構和屬性.
框架
小程序的框架有:
框架全局配置文件
一個小程序框架全局配置文件有:
app.js
, app.json
, app.wxss
, 三個文件組成,全局文件都是在項目的根目錄.
// app.js App({ /** * 當小程序初始化完成時,會觸發 onLaunch(全局只觸發一次) */ // 生命週期函數 onLaunch: function() { // 獲取小程序更新機制兼容 if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function(res) { // 請求完新版本信息的回調 if (res.hasUpdate) { updateManager.onUpdateReady(function() { wx.showModal({ title: '更新提示', content: '新版本已經準備好,是否重啓應用?', success: function(res) { if (res.confirm) { // 新的版本已經下載好,調用 applyUpdate 應用新版本並重啓 updateManager.applyUpdate() } } }) }) updateManager.onUpdateFailed(function() { // 新的版本下載失敗 wx.showModal({ title: '已經有新版本了喲~', content: '新版本已經上線啦~,請您刪除當前小程序,從新搜索打開喲~', }) }) } }) } else { // 若是但願用戶在最新版本的客戶端上體驗您的小程序,能夠這樣子提示 wx.showModal({ title: '提示', content: '當前微信版本太低,沒法使用該功能,請升級到最新微信版本後重試。' }) } }, /** * 當小程序啓動,或從後臺進入前臺顯示,會觸發 onShow */ onShow: function(options) { }, /** * 當小程序從前臺進入後臺,會觸發 onHide */ onHide: function() { }, /** * 當小程序發生腳本錯誤,或者 api 調用失敗時,會觸發 onError 並帶上錯誤信息 */ onError: function(msg) { } })
// 定義全局數據 globalData: { userInfo: null }
// app.json : { "pages": ["pages/index/index", "pages/logs/index"], "window": { "navigationBarTitleText": "Demo" }, "tabBar": { "list": [ { "pagePath": "pages/index/index", "text": "首頁" }, { "pagePath": "pages/logs/logs", "text": "日誌" } ] }, "networkTimeout": { "request": 10000, "downloadFile": 10000 }, "debug": true, "navigateToMiniProgramAppIdList": ["wxe5f52902cf4de896"] } // 配置頁面路徑 // 配置窗口表現 // 配置標籤導航 // 配置網絡超時 // 配置debug模式
頁面配置項列表
{ "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black", "navigationBarTitleText": "微信接口功能演示", "backgroundColor": "#eeeeee", "backgroundTextStyle": "light" } navigationBarBackgroundColor 導航欄背景顏色 navigationBarTextStyle 導航欄標題顏色 navigationBarTitleText 導航欄標題文字內容 navigationStyle 導航欄樣式 backgroundColor 窗口的背景色 backgroundTextStyle 下拉 loading 的樣式,僅支持 dark / light enablePullDownRefresh 是否全局開啓下拉刷新 onReachBottomDistance 頁面上拉觸底事件觸發時距頁面底部距離 disableScroll 設置爲 true 則頁面總體不能上下滾動 disableSwipeBack 禁止頁面右滑手勢返回
小程序中有工具類文件: utils
, 經過module.exports
進行註冊使用.
App({ onLaunch: function() { }, onShow: function() { }, onHide: function() { }, onError: function() { }, globalData: 'dashucoding' })
若是看了以爲不錯
點贊!轉發!
達叔小生:日後餘生,惟獨有你
You and me, we are family !
90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動而且善於溝通
簡書博客: 達叔小生
https://www.jianshu.com/u/c785ece603d1