微信小程序 17:小程序使用 npm 包和组件应用

目前,小程序中已经支持实用 npm 安装第三方包,从而提高小程序的开发效率,但是在小程序中使用 npm 包有三个限制:

  1. 不支持 Node.js内置库的包
  2. 不支持依赖于浏览器内置对象的包
  3. 不支持依赖于 C++插件的包

Vant Weapp

Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应用。它所使用的是 MIT开源许可协议,对商业使用比较友好。

项目地址:https://vant-ui.github.io/vant-weapp/#/home

安装

  1. 通过 npm 安装
  2. 构建 npm 包
  3. 修改 app.json

初始化 npm 包管理文件 packge.json

javascript 复制代码
npm init -y

安装 Vant Wearpp 组件库

javascript 复制代码
npm i @vant/weapp -S --production

构建 npm 包

打开微信开发者工具,点击 工具 -> 构建 npm ,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。

注意:2024 年 5 月 12 日,已经不用手动勾选"使用 NPM 模块"了,只需要一步操作。
修改 app.json删掉下列代码

javascript 复制代码
  "style": "v2",

将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

使用 Vant 组建

使用按钮组建

app.json 引用

javascript 复制代码
"usingComponents": {
  "van-button": "@vant/weapp/button/index"
}

wxml使用

javascript 复制代码
<van-button loading type="primary" />
<van-button loading type="primary" loading-type="spinner" />
<van-button loading type="info" loading-text="加载中..." />

其他的组建同理这就不一一展示了

小程序的 API Promise 化

默认情况下,小程序官方提供的异步APl都是基于回调函数实现的,例如,网络请求的API需要按照如下的方式调用:

javascript 复制代码
wx.request({
method:",
url:"",
data:{},
success:()=>{},//请求成功的回调函数 fail: ()=>{}, //请求失败的回调函数 complete: ()=>{}//请求完成的回调函数 })

什么是 API Promise 化

API Promise 化是指,通过额外的配置,将官方提供的基于毁掉 API,升级为基于 Promise 的异步 API,从而代码的可读性、维护性、避免产生回调地狱的问题。

实现 API promise 化

在小程序实现 Promise 化主要依赖于miniProgram-api-promise这个三方的 npm 包。他的安装和实用步骤如下:

安装

javascript 复制代码
npm install --save miniprogram-api-promise

构建 NPM

和安装 Vant 一样需要把"mini-npm 目录中原来的包清空",然后从工具栏中重新进行构建,你就会看到会出现 minipromise 包

使用 mini Promise 包

app.json

javascript 复制代码
import {promisifyAll} from "miniprogram-api-promise"

const wxp = wx.p={}
promisifyAll(wx,wxp)

// app.js
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
  },
  globalData: {
    userInfo: null
  }
})

调用 Promise 化之后的异步 API

wxml构建

javascript 复制代码
<button type="default" bind:tap="getInfo">按钮</button>

js

javascript 复制代码
async getInfo(){
    const {data:res} = await wx.p.request({
      method: 'get',
      url:'https://mock.apifox.com/m1/4376673-4020798-default/api/gridelist',
      data:{name:'zs',age:20}
    })
    console.log(res);
  },
相关推荐
mon_star°29 分钟前
搭建基于火灾风险预测与防范的消防安全科普小程序
安全·微信小程序·小程序·微信公众平台
2301_799404912 小时前
如何修改npm的全局安装路径?
前端·npm·node.js
(❁´◡双辞`❁)*✲゚*2 小时前
node入门和npm
前端·npm·node.js
换日线°3 小时前
CSS常遇到自适应高度动画、带三角气泡阴影一行样式解决
css·微信小程序
我怎么能这么帅气3 小时前
picocolors:终端输出美化的极简利器,快如闪电的ANSIColor库!
javascript·npm
yuanmenglxb20046 小时前
微信小程序核心技术栈
前端·javascript·vue.js·笔记·微信小程序·小程序
编程毕设7 小时前
【含文档+PPT+源码】基于微信小程序连锁药店商城
微信小程序·小程序
幽络源小助理7 小时前
微信小程序鲜花销售系统设计与实现
微信小程序·小程序
换日线°9 小时前
CSS简单实用的加载动画、骨架屏有效果图
css·微信小程序
10年前端老司机9 小时前
微信小程序wxs
前端·javascript·微信小程序