走进小程序【八】微信小程序中使用【Vant组件库】

简介: 走进小程序【八】微信小程序中使用【Vant组件库】

🌟前言

哈喽小伙伴们,我们做前端的同学在日常开发当中一定收藏了好多好多的前端组件库,这些组件库不仅可以帮助我们快速的搭建我们的程序,使用的同时也提供了好多实用的API给我们。那么开发小程序的时候我们有没有可以使用的组件库呢?当然有了,今天给大家讲解一下在小程序中如何使用 Vant组件库 。话不多说,咱们直接开整!🤘

🌟Vant介绍

c6e8e319935a4724b9c0cbf25d81b86b.png

Vant 是一个轻量、可靠的移动端组件库,于 2017 年开源。

目前 Vant 官方提供了 Vue 2 版本Vue 3 版本微信小程序版本,并由社区团队维护 React 版本支付宝小程序版本

扫描下方小程序二维码,体验组件库示例:



717cfedb989b4e078b5af262a2033863.jpg

为了便于预览组件效果,本文档的右侧内嵌了 H5 版的 Vant页面作为参考。在实际使用中,个别组件的表现可能与小程序上的表现有差异,请以实际效果为准。

🌟Vant安装

🌟npm 支持

在小程序中使用npm包前,需先构建 npm

1. 项目初始化

在小程序项目里新建终端,输入一下命令,来生成我们的 package.json,填写项目信息:

npm init

2. 安装Vant

# 通过 npm 安装
npm i @vant/weapp -S --production
# 通过 yarn 安装
yarn add @vant/weapp --production
# 安装 0.x 版本
npm i vant-weapp -S --production

3. 修改 app.json

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

4.修改 project.config.json

开发者工具创建的项目,miniprogramRoot 默认为 miniprogrampackage.json 在其外部,npm 构建无法正常工作。 需要手动在 project.config.json 内添加如下配置,使开发者工具可以正确索引到 npm 依赖的位置。

{
  ...
  "setting": {
    ...
    "packNpmManually": true,
    "packNpmRelationList": [
      {
        "packageJsonPath": "./package.json",
        "miniprogramNpmDistDir": "./"
      }
    ]
  }
}

注意: 由于目前新版开发者工具创建的小程序目录文件结构问题,npm构建的文件目录为miniprogram_npm并且开发工具会默认在当前目录下创建miniprogram_npm的文件名,所以新版本的miniprogramNpmDistDir配置为'./'即可

5.构建 npm 包

打开微信开发者工具,点击 工具 -> 构建 npm,构建完成后,即可引入组件。




41528639a1d9450a858ec4a255dfe52a.png

等待构建完成,完成后会有以下弹框:


e45f245519b64e6989aaef1256109e1c.png

6.typescript 支持

如果你使用 typescript 开发小程序,还需要做如下操作,以获得顺畅的开发体验。

安装 miniprogram-api-typings

# 通过 npm 安装
npm i -D miniprogram-api-typings
# 通过 yarn 安装
yarn add -D miniprogram-api-typings

tsconfig.json 中增加如下配置,以防止 tsc 编译报错。

请将path/to/node_modules/@vant/weapp修改为项目的 node_modules@vant/weapp所在的目录。

