Giter Site home page Giter Site logo

youzan / vant-weapp Goto Github PK

View Code? Open in Web Editor NEW
17.4K 436.0 3.5K 22.45 MB

轻量、可靠的小程序 UI 组件库

Home Page: https://youzan.github.io/vant-weapp/

License: MIT License

JavaScript 41.21% Shell 0.11% TypeScript 39.57% Less 19.11%
weapp vant ui weixin miniprogram

vant-weapp's Introduction

logo

轻量、可靠的小程序 UI 组件库

npm version downloads downloads

🔥 文档网站(国内)   🌈 文档网站(GitHub)   🚀 Vue 版


介绍

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

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

预览

扫描下方小程序二维码,体验组件库示例。注意:因微信审核机制限制,目前示例小程序不是最新版本,可以 clone 代码到本地开发工具预览

使用之前

使用 Vant Weapp 前,请确保你已经学习过微信官方的 小程序简易教程自定义组件介绍

安装

方式一. 通过 npm 安装 (推荐)

小程序已经支持使用 npm 安装第三方包,详见 npm 支持

# 通过 npm 安装
npm i @vant/weapp -S --production

# 通过 yarn 安装
yarn add @vant/weapp --production

# 安装 0.x 版本
npm i vant-weapp -S --production

方式二. 下载代码

直接通过 git 下载 Vant Weapp 源代码,并将 dist 目录拷贝到自己的项目中。

git clone https://github.com/youzan/vant-weapp.git

使用组件

以按钮组件为例,只需要在 json 文件中引入按钮对应的自定义组件即可

{
  "usingComponents": {
    "van-button": "/path/to/vant-weapp/dist/button/index"
  }
}

接着就可以在 wxml 中直接使用组件

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

在开发者工具中预览

# 安装项目依赖
npm install

# 执行组件编译
npm run dev

打开微信开发者工具,把vant-weapp/example目录添加进去就可以预览示例了。

PS:关于 van-area Area 省市区选择组件,地区数据初始化可以直接在云开发环境中导入vant-weapp/example/database_area.JSON 文件使用。

基础库版本

Vant Weapp 最低支持到小程序基础库 2.6.5 版本。

链接

核心团队

以下是 Vant 和 Vant Weapp 的核心贡献者们:

chenjiahan cookfront w91 pangxie1991 rex-zsd nemo-shen
chenjiahan cookfront wangnaiyi pangxie rex-zsd nemo-shen
Lindysen JakeLaoyu landluck wjw-gavin inottn zhousg
Lindysen JakeLaoyu landluck wjw-gavin inottn zhousg

贡献者们

感谢以下小伙伴们为 Vant Weapp 发展做出的贡献:

contributors

开源协议

本项目基于 MIT协议,请自由地享受和参与开源。

vant-weapp's People

Contributors

agoni1212 avatar aphasic avatar chenjiahan avatar cookfront avatar creeperdance avatar delai avatar dependabot-preview[bot] avatar dependabot[bot] avatar eamonnzhang avatar everywill avatar fanburger avatar fanhaoyuan avatar fyerl avatar jakelaoyu avatar jerryni avatar johnsonwong666 avatar landluck avatar lindysen avatar nemo-shen avatar ninofocus avatar noyobo avatar oconnercooper avatar pangxie1991 avatar realywithoutname avatar rex-zsd avatar rongyao9 avatar w91 avatar waiter avatar xxxkimihiro avatar ylethe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vant-weapp's Issues

tab

这个tab选项卡,切换后页面内容如何渲染呢

复杂组件怎么用呢

