uniapp项目引用vant weapp组件库及icon字体图标库报错

一、创建uniapp项目模板

在HbuilderX里点击文件,新建项目,自定义项目名称选择默认模板。

二、学习vant weapp官方文档

官方网址:Vant Weapp - 轻量、可靠的小程序 UI 组件库轻量、可靠的小程序 UI 组件库https://vant-contrib.gitee.io/vant-weapp/#/quickstart

安装依赖,引入组件库。这里建议引入vant weapp组件库时直接下载官方源码

github网址:Vant Weapp - 轻量、可靠的小程序 UI 组件库GitHub - youzan/vant-weapp: 轻量、可靠的小程序 UI 组件库Vant Weapp - 轻量、可靠的小程序 UI 组件库

点击tags图标,下载你需要的版本,这里我下载了最新版本v1.10.5的zip压缩包

 

三、解压vant库压缩包

首先在你创建的uniapp项目里新建一个wxcomponents文件夹,该文件夹要注意与pages同级也在pages文件夹下方,之后找到压缩包里的dist文件夹,将dist文件夹复制到wxcomponents文件夹下,dist文件夹可以重命名为vant,这个该名称由你自己决定

四、项目报错

其余的操作可以参考vant weapp的官方文档。

引入组件的方法有很多,对于easycom引入全局组件,需要注意修改引入名称和路径

官方文档

"easycom": {
  "autoscan": true,
  "custom": {
    "^uni-(.*)": "@/components/uni-$1.vue", // 匹配components目录内的vue文件
    "^vue-file-(.*)": "packageName/path/to/vue-file-$1.vue" // 匹配node_modules内的vue文件
  }
}

y引入vant

"easycom": {
      "autoscan": true,
      "custom": {
        "^van-(.*)": "@/wxcomponents/vant/$1/index.vue" // 匹配wxcomponents目录内的vue文件
      }
    }

这里$1指代vant(即dist文件夹)下各组件名称

这里注意一点,初始引入的dist文件夹各组件下是没有.vue文件的,只有浏览器运行过后才会自动出现,可以在尝试时打开组件目录运行看看

报错:

运行时会看见报错,原因是icon组件出错

10:57:38.531 Module build failed (from ./node_modules/postcss-loader/src/index.js):

;src: url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff2?t=1649083952952) format("woff2"),url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff?t=1649083952952) format("woff"),url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.ttf?t=1649083952952) format("truetype")}.vant-icon-index{align-items:center;display:inline-flex;justify-content:center}.van-icon--image{height:1em;width:1em}.van-icon__image{height:100%;width:100%}.van-icon__info{z-index:1}

解决:

你可以复制蓝色代码,在HbuilderX的工具栏里选择字符搜索,将复制的蓝色代码复制进搜索栏搜索,查看搜索结果,就会发现都是icon组件出了问题

搜索"https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff2?t=1649083952952"完毕
共在2个文件中找到2个匹配结果

uni-vant_weapp/wxcomponents/vant/icon/index.wxss    [E:/hbuilder练习项目/uni-vant_weapp/wxcomponents/vant/icon/index.wxss]
    1005:10     src: url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff2?t=1649083952952) format("woff2"), url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff?t=164908395295... 

