欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。

 更新時(shí)間:2022年12月03日 15:30:39   投稿:yin  
微信小程序如何使用小程序API,去調(diào)用微信提供的各種內(nèi)置能力(即微信API)。小程序開發(fā)框架提供豐富的微信原生API,可以方便的調(diào)起微信提供的能力,如獲取用戶信息,本地存儲(chǔ),支付功能等。

微信小程序如何使用小程序API,去調(diào)用微信提供的各種內(nèi)置能力(即微信API)。小程序開發(fā)框架提供豐富的微信原生API,可以方便的調(diào)起微信提供的能力,如獲取用戶信息,本地存儲(chǔ),支付功能等。

一、WXML 渲染語(yǔ)法

前面說過,小程序的頁(yè)面結(jié)構(gòu)使用 WXML 語(yǔ)言進(jìn)行描述。

WXML 的全稱是微信頁(yè)面標(biāo)簽語(yǔ)言(Weixin Markup Language),它不僅提供了許多功能標(biāo)簽,還有一套自己的語(yǔ)法,可以設(shè)置頁(yè)面渲染的生效條件,以及進(jìn)行循環(huán)處理。

微信 API 提供的數(shù)據(jù),就通過 WXML 的渲染語(yǔ)法展現(xiàn)在頁(yè)面上。比如,home.js里面的數(shù)據(jù)源是一個(gè)數(shù)組。

Page({
  data: {
    items: ['事項(xiàng) A', '事項(xiàng) B', '事項(xiàng) C']
  }
});

上面代碼中,Page()的參數(shù)配置對(duì)象的data.items屬性是一個(gè)數(shù)組。通過數(shù)據(jù)綁定機(jī)制,頁(yè)面可以讀取全局變量items,拿到這個(gè)數(shù)組。

拿到數(shù)組以后,怎樣將每一個(gè)數(shù)組成員展現(xiàn)在頁(yè)面上呢?WXML 的數(shù)組循環(huán)語(yǔ)法,就是一個(gè)很簡(jiǎn)便的方法。

打開home.wxml,改成下面的代碼。

<view>
  <text class="title" wx:for="{{items}}">
    {{index}}、 {{item}}
   </text>
</view>

上面代碼中,<text>標(biāo)簽的wx:for屬性,表示當(dāng)前標(biāo)簽(<text>)啟用數(shù)組循環(huán),處理items數(shù)組。數(shù)組有多少個(gè)成員,就會(huì)生成多少個(gè)<text>。渲染后的頁(yè)面結(jié)構(gòu)如下。

<view>
  <text>...</text>
  <text>...</text>
  <text>...</text>
</view>

在循環(huán)體內(nèi),當(dāng)前數(shù)組成員的位置序號(hào)(從0開始)綁定變量index,成員的值綁定變量item。

開發(fā)者工具導(dǎo)入項(xiàng)目代碼,頁(yè)面渲染結(jié)果。

WXML 的其他渲染語(yǔ)法(主要是條件判斷和對(duì)象處理),請(qǐng)查看官方文檔。

二、客戶端數(shù)據(jù)儲(chǔ)存

頁(yè)面渲染用到的外部數(shù)據(jù),如果每次都從服務(wù)器或 API 獲取,有時(shí)可能會(huì)比較慢,用戶體驗(yàn)不好。

小程序允許將一部分?jǐn)?shù)據(jù)保存在客戶端(即微信 App)的本地儲(chǔ)存里面(其實(shí)就是自定義的緩存)。下次需要用到這些數(shù)據(jù)的時(shí)候,就直接從本地讀取,這樣就大大加快了渲染。本節(jié)介紹怎么使用客戶端數(shù)據(jù)儲(chǔ)存。

打開home.wxml,改成下面的代碼。

<view>
  <text class="title" wx:for="{{items}}">
    {{index}}、 {{item}}
   </text>
   <input placeholder="輸入新增事項(xiàng)" bind:input="inputHandler"/>
   <button bind:tap="buttonHandler">確定</button>
</view>

上面代碼除了展示數(shù)組items,還新增了一個(gè)輸入框和一個(gè)按鈕,用來(lái)接受用戶的輸入。背后的意圖是,用戶通過輸入框,為items數(shù)組加入新成員。

開發(fā)者工具導(dǎo)入項(xiàng)目代碼,頁(yè)面渲染結(jié)果。

