ChanceYu / weapp

:penguin: 微信小程序组件和功能封装,基于微信Component自定义组件开发
MIT License
234 stars 56 forks source link
component weapp wechat wechat-app wx wxapp wxml wxss
weapp

微信小程序组件和功能封装,简洁的组件化编程

基于微信的Component自定义组件封装,简洁的组件化编程,关于Component自定义组件参考 Component API

注意需要开启微信开发者工具中的ES6转ES5功能,请使用大于1.6.3版本的小程序基础库,并将微信更新到最新版本。

如果你需要一套代码开发微信小程序和支付宝小程序,那么 mpapi 插件 也许能协助你(微信小程序和支付宝小程序 API 兼容插件)

项目预览

weapp组件 weapp组件

主要内容

目录结构

请用微信开发者工具打开 src 目录

├─images ---------- 公共图片
├─js -------------- 公共的JS
│  └─common ---------- 公共方法函数封装
├─components ------ 自定义组件和第三方组件
│  ├─libs ------------ 第三方库
│  └─weapp ----------- weapp组件
├─pages ----------- 页面目录
│  ├─index ----------- 首页
│  ├─libs ------------ 第三方库页面
│  └─weapp ----------- weapp组件页面
├─app.js
├─app.json
├─app.wxss
└─README.md

主要特点

组件使用

下面是展示Tab组件的简单使用,具体示例参考项目内部pages/weapp/tab中代码。其它类型组件使用基本和这种调用方式类似。

// tab.json
{
  "navigationBarTitleText": "Tab",
  "usingComponents": {
    "weapp-tab": "/components/weapp/tab/tab"
  }
}
<!-- tab.wxml -->
<weapp-tab list="{{ list1 }}" active-index="{{activeIndex}}" bind:change="onTabChange" />
// tab.js
Page({
  data: {
    list1: ['选项1', '选项2', '选项3']
  },
  handlerSelect(){
    this.setData({
      activeIndex: 1
    });
  },
  onTabChange(event){
    console.log(event.detail.activeIndex)
  }
})

weapp组件

公共方法


weapp-toast

浮动提示,普遍在移动开发中使用的Toast组件,与小程序的showToast不同

属性

weapp-tab

选项卡

属性

weapp-city-picker

城市选择

属性

weapp-loader

加载更多、暂无数据提示,通常配合上拉数据列表使用

属性

weapp-popover

弹出菜单,最多12个可支持的箭头方位,满足绝大部分场景

weapp-popover

属性

weapp-toptip

顶部提示

属性

weapp-calendar-picker

日历选择,支持多个月份滑动切换展示,左右点击切换月份,切换到今天

weapp-calendar-picker

属性

common.share

页面转发分享,除去每个页面的繁杂配置,使用起来更加简单高效,支持页面传递参数 options

参数

// common.share([title], [url])

Page({ onShareAppMessage: common.share() });


### common.type
类型判断,返回`Number`、`String`、`Boolean`、`Array`、`Object`、`Function`等类型字符串
###### 参数
- `value`任意需要判断的参数
###### 使用
```javascript
import common from '../../assets/js/common';

// common.type([value])

common.type(1);            // Number
common.type('abc');        // String
common.type(true);         // Boolean
common.type([]);           // Array
common.type({});           // Object
common.type(function(){}); // Function
common.type(/\d/);         // RegExp
common.type(new Date());   // Date

common.param

将对象解析成url字符串

参数

// common.param([urlObject], [unEncodeURI])

let obj = { name: 'weapp', uid: 8, age: 24 };

let params = common.param(obj);

console.log(params); // ?name=weapp&uid=8&age=24


### common.unparam
将url字符串解析成对象,与`common.param`使用相反
###### 参数
- `urlString`地址,带url参数的地址
- `unDecodeURI`不使用解码,默认使用解码`decodeURIComponent`
###### 使用
```javascript
import common from '../../assets/js/common';

// common.unparam([urlString], [unDecodeURI])

let str = '?name=weapp&uid=8&age=24';

let obj = common.unparam(str);

common.navigateTo

common.redirectTo

common.switchTab

common.reLaunch

页面跳转,优化防止快速点击打开两个页面,支持对象形式传url参数,分别对应小程序的wx.navigateTo、wx.redirectTo、wx.switchTab、wx.reLaunch

参数

// common.navigateTo([url], [params])

Page({ onTapElem(){ common.navigateTo('/pages/weapp/popover/popover', { userid: 123, info: 'Hello,weapp' }); } });



## 第三方UI库使用到
字体图标使用FontAwesome,CSS组件样式使用WeUI

* font-awesome (4.7) <https://github.com/FortAwesome/Font-Awesome>
* weui-wxss <https://github.com/Tencent/weui-wxss>

## 项目截图
![weapp组件](./assets/images/desc/components.png)

## License
[![](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/mit-license.php) 

[MIT](https://opensource.org/licenses/MIT),享受开源的乐趣。