uni-vant_weapp/wxcomponents/vant/icon/index.vue    [E:/hbuilder练习项目/uni-vant_weapp/wxcomponents/vant/icon/index.vue]
    1040:10     src: url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff2?t=1649083952952) format("woff2"), url(https://at.alicdn.com/t/font_2553510_iv4v8nulyz.woff?t=164908395295... 

这里找到这两个文件,在这两个文件里找到所有的 url ,在他们前面加上空格保存即可。因为引入的组件库它的代码是经过压缩的,所以样式都被压缩在同一行,找起来有点麻烦,可以在页面内直接右击,选择重排代码格式,或直接Ctrl+K键也可以

<think>我们正在处理如何在UniApp中静态引入VantWeapp组件的问题。根据引用[2]中的信息,我们注意到:直接从npm下载库可能只兼容H5端,而非H5端(小程序等)需要使用小程序自定义组件。同时,引用[2]明确指出:“使用小程序自定义组件请参考:小程序组件支持”。此外,引用[1]和[3]分别提到了Vue+elementui和微信小程序分包,但我们的重点在VantWeapp(一个小程序UI组件库)在UniApp中的引入。由于UniApp支持使用小程序自定义组件,而VantWeapp正是这样的小程序组件库,因此我们需要将VantWeapp的组件作为小程序自定义组件引入到UniApp项目中。步骤大致如下:1.将VantWeapp的组件代码下载到项目的某个目录(例如,项目根目录下创建`wxcomponents/vant`目录)。2.在`pages.json`中配置需要使用的组件,声明使用自定义组件。3.在页面中使用这些组件。注意:UniApp默认将`wxcomponents`目录作为存放小程序自定义组件的目录(类似于微信小程序项目中的`components`目录),该目录下的组件会被编译到小程序端。具体步骤:###1.下载VantWeapp组件我们可以通过npm下载VantWeapp,然后将需要的组件复制到`wxcomponents`目录下。或者直接下载整个VantWeapp的dist目录。```bashnpminit-y#如果还没有package.jsonnpmivant-weapp-S```然后,进入`node_modules/vant-weapp/dist`,将整个目录复制到项目根目录下的`wxcomponents`中,并重命名为`vant`(也可以不重命名,但通常为了简洁会重命名)。或者,我们也可以使用gitclone或者直接下载ZIP包的方式获取VantWeapp的代码,然后将其中的dist目录放到`wxcomponents/vant`下。###2.配置`pages.json`在`pages.json`的`globalStyle`或者具体页面的`style`中配置`usingComponents`,引入需要的Vant组件。例如,全局引入按钮(Button)和单元格(Cell)组件:```json{"globalStyle":{"usingComponents":{"van-button":"/wxcomponents/vant/button/index","van-cell":"/wxcomponents/vant/cell/index","van-cell-group":"/wxcomponents/vant/cell-group/index"}}}```如果只想在某个页面使用,可以在该页面对应的配置中设置:```json{"pages":[{"path":"pages/index/index","style":{"usingComponents":{"van-button":"/wxcomponents/vant/button/index"}}}]}```###3.在页面中使用在vue页面的模板中,像使用普通组件一样使用Vant组件。```html<template><view><van-buttontype="primary">按钮</van-button><van-cell-group><van-celltitle="单元格"value="内容"/></van-cell-group></view></template>```###注意事项-由于VantWeapp是为微信小程序设计的,所以在非微信小程序平台(如H5、App)可能无法使用,或者需要条件编译。-在微信小程序中,使用自定义组件时,需要注意组件的路径是否正确。-如果遇到样式问题,可能需要引入VantWeapp的样式。我们可以在App.vue中引入全局样式:```css@import'/wxcomponents/vant/common/index.wxss';```或者,在需要使用组件的页面单独引入样式(在页面的style标签中):```css@import"/wxcomponents/vant/button/index.wxss";```注意,UniApp中,我们通常使用`.wxss`作为微信小程序的样式,但实际在vue文件中,我们使用`<style>`标签,并且UniApp会编译成对应平台的样式文件。因此,我们可以使用条件编译:```css/*#ifdefMP-WEIXIN*/@import"/wxcomponents/vant/common/index.wxss";/*#endif*/```###示例:条件编译引入VantWeapp考虑到多端兼容,我们可以使用条件编译,只在微信小程序端引入Vant组件。在`pages.json`中,我们也可以使用条件编译?但是注意,`pages.json`不支持条件编译。因此,我们可以在微信小程序平台下才配置这些自定义组件,而其他平台则不需要配置。但是,如果我们在`pages.json`中配置了自定义组件,那么在其他平台(非微信小程序)运行时会报错吗?UniApp在非微信小程序平台会忽略这些配置,所以不会报错,但是为了减少不必要的配置,我们可以通过以下方式:-项目根目录创建`main.js`(如果还没有),然后根据平台动态修改`pages.json`?这是不行的,因为`pages.json`是静态文件。实际上,UniApp在编译到微信小程序平台时,会自动处理`wxcomponents`目录下的组件,而其他平台则不会。因此,我们只需要确保在非微信小程序平台不使用这些组件即可。如果需要在多端使用,建议使用条件编译。在页面中使用条件编译:```html<template><view><!--#ifdefMP-WEIXIN--><van-buttontype="primary">按钮</van-button><!--#endif--></view></template>```或者在页面配置中,我们也可以只针对微信小程序平台配置组件(在对应页面的`style`中配置),这样在其他平台就不会注册该组件,也就不会报错了。###总结在UniApp中静态引入VantWeapp组件,主要步骤是下载组件到`wxcomponents`目录,然后在`pages.json`中配置组件路径,最后在页面中使用。同时,注意多端兼容性问题,使用条件编译来避免在非微信小程序平台出现问题。§§相关问题§§1.如何在UniApp中动态引入VantWeapp组件?2.UniApp中使用VantWeapp组件时,如何处理样式冲突?3.除了VantWeapp,还有哪些适合UniApp的UI组件库?</think>### UniApp 中静态引入 Vant Weapp 组件的方法 在 UniApp 中静态引入 Vant Weapp 组件需要遵循特定的目录结构和配置规则,以下是详细步骤: #### 1. **创建自定义组件目录** 在项目根目录下创建 `wxcomponents` 文件夹(名称固定),然后将 Vant Weapp 组件复制到该目录: ```bash 项目根目录/ ├── wxcomponents/ # 固定目录名 │ └── vant/ # 存放 Vant 组件 │ ├── button/ │ ├── cell/ │ └── ... # 其他需要的组件 ``` > **获取组件方式**: > - 从 [Vant Weapp GitHub](https://github.com/youzan/vant-weapp) 下载 `dist` 文件夹 > - 或通过 npm 安装:`npm i vant-weapp`,然后从 `node_modules/vant-weapp/dist` 复制 #### 2. **配置 `pages.json`** 在需要使用的页面中声明自定义组件: ```json // pages.json { "pages": [ { "path": "pages/index/index", "style": { "usingComponents": { "van-button": "/wxcomponents/vant/button/index", "van-cell": "/wxcomponents/vant/cell/index" } } } ] } ``` #### 3. **在页面中使用组件** ```html <!-- pages/index/index.vue --> <template> <view> <van-button type="primary">主要按钮</van-button> <van-cell title="单元格" value="内容" /> </view> </template> ``` #### 4. **引入全局样式(可选)** 在 `App.vue` 中引入基础样式: ```css /* App.vue */ <style> /* 条件编译:仅微信小程序生效 */ /* #ifdef MP-WEIXIN */ @import "/wxcomponents/vant/common/index.wxss"; /* #endif */ </style> ``` ### 注意事项 1. **目录限制**: - `wxcomponents` 必须位于项目根目录 - 组件路径区分大小写(建议全小写) 2. **多端兼容**: ```html <!-- 条件编译确保只在微信小程序使用 --> <!-- #ifdef MP-WEIXIN --> <van-button>按钮</van-button> <!-- #endif --> ``` 3. **组件注册**: - 每个页面需单独在 `pages.json` 中注册组件 - 不支持全局注册(与 Vue 不同) 4. **资源路径**: - 组件内图片需使用绝对路径:`/wxcomponents/vant/xxx/image.png` ### 常见问题解决 - **组件未生效**: 1. 检查 `wxcomponents` 目录位置是否正确 2. 确认 `pages.json` 的路径拼写(注意大小写) 3. 重启开发者工具(微信开发者工具需手动刷新) - **样式异常**: - 检查是否引入基础样式文件 - 添加组件隔离配置: ```json // pages.json "style": { "component": true // 启用组件样式隔离 } ``` > 引用说明:静态资源引入需遵循 UniApp 规范[^2],小程序组件需特殊处理[^2],Vant Weapp 仅支持小程序环境[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值