注意,輸入框有一個(gè)input事件的監(jiān)聽函數(shù)inputHandler(輸入內(nèi)容改變時(shí)觸發(fā)),按鈕有一個(gè)tap事件的監(jiān)聽函數(shù)buttonHandler(點(diǎn)擊按鈕時(shí)觸發(fā))。這兩個(gè)監(jiān)聽函數(shù)負(fù)責(zé)處理用戶的輸入。

然后,打開home.js,代碼修改如下。

Page({
  data: {
    items: [],
    inputValue: ''
  },
  inputHandler(event) {
    this.setData({
      inputValue: event.detail.value || ''
    });
  },
  buttonHandler(event) {
    const newItem = this.data.inputValue.trim();
    if (!newItem) return;
    const itemArr = [...this.data.items, newItem];
    wx.setStorageSync('items', itemArr);
    this.setData({ items: itemArr });
  },
  onLoad() {
    const itemArr = wx.getStorageSync('items') || []; 
    this.setData({ items: itemArr });
  }
});

上面代碼中,輸入框監(jiān)聽函數(shù)inputHandler()只做了一件事,就是每當(dāng)用戶的輸入發(fā)生變化時(shí),先從事件對(duì)象eventdetail.value屬性上拿到輸入的內(nèi)容,然后將其寫入全局變量inputValue。如果用戶刪除了輸入框里面的內(nèi)容,inputValue就設(shè)為空字符串。

按鈕監(jiān)聽函數(shù)buttonHandler()是每當(dāng)用戶點(diǎn)擊提交按鈕,就會(huì)執(zhí)行。它先從inputValue拿到用戶輸入的內(nèi)容,確定非空以后,就將其加入items數(shù)組。然后,使用微信提供的wx.setStorageSync()方法,將items數(shù)組存儲(chǔ)在客戶端。最后使用this.setData()方法更新一下全局變量items,進(jìn)而觸發(fā)頁(yè)面的重新渲染。

wx.setStorageSync()方法屬于小程序的客戶端數(shù)據(jù)儲(chǔ)存 API,用于將數(shù)據(jù)寫入客戶端儲(chǔ)存。它接受兩個(gè)參數(shù),分別是鍵名和鍵值。與之配套的,還有一個(gè)wx.getStorageSync()方法,用于讀取客戶端儲(chǔ)存的數(shù)據(jù)。它只有一個(gè)參數(shù),就是鍵名。這兩個(gè)方法都是同步的,小程序也提供異步版本,請(qǐng)參考官方文檔。

最后,上面代碼中,Page()的參數(shù)配置對(duì)象還有一個(gè)onLoad()方法。該方法屬于頁(yè)面的生命周期方法,頁(yè)面加載后會(huì)自動(dòng)執(zhí)行該方法。它只執(zhí)行一次,用于頁(yè)面初始化,這里的意圖是每次用戶打開頁(yè)面,都通過wx.getStorageSync()方法,從客戶端取出以前存儲(chǔ)的數(shù)據(jù),顯示在頁(yè)面上。

必須牢記的是,客戶端儲(chǔ)存是不可靠的,隨時(shí)可能消失(比如用戶清理緩存)。用戶換了一臺(tái)手機(jī),或者本機(jī)重裝微信,原來(lái)的數(shù)據(jù)就丟失了。所以,它只適合保存一些不重要的臨時(shí)數(shù)據(jù),最常見的用途一般就是作為緩存,加快頁(yè)面顯示。

三、遠(yuǎn)程數(shù)據(jù)請(qǐng)求

小程序可以從外部服務(wù)器讀取數(shù)據(jù),也可以向服務(wù)器發(fā)送數(shù)據(jù)。本節(jié)就來(lái)看看怎么使用小程序的網(wǎng)絡(luò)能力。

微信規(guī)定,只有后臺(tái)登記過的服務(wù)器域名,才可以進(jìn)行通信。不過,開發(fā)者工具允許開發(fā)時(shí)放松這個(gè)限制。

按照上圖,點(diǎn)擊開發(fā)者工具右上角的三條橫線("詳情"),選中"不校驗(yàn)合法域名、web-view(業(yè)務(wù)域名)、TLS 版本以及 HTTPS 證書" 。這樣的話,小程序在開發(fā)時(shí),就可以跟服務(wù)器進(jìn)行通信了。

