微信小程序 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

npm init -y

安装 Vant Wearpp 组件库

npm i @vant/weapp -S --production

构建 npm 包
打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。
image.png
注意:2024 年 5 月 12 日,已经不用手动勾选“使用 NPM 模块”了,只需要一步操作。
修改 app.json删掉下列代码

  "style": "v2",

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

使用 Vant 组建

使用按钮组建

app.json 引用

"usingComponents": {
  "van-button": "@vant/weapp/button/index"
}

wxml使用

<van-button loading type="primary" />
<van-button loading type="primary" loading-type="spinner" />
<van-button loading type="info" loading-text="加载中..." />

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

小程序的 API Promise 化

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

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

什么是 API Promise 化

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

实现 API promise 化

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

npm install --save miniprogram-api-promise

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

使用 mini Promise 包

app.json

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构建

<button type="default" bind:tap="getInfo">按钮</button>

js

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);
  },

相关推荐

  1. 程序使用npm、miniprogram管理

    2024-05-13 05:56:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 05:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 05:56:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 05:56:02       82 阅读
  4. Python语言-面向对象

    2024-05-13 05:56:02       91 阅读

热门阅读

  1. conda 常用20个命令

    2024-05-13 05:56:02       32 阅读
  2. SQLite 命令

    2024-05-13 05:56:02       36 阅读
  3. Unix/Linux C语言 获取控制台窗口尺寸

    2024-05-13 05:56:02       34 阅读
  4. vue-router(路由)

    2024-05-13 05:56:02       30 阅读
  5. 【CV】计算机视觉是什么?

    2024-05-13 05:56:02       25 阅读
  6. 排序算法大全(附源码)

    2024-05-13 05:56:02       36 阅读
  7. 基于协同过滤算法的旅游推荐系统的设计

    2024-05-13 05:56:02       31 阅读
  8. C语言输出重定向

    2024-05-13 05:56:02       29 阅读
  9. [Linux] 常用服务器命令(持续更新)

    2024-05-13 05:56:02       31 阅读
  10. GPU常用命令

    2024-05-13 05:56:02       81 阅读