{
  ...
  "compilerOptions": {
    ...
    "baseUrl": ".",
    "types": ["miniprogram-api-typings"],
    "paths": {
      "@vant/weapp/*": ["path/to/node_modules/@vant/weapp/dist/*"]
    },
    "lib": ["ES6"]
  }

🌟使用Vant

🌟引入组件

Button 组件为例,只需要在app.jsonindex.json中配置 Button 对应的路径即可。 所有组件文档中的引入路径均以npm 安装为例,如果你是通过下载源代码的方式使用 @vant/weapp,请将路径修改为项目中@vant/weapp 所在的目录

// 通过 npm 安装
// app.json
"usingComponents": {
  "van-button": "@vant/weapp/button/index"
}
// 通过下载源码使用 es6版本
// app.json
"usingComponents": {
  "van-button": "path/to/@vant/weapp/dist/button/index"
}
// 通过下载源码使用 es5版本
// app.json
"usingComponents": {
  "van-button": "path/to/@vant/weapp/lib/button/index"
}

🌟页面使用组件

引入组件后,可以在 wxml 中直接使用组件

<van-button type="primary">按钮</van-button>

🌟样式覆盖

🌟介绍

Vant Weapp 基于微信小程序的机制,为开发者提供了以下 3 种修改组件样式的方法

🌟解除样式隔离

样式隔离的相关背景知识请查阅微信小程序文档

Vant Weapp 的所有组件都开启了addGlobalClass:true以接受外部样式的影响,可以使用如下 2 种方式覆盖组件样式

在页面中使用 Vant Weapp 组件时,可直接在页面的样式文件中覆盖样式

<van-button type="primary">主要按钮</van-button>
/* page.wxss */
.van-button--primary {
  font-size: 20px;
  background-color: pink;
}

在自定义组件中使用 Vant Weapp 组件时,需开启 styleIsolation: 'shared' 选项

<van-button type="primary">主要按钮</van-button>
Component({
  options: {
    styleIsolation: 'shared',
  },
});
.van-button--primary {
  font-size: 20px;
  background-color: pink;
}

🌟使用外部样式类

外部样式类的相关知识背景请查阅微信小程序文档

Vant Weapp 开放了大量的外部样式类供开发者使用,具体的样式类名称可查阅对应组件的“外部样式类”部分。

需要注意的是普通样式类和外部样式类的优先级是未定义的,因此使用时请添加!important以保证外部样式类的优先级。

<van-cell
  title="单元格"
  value="内容"
  title-class="cell-title"
  value-class="cell-value"
/>
.cell-title {
  color: pink !important;
  font-size: 20px !important;
}
.cell-value {
  color: green !important;
  font-size: 12px !important;
}

🌟使用 CSS 变量

Vant Weapp 为部分 CSS 属性开放了基于 CSS 属性的定制方案。

相较于 解除样式隔离 和 使用外部样式类,这种方案支持在页面或应用级别对多个组件的样式做批量修改以进行主题样式的定制。

当然,用它来修改单个组件的部分样式也是绰绰有余的。具体的使用方法请查阅定制主题

🌟定制主题

🌟定制单个组件的主题样式

在 wxss 中为组件设置 CSS 变量

<van-button class="my-button">
  默认按钮
</van-button>
.my-button {
  --button-border-radius: 10px;
  --button-default-color: #f2f3f5;
}

或通过 style 属性来设置 CSS 变量,这使你能够轻松实现主题的动态切换

<van-button style="{{ buttonStyle }}">
  默认按钮
</van-button>
Page({
  data: {
    buttonStyle: `
      --button-border-radius: 10px;
      --button-default-color: green;
    `,
  },
  onLoad() {
    setTimeout(() => {
      this.setData({
        buttonStyle: `
          --button-border-radius: 2px;
          --button-default-color: pink;
        `,
      });
    }, 2000);
  },
});

🌟定制多个组件的主题样式

与单个组件的定制方式类似,只需用一个 container 节点包裹住需要定制的组件,并将 CSS 变量 设置在 container 节点上

<view class="container">
  <van-button bind:click="onClick">
    默认按钮
  </van-button>
  <van-toast id="van-toast" />
</view>
import Toast from '@vant/weapp/toast/toast';
Page({
  onClick() {
    Toast('我是提示文案,建议不超过十五字~');
  },
});
.container {
  --button-border-radius: 10px;
  --button-default-color: #f2f3f5;
  --toast-max-width: 100px;
  --toast-background-color: pink;
}

🌟定制全局主题样式

在 app.wxss 中,写入 CSS 变量,即可对全局生效

page {
  --button-border-radius: 10px;
  --button-default-color: #f2f3f5;
  --toast-max-width: 100px;
  --toast-background-color: pink;
}

🌟写在最后

这篇文章给大家讲解了一下在小程序当中如何使用Vant组件库去快速的搭建我们的小程序页面,更多组件以及API请大家持续关注,后面会给大家出一些比较好玩的功能,尽请期待。各位小伙伴让我们 let’s be prepared at all times!




目录
相关文章
|
1月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
50 1
|
1月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
59 1
微信小程序:轻松实现时间轴组件
|
1月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
407 1
|
1月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
60 0
微信小程序:自定义关注公众号组件样式
|
1月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
55 1
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
193 1
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
547 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
JSON 小程序 前端开发
vant weapp 在小程序中的使用
vant weapp 在小程序中的使用
74 1
|
1月前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
54 1
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
485 7