下面,我們?cè)诒镜貑?dòng)一個(gè)開發(fā)服務(wù)器。為了簡(jiǎn)單起見,我選用了 json-server 作為本地服務(wù)器,它的好處是只要有一個(gè) JSON 數(shù)據(jù)文件,就能自動(dòng)生成 RESTful 接口。

首先,新建一個(gè)數(shù)據(jù)文件db.json,內(nèi)容如下。

{
  "items": ["事項(xiàng) A", "事項(xiàng) B", "事項(xiàng) C"]
}

然后,確認(rèn)本機(jī)安裝了 Node.js 以后,進(jìn)入db.json所在的目錄,在命令行執(zhí)行下面命令,啟動(dòng)服務(wù)器。

npx json-server db.json

正常情況下,這時(shí)你打開瀏覽器訪問localhost:3000/items這個(gè)網(wǎng)址,就能看到返回了一個(gè)數(shù)組["事項(xiàng) A", "事項(xiàng) B", "事項(xiàng) C"]。

接著,打開home.js,代碼修改如下。

Page({
  data: { items: [] },
  onLoad() {
    const that = this;
    wx.request({
      url: 'http://localhost:3000/items',
      success(res) {
        that.setData({ items: res.data });
      }
    });
  }
});

上面代碼中,生命周期方法onLoad()會(huì)在頁(yè)面加載后自動(dòng)執(zhí)行,這時(shí)就會(huì)執(zhí)行wx.request()方法去請(qǐng)求遠(yuǎn)程數(shù)據(jù)。如果請(qǐng)求成功,就會(huì)執(zhí)行回調(diào)函數(shù)succcess(),更新頁(yè)面全局變量items,從而讓遠(yuǎn)程數(shù)據(jù)顯示在頁(yè)面上。

wx.request()方法就是小程序的網(wǎng)絡(luò)請(qǐng)求 API,通過它可以發(fā)送 HTTP 請(qǐng)求。它的參數(shù)配置對(duì)象最少需要指定url屬性(請(qǐng)求的網(wǎng)址)和succcess()方法(服務(wù)器返回?cái)?shù)據(jù)的處理函數(shù))。其他參數(shù)請(qǐng)參考官方文檔。

開發(fā)者工具導(dǎo)入項(xiàng)目代碼,頁(yè)面渲染結(jié)果。它的初始數(shù)據(jù)是從服務(wù)器拿到的。

這個(gè)例子只實(shí)現(xiàn)了遠(yuǎn)程數(shù)據(jù)獲取,json-server 實(shí)際上還支持?jǐn)?shù)據(jù)的新增和刪改,大家可以作為練習(xí),自己來(lái)實(shí)現(xiàn)。

四、<open-data>組件

如果要在頁(yè)面上展示當(dāng)前用戶的身份信息,可以使用小程序提供的<open-data>組件。

打開home.wxml文件,代碼修改如下。

<view>
  <open-data type="userAvatarUrl"></open-data>
  <open-data type="userNickName"></open-data>
</view>

上面代碼中,<open-data>組件的type屬性指定所要展示的信息類型,userAvatarUrl表示展示用戶頭像,userNickName表示用戶昵稱。

開發(fā)者工具導(dǎo)入項(xiàng)目代碼,頁(yè)面渲染結(jié)果,顯示你的頭像和用戶昵稱。

<open-data>支持的用戶信息如下。

  • userNickName:用戶昵稱
  • userAvatarUrl:用戶頭像
  • userGender:用戶性別
  • userCity:用戶所在城市
  • userProvince:用戶所在省份
  • userCountry:用戶所在國(guó)家
  • userLanguage:用戶的語(yǔ)言

<open-data>不需要用戶授權(quán),也不需要登錄,所以用起來(lái)很方便。但也是因?yàn)檫@個(gè)原因,小程序不允許用戶腳本讀取<open-data>返回的信息。

五、獲取用戶個(gè)人信息

如果想拿到用戶的個(gè)人信息,必須得到授權(quán)。官方建議,通過按鈕方式獲取授權(quán)。

打開home.wxml文件,代碼修改如下。

<view>
  <text class="title">hello {{name}}</text>
  <button open-type="getUserInfo" bind:getuserinfo="buttonHandler">
    授權(quán)獲取用戶個(gè)人信息
  </button>
</view>

上面代碼中,<button>標(biāo)簽的open-type屬性,指定按鈕用于獲取用戶信息,bind:getuserinfo屬性表示點(diǎn)擊按鈕會(huì)觸發(fā)getuserinfo事件,即跳出對(duì)話框,詢問用戶是否同意授權(quán)。

