一、小程序對npm的支持與限制
目前,小程序中已經支持使用 npm 安裝第三方包,從而來提高小程序的開發效率。但是,在小程序中使用npm 包有如下3個限制:
① 不支持依賴于 Node.js 內置庫的包
② 不支持依賴于瀏覽器內置對象的包
③ 不支持依賴于 C++ 插件的包
總結:雖然 npm 上的包有千千萬,但是能供小程序使用的包卻“為數不多”
二、Vant Weapp
1、什么是Vant Weapp
Vant Weapp 是有贊前端團隊開源的一套小程序 U 組件庫,助力開發者快速搭建小程序應用。它所使用的是MIT 開源許可協議,對商業使用比較友好。
官方文檔地址 https://youzan.github.io/vant-weapp
2、安裝Vant組件庫
在小程序項目中,安裝 Vant 組件庫主要分為如下3步:
① 通過 npm 安裝(建議指定版本為@1.3.3)
② 構建 npm 包
③ 修改 app.json
安裝Vant組件庫?
詳細的操作步驟,大家可以參考 Vant 官方提供的快速上手教程:
https://youzan.github.io/vant-weapp/#/quickstart#an-zhuang
3、使用Vant組件
安裝完 Vant 組件庫之后,可以在 app.json 的 usingComponents 節點中引入需要的組件,即可在 wxml 中直接使用組件。示例代碼如下:
//app.json
"usingComponents":{"van-button":"@vant/weapp/button/index"
}//頁面的.wxml結構
<van-button type="primary">按鈕</van-button>
4、定制全局主題樣式
Vant Weapp 使用 CSS 變量來實現定制主題。 關于 CSS 變量的基本用法,請參考 MDN 文檔https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_css_custom_properties
5、定制全局主題樣式
在app.wxss中,寫入CSS變量,即對全局生效:
/* app.wxss */
page{/*定制警告按鈕的背景顏色和邊框顏色*/--button-danger-background-color: #C00000;--button-danger-border-color: #D60000;
}
三、API Promise化
1、基于回調函數的異步API的缺點
默認情況下,小程序官方提供的異步 AP! 都是基于回調函數實現的,例如,網絡請求的 API需要按照如下的方式調用:
wx.request({method:'',url:'',data:{},success:()=>{},//請求成功的回調函數fail:()=>{},//請求失敗的回調函數complete:()={}//請求完成的回調函數
})
缺點:容易造成回調地獄的問題,代碼的可讀性、維護性差!
2、什么是API Promise化
API Promise化,指的是通過額外的配置,將官方提供的、基于回調函數的異步 API,升級改造為基于Promise 的異步 API,從而提高代碼的可讀性、維護性,避免回調地獄的問題。
3、實現API Promise化
在小程序中,實現 APIPromise 化主要依賴于 miniprogram-api-promise 這個第三方的 npm 包。它的安裝和使用步驟如下:
在項目下打開PowerShell窗口輸入一下
npm install --save miniprogram-api-promise@1.0.4
//小程序入口文件中(app.js),只需調用一次promisifyAll()方法,
//即可實現異步API的Promise化
import {promisifyAll} from 'miniprogram-api-promise'const wxp = wx.p = {}
//promisify all wx's api
promisifyAll(wx, wxp)
4、調用Promise化之后的異步API
//頁面的.wxml結構
<van-button type="danger" bindtap="getInfo">vant按鈕</van-button>//在頁面的.js文件中,定義對應的tap事件處理函數
async getInfo(){const{data:res} = await wx.p.request({method:'GET',url:'https://www.escook.cn/api/get',data:{name: 'zs',age:20}})consolr.log(res)
}