全棧開發工程師微信小程序-中(中)

標題圖

全棧開發工程師微信小程序-中(中)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>

onShareAppMessagejson

案例: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是事件綁定的當前組件.keybindcatch開頭,常見: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文件不會被打包上傳,目的是爲了優化大小.

效果

若是勾了 ES6ES5或代碼壓縮,目的是爲了優化編譯的速度,對於體積過大的文件,工具就會跳過這些文件.

調式工具7大模塊:

Wxml、Console、Sources、Network、Appdata、Storage、Sensor、Trace

注:uploadFiledownloadFile 暫時不支持在 Network Panel 中查看

build: 編譯小程序
preview: 預覽
upload: 上傳代碼
openVendor: 打開基礎庫所在目錄
openToolsLog: 打開工具日誌目錄
checkProxy(url): 檢查指定url

自定義數據上報

查看,點擊菜單欄中的 「工具 - 自定義分析」 .

Storage能夠用來顯示當前項目的wx.setStoragewx.setStorageSync後;
AppData能夠用於當前項目,顯示數據狀況;
Console能夠用來顯示小程序的輸出信息;
Sources能夠用來顯示當前項目的腳本文件;
Network能夠用來實現發送的請求和調用文件的信息;
Wxml能夠用來查看真實的頁面結構和屬性.

框架

小程序的框架有:

  1. 框架全局配置文件
  2. 工具類文件
  3. 框架頁面文件

框架全局配置文件

一個小程序框架全局配置文件有:

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

結語

  • 下面我將繼續對 其餘知識 深刻講解 ,有興趣能夠繼續關注
  • 小禮物走一走 or 點贊
相關文章
相關標籤/搜索