用戶點(diǎn)擊"允許",腳本就可以得到用戶信息。

home.js文件的腳本代碼如下。

Page({
  data: { name: '' },
  buttonHandler(event) {
    if (!event.detail.userInfo) return;
    this.setData({
      name: event.detail.userInfo.nickName
    });
  }
});

上面代碼中,buttonHandler()是按鈕點(diǎn)擊的監(jiān)聽函數(shù),不管用戶點(diǎn)擊"拒絕"或"允許",都會(huì)執(zhí)行這個(gè)函數(shù)。我們可以通過事件對(duì)象event有沒有detail.userInfo屬性,來(lái)判斷用戶點(diǎn)擊了哪個(gè)按鈕。如果能拿到event.detail.userInfo屬性,就表示用戶允許讀取個(gè)人信息。這個(gè)屬性是一個(gè)對(duì)象,里面就是各種用戶信息,比如頭像、昵稱等等。

實(shí)際開發(fā)中,可以先用wx.getSetting()方法判斷一下,用戶是否已經(jīng)授權(quán)過。如果已經(jīng)授權(quán)過,就不用再次請(qǐng)求授權(quán),而是直接用wx.getUserInfo()方法獲取用戶信息。

注意,這種方法返回的用戶信息之中,不包括能夠真正識(shí)別唯一用戶的openid屬性。這個(gè)屬性需要用到保密的小程序密鑰去請(qǐng)求,所以不能放在前端獲取,而要放在后端。這里就不涉及了。

六、多頁(yè)面的跳轉(zhuǎn)

真正的小程序不會(huì)只有一個(gè)頁(yè)面,而是多個(gè)頁(yè)面,所以必須能在頁(yè)面之間實(shí)現(xiàn)跳轉(zhuǎn)。

app.json配置文件的pages屬性就用來(lái)指定小程序有多少個(gè)頁(yè)面。

{
  "pages": [
    "pages/home/home",
    "pages/second/second"
  ],
  "window": ...
}

上面代碼中,pages數(shù)組包含兩個(gè)頁(yè)面。以后每新增一個(gè)頁(yè)面,都必須把頁(yè)面路徑寫在pages數(shù)組里面,否則就是無(wú)效頁(yè)面。排在第一位的頁(yè)面,就是小程序打開時(shí),默認(rèn)展示的頁(yè)面。

新建第二個(gè)頁(yè)面的步驟如下。

第一步,新建pages/second目錄。

第二步,在該目錄里面,新建文件second.js,代碼如下。

Page({});

第三步,新建第二頁(yè)的頁(yè)面文件second.wxml,代碼如下。

<view>
  <text class="title">這是第二頁(yè)</text>
  <navigator url="../home/home">前往首頁(yè)</navigator>
</view>

上面代碼中,<navigator>就是鏈接標(biāo)簽,相當(dāng)于網(wǎng)頁(yè)標(biāo)簽<a>,只要用戶點(diǎn)擊就可以跳轉(zhuǎn)到url屬性指定的頁(yè)面(這里是第一頁(yè)的位置)。

第四步,修改第一頁(yè)的頁(yè)面文件home.wxml,讓用戶能夠點(diǎn)擊進(jìn)入第二頁(yè)。

<view>
  <text class="title">這是首頁(yè)</text>
  <navigator url="../second/second">前往第二頁(yè)</navigator>
</view>

開發(fā)者工具導(dǎo)入項(xiàng)目代碼,頁(yè)面渲染。

用戶點(diǎn)擊"前往第二頁(yè)",就會(huì)看到第二個(gè)頁(yè)面。

七、wx.navigateTo()

除了使用<navigator>組件進(jìn)行頁(yè)面跳轉(zhuǎn),小程序也提供了頁(yè)面跳轉(zhuǎn)的腳本方法wx.navigateTo()。

首先,打開home.wxml文件,代碼修改如下。

<view>
  <text class="title">這是首頁(yè)</text>
  <button bind:tap="buttonHandler">前往第二頁(yè)</button>
</view>

開發(fā)者工具導(dǎo)入項(xiàng)目代碼,頁(yè)面渲染。

然后,打開home.js文件,代碼修改如下。

Page({
  buttonHandler(event) {
    wx.navigateTo({
      url: '../second/second'
    });
  }
});