普通页面在这种架构下面加东西
Page({

/**

  • 页面的初始数据
    */
    data: {

},

/**

  • 生命周期函数--监听页面加载
    */
    onLoad: function (options) {

},

复杂组件:
Page是这样的

Page(
Object.assign({}, Zan.Switch, {
}

他们之间怎么兼容处理呢,谢谢

找不到 _handelZanStepperPlus

按照例子里面的我添加了 Stepper 计数器,但是报 找不到 _handelZanStepperPlus 方法

Page(Object.assign({}, Zan.Stepper, {
data: {
showDialog:false,
stepper: {
stepper: 10,
min: 1,
max: 20
},
},

handleZanStepperChange(e) {
// 如果页面有多个Stepper组件,则通过唯一componentId进行索引
var compoenntId = e.componentId;
var stepper = e.stepper;
console.log(compoenntId)
console.log(stepper)
this.setData({
'stepper.stepper': stepper
});
},

ActionSheet 增加 openType选项

场景是ActionSheet里需要触发转发,而页面内发起转发需要通过给 button 组件设置属性 open-type="share",但现有action view是text而不是button。

不知各位意见如何?

我想知道clone话。大概有多大的内容呢?

我们知道小程序限制2M的的大小。SO。。。。。如果UI太大的话,也没太大的意义了!

所以,我的问题是:
是需要用什么就丢什么进文件夹然后引什么呢?
还是必须要全部丢进去文件夹。需要的时候引呢?
谢谢,期待回答!~

一像素边框

后续考虑加入一像素边框兼容嘛?我自己在项目里改写了panel样式用官方button组件的写法实现了一像素边框,目前没有什么问题。

在 debug 模式关闭的情况下,Field 依然会打印表单信号

ISSUE 类型

提交 Bug

ISSUE 问题描述

在 Debug 状态为 False 时,依然会打印具体事件。

可行的解决方案

  1. 默认情况下不输出相关事件
  2. 在提供的参考 demo 中对事件进行打印
  3. 通过 app.json/app.js 中的参数进行判断是否打印相关信息。

如何复现 Bug

调用 Field 组件,参考代码
query.js

const { Field, extend } = require('../../zan/index');
Page(extend({}, Field, {
  data: {
  }, 
  formSubmit:function(e){
    console.error(e.detail.value);
  },
  handleZanFieldChange({ componentId, detail }) {
    /*
     * componentId 即为在模板中传入的 componentId
     * 用于在一个页面上使用多个 tab 时,进行区分
     * detail 即输入框中的内容
     */
    /*
     * 处理函数可以直接 return 一个字符串,将替换输入框的内容。
     */
  },
  // 输入框聚焦时触发
  handleZanFieldFocus({ componentId, detail }) { },
  // 输入框失焦时触发
  handleZanFieldBlur({ componentId, detail }) { },
}));

query.xml

<view class="doc-title zan-hairline--bottom zan-hairline--bottom">论文查询</view>

<import src="../../zan/field/index.wxml" />
<form bindsubmit="formSubmit">

  <template is="zan-field" data="{{ title: '作者名',name : 'author', inputType:'text', type: 'input', placeholder: '请输入作者姓名' }}"></template>

  <template is="zan-field" data="{{ title: '电话号码',name : 'phone', inputType:'text', type: 'input', placeholder: '请输入您留下的电话号码' }}"></template>

  <view class="zan-btns">
    <button class="zan-btn zan-btn--primary" formType="submit">提交信息</button>
    <button class="zan-btn" formType="reset">重置数据</button>
  </view>
</form>

Bug 截图

default

多页面情况下,TopTips 无法自动清除

重现步骤:

  1. 标签页 A 持有一个 TopTips,并在 onLoad 时调用 showZanTopTips
  2. 标签页 B 持有一个 TopTips,并在 onLoad 时调用 showZanTopTips
  3. 先点击标签页 A,可观察到 A 的 TopTips 正常显示
  4. 再点击标签页 B,可观察到 B 的 TopTips 正常显示,并在三秒后自动隐藏
  5. 再点击标签页 A,可观察到 A 的 TopTips 一直存在,不被自动清除

原因排查:

文件 /dist/toptips/index.js 中全局持有相同的 timer,而 data 数据由 Page 持有;导致第二次调用 showZanTopTips 时 timer 请重置,但前一个 Page 的 data 数据没有被重置。

解决方法:

参考 zantoast 的实现

tab标签

1.01.1712070没有显示tab标签!
_20171221151529

Tab挡住拉刷新的加载图标

ISSUE 类型
提交 Bug

ISSUE 问题描述
使用Tab的固定在顶部后,下拉刷新时tab由于一直固定导致看不到后面的加载图标了。

zan-ellipsis样式

需要设置固定宽度,如果设置width:100%就无效了;通常需求是需要宽度100%,所以建议在父元素加上width:0,就不需要设置固定宽度了。另外,通常会在列表中用到文字缩略显示,建议可以在列表中单独加入。
另:zanui-weapp可以多扩充一点,比如列表(两行内容,带头像列表),弹窗,表单等等,可以参考腾讯的frozenui

将现有版本发布最新版小程序

问题描述

由于需要在移动端查看最新的组件样式(在开发者工具中切换较为麻烦),能否发布代码库中的版本到小程序平台上?

举例:目前小程序中的 Panel 和源码中的 Panel 并不相同。

组件如何在 js 为模板添加 class名 ?

组件如何在 js 为模板添加 class名 ?

疑问

config.js:
module.exports = {
  // 圆角输入框
  radius: {
    totalPrice: {
      right: true,
      mode: 'wrapped',
      className: 'd-none',
      title: '消费总额',
      inputType: 'number',
      placeholder: '询问收银员后输入'
    }
};
wxml:
 <template
    is="zan-field"
    class="d-none" 
    data="{{ ...config.radius.totalPrice }}"></template>
  • wxml 中无法添加 class 名;
  • config.js 的属性添加关键词 className 也无法生效;

可否有一个快速检索相关功能的工具

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.