上面代碼中,buttonHandler()是按鈕點(diǎn)擊的監(jiān)聽函數(shù),只要用戶點(diǎn)擊按鈕,就會(huì)調(diào)用wx.navigateTo()方法。該方法的參數(shù)是一個(gè)配置對(duì)象,該對(duì)象的url屬性指定了跳轉(zhuǎn)目標(biāo)的位置,自動(dòng)跳轉(zhuǎn)到那個(gè)頁(yè)面。

寫到這里,這個(gè)小程序入門教程就告一段落了,入門知識(shí)基本上都涉及了。下一步,大家可以閱讀小程序的官方教程使用文檔,爭(zhēng)取對(duì)小程序 API 有一個(gè)整體的把握,然后再去看看各種實(shí)際項(xiàng)目的源碼,應(yīng)該就可以動(dòng)手開發(fā)了。

到此這篇關(guān)于使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。的文章就介紹到這了,更多相關(guān)微信小程序內(nèi)置API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS中模糊查詢功能的一些常用方法

    JS中模糊查詢功能的一些常用方法

    在前端開發(fā)中,模糊查詢與下拉匹配是提高用戶體驗(yàn)的重要功能,特別是在搜索功能上,這篇文章主要給大家介紹了關(guān)于JS中模糊查詢功能的一些常用方法,需要的朋友可以參考下
    2024-06-06
  • 舉例分析HTTP?302?Redirect工作原理

    舉例分析HTTP?302?Redirect工作原理

    這篇文章主要為大家介紹了關(guān)于HTTP?302?Redirect的舉例分析,讓大家理解HTTP?302?Redirect工作原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2023-12-12
  • javascript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單

    javascript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單很詳細(xì)的代碼,解決了大家實(shí)現(xiàn)javascript省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單的問題,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 淺談gulp創(chuàng)建完整的項(xiàng)目流程

    淺談gulp創(chuàng)建完整的項(xiàng)目流程

    本篇文章主要介紹了淺談gulp創(chuàng)建完整的項(xiàng)目流程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-12-12
  • javascript 線性漸變二

    javascript 線性漸變二

    上部分我們逐一分析了各瀏覽器的可行方法,這部分將搞鼓出一個(gè)統(tǒng)一的類來(lái)實(shí)現(xiàn)跨瀏覽器的線性漸變。
    2009-10-10
  • APP中javascript+css3實(shí)現(xiàn)下拉刷新效果

    APP中javascript+css3實(shí)現(xiàn)下拉刷新效果

    本文給大家分享的是如何在APP中使用javascript結(jié)合CSS3實(shí)現(xiàn)下拉刷新特效的代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2016-01-01
  • 如何用純js實(shí)現(xiàn)返回頁(yè)面頂部功能

    如何用純js實(shí)現(xiàn)返回頁(yè)面頂部功能

    頁(yè)面返回頂部是在Web中常見的效果,在一個(gè)很長(zhǎng)的頁(yè)面中,頁(yè)面返回頂部按鈕可以方便用戶回到頁(yè)面的頂部,增強(qiáng)用戶體驗(yàn),這篇文章主要給大家介紹了關(guān)于如何用純js實(shí)現(xiàn)返回頁(yè)面頂部功能的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • js 蒙版進(jìn)度條(結(jié)合圖片)

    js 蒙版進(jìn)度條(結(jié)合圖片)

    js 結(jié)合圖片實(shí)現(xiàn)的蒙版進(jìn)度條效果。
    2010-03-03
  • JavaScript?中的數(shù)據(jù)類型Number

    JavaScript?中的數(shù)據(jù)類型Number

    這篇文章主要介紹了JavaScript?中的數(shù)據(jù)類型Number,Number?類型使用?IEEE?754?格式表示整數(shù)和浮點(diǎn)值,下文相關(guān)詳細(xì)資料介紹,需要的小伙伴可以參考一下
    2022-04-04
  • js實(shí)現(xiàn)網(wǎng)頁(yè)多級(jí)級(jí)聯(lián)菜單代碼

    js實(shí)現(xiàn)網(wǎng)頁(yè)多級(jí)級(jí)聯(lián)菜單代碼

    這篇文章主要介紹了js實(shí)現(xiàn)網(wǎng)頁(yè)多級(jí)級(jí)聯(lián)菜單代碼,涉及javascript基于數(shù)組動(dòng)態(tài)構(gòu)造多級(jí)級(jí)聯(lián)菜單的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論