0.4.271 • Published 2 years ago

tinper-libraui v0.4.271

Weekly downloads
368
License
MIT
Repository
-
Last release
2 years ago

yonui-mobile

yonui-mobile组件库,基于 antd-mobile,做了封装,用于适配到页面设计器。

贡献代码

本项目基于 Typescript 语言,主要内容为对Antd Mobile的一层封装,添加上相关的Manifest信息。

开发时请遵守项目中的eslint规范和commitlint规范,按要求格式化代码和提交信息。

如何开发组件

为什么选择Typescript?

开发组件的时候,需要按照约定写符合规范的Manifest定义。但是其结构比较复杂,容易写错。

用Typescript的话,可以引入定义好的Manifest类型定义 import { ComponentManifest, Component } from 'libraui-extension',基于它的提示和相应的报错,实现轻松编写Manifest的目的。

另外示例组件是用Typescript开发的,相关流程会比Javascript测试更多一些,质量相对更可靠一些。

我不熟悉/喜欢Typescript,是否可以用Javascript ?

可以,Typescript只是多一层类型定义检查,直接用JS编写符合规范的代码也是可以的。

代码组织结构

默认将所有组件平铺在 components 目录下。

每添加一个组件,就需要在components目录中创建一个子目录,名称和组件名称保持一致。同时在组件目录中创建相应的 index.tsx,以及配套的样式文件等。

最后,需要在顶层目录的 index.ts 中导出这个组件。

下面看下示例代码:

index.tsx

export { default as Button } from './components/button'

components/button/index.tsx

import React from 'react'
import { Button } from 'antd-mobile'
import { FieldTypes, EditTypes, ReactWrapper, ComponentManifest } from 'libraui-extension'
// todo 未配置 style activeStyle
const manifest: ComponentManifest = {
  name: 'Button', // 自定义组件名称
  label: '按钮', // 自定义组件文本
  // description: '',//描述
  props: [
    {
      name: 'name',
      type: FieldTypes.string,
      defaultValue: '按钮',
      showDesign: true,
      designConfig: {
        type: EditTypes.Icon,
        isRequired: true,
        props: {},
        label: '名称'
      }
    },
    {
      name: 'type',
      type: FieldTypes.string,
      defaultValue: 'primary',
      showDesign: true,
      designConfig: {
        type: EditTypes.Select,
        isRequired: true,
        props: {
          options: [
            { value: 'primary', text: '主按钮' },
            { value: 'ghost', text: '透明' },
            { value: 'warning', text: '警告红' }
          ]
        },
        label: '按钮类型'
      }
    },
    {
      name: 'size',
      type: FieldTypes.string,
      defaultValue: 'large',
      showDesign: true,
      designConfig: {
        type: EditTypes.Select,
        isRequired: true,
        props: {
          options: [
            { value: 'large', text: '大' },
            { value: 'small', text: '小' }
          ]
        },
        label: '按钮大小'
      }
    },
    {
      name: 'activeClassName',
      type: FieldTypes.string,
      defaultValue: '',
      showDesign: true,
      designConfig: {
        type: EditTypes.Text,
        isRequired: true,
        props: {},
        label: '点击反馈的自定义类名'
      }
    },
    {
      name: 'disabled',
      type: FieldTypes.boolean,
      defaultValue: false,
      showDesign: true,
      designConfig: {
        type: EditTypes.Bool,
        isRequired: true,
        props: {},
        label: '设置禁用'
      }
    },
    {
      name: 'inline',
      type: FieldTypes.boolean,
      defaultValue: false,
      showDesign: true,
      designConfig: {
        type: EditTypes.Bool,
        isRequired: true,
        props: {},
        label: '行内按钮'
      }
    },
    {
      name: 'loading',
      type: FieldTypes.boolean,
      defaultValue: false,
      showDesign: true,
      designConfig: {
        type: EditTypes.Bool,
        isRequired: true,
        props: {},
        label: '按钮载入状态'
      }
    },
    {
      name: 'icon',
      type: FieldTypes.string,
      defaultValue: '',
      showDesign: true,
      designConfig: {
        type: EditTypes.Icon,
        isRequired: true,
        props: {},
        label: '图标'
      }
    },
    {
      name: 'prefixCls',
      type: FieldTypes.string,
      defaultValue: 'am-button',
      showDesign: true,
      designConfig: {
        type: EditTypes.Text,
        isRequired: true,
        props: {},
        label: 'class前缀'
      }
    },
    {
      name: 'className',
      type: FieldTypes.string,
      defaultValue: '',
      showDesign: true,
      designConfig: {
        type: EditTypes.Text,
        isRequired: true,
        props: {},
        label: '样式类名'
      }
    }
  ],
  children: [],
  
}

export default ReactWrapper((props: any) => <Button {...props}>{props.name}</Button>, manifest)

// 如果不需要转换,直接封装即可
export default ReactWrapper(Button, manifest)

项目构建配置

现在的打包方式是基于webpack的方式。

打包时使用了一个工具 libraui-extension-packager,内部集成了 webpackbabel 以及其它各种 webpack plugin 和 loader。

暂时不支持传入自定义配置。

如果开发的时候用到了 Antd/AntdMobile/MaterialUI 等UI组件库,又想实现按需加载。就需要使用 babel-plugin-import 或 ts-import-plugin。目前在webpack中已经集成了ts-import-plugin,只需要在 tsconfig.json 中设置 module: 'esnext' 即可实现。

一些关键设计思想

注意事项

为了支持设计器中的拖拽功能,需要在组件中有 nid / uitype 这种 custom attribute,设计器会将相关信息通过 props 传给组件,需要组件将其映射到dom结构上。

目前默认的实现方式,是在组件的外面包一层div,在div上设置custom attribute。

0.4.270

2 years ago

0.4.271

2 years ago

0.4.263

2 years ago

0.4.262

2 years ago

0.4.261

2 years ago

0.4.260

2 years ago

0.4.267

2 years ago

0.4.266

2 years ago

0.4.265

2 years ago

0.4.264

2 years ago

0.4.269

2 years ago

0.4.268

2 years ago

0.4.259

2 years ago

0.4.258

2 years ago

0.4.252

3 years ago

0.4.251

3 years ago

0.4.250

3 years ago

0.4.256

2 years ago

0.4.255

3 years ago

0.4.254

3 years ago

0.4.253

3 years ago

0.4.257

2 years ago

0.4.249

3 years ago

0.4.248

3 years ago

0.4.245

3 years ago

0.4.247

3 years ago

0.4.246

3 years ago

0.4.244

3 years ago

0.4.243

3 years ago

0.4.242

3 years ago

0.4.241

3 years ago

0.4.240

3 years ago

0.4.239

3 years ago

0.4.238

3 years ago

0.4.237

3 years ago

0.4.236

3 years ago

0.4.235

3 years ago

0.4.234

3 years ago

0.4.233

3 years ago

0.4.232

3 years ago

0.4.231

3 years ago

0.4.230

3 years ago

0.4.229

3 years ago

0.4.228

3 years ago

0.4.227

3 years ago

0.4.226

3 years ago

0.4.225

3 years ago

0.4.223

3 years ago

0.4.224

3 years ago

0.4.222

3 years ago

0.4.221

3 years ago

0.4.219

3 years ago

0.4.220

3 years ago

0.4.218

3 years ago

0.4.217

3 years ago

0.4.216

3 years ago

0.4.215

3 years ago

0.4.214

3 years ago

0.4.213

3 years ago

0.4.212

3 years ago

0.4.211

3 years ago

0.4.209

3 years ago

0.4.210

3 years ago

0.4.208

3 years ago

0.4.207

3 years ago

0.4.206

3 years ago

0.4.205

3 years ago

0.4.204

3 years ago

0.4.203

3 years ago

0.4.201

3 years ago

0.4.200

3 years ago

0.4.202

3 years ago

0.4.198

3 years ago

0.4.197

3 years ago

0.4.196

3 years ago

0.4.195

3 years ago

0.4.194

3 years ago

0.4.193

3 years ago

0.4.192

3 years ago

0.4.191

3 years ago

0.4.190

3 years ago

0.4.189

3 years ago

0.4.188

3 years ago

0.4.187

3 years ago

0.4.182

3 years ago

0.4.186

3 years ago

0.4.185

3 years ago

0.4.184

3 years ago

0.4.183

3 years ago

0.4.181

3 years ago

0.4.180

3 years ago

0.4.171

3 years ago

0.4.170

3 years ago

0.4.175

3 years ago

0.4.174

3 years ago

0.4.173

3 years ago

0.4.172

3 years ago

0.4.179

3 years ago

0.4.178

3 years ago

0.4.177

3 years ago

0.4.176

3 years ago

0.4.164

3 years ago

0.4.163

3 years ago

0.4.168

3 years ago

0.4.167

3 years ago

0.4.166

3 years ago

0.4.165

3 years ago

0.4.169

3 years ago

0.4.162

3 years ago

0.4.160

3 years ago

0.4.161

3 years ago

0.4.157

3 years ago

0.4.159

3 years ago

0.4.158

3 years ago

0.4.156

3 years ago

0.4.155

3 years ago

0.4.154

3 years ago

0.4.153

3 years ago

0.4.152

3 years ago

0.4.149

3 years ago

0.4.151

3 years ago

0.4.150

3 years ago

0.4.148

3 years ago

0.4.146

3 years ago

0.4.145

3 years ago

0.4.144

3 years ago

0.4.147

3 years ago

0.4.143

3 years ago

0.4.142

3 years ago

0.4.141

3 years ago

0.4.140

3 years ago

0.4.139

3 years ago

0.4.138

3 years ago

0.4.137

3 years ago

0.4.136

3 years ago

0.4.135

3 years ago

0.4.134

3 years ago

0.4.133

3 years ago

0.4.132

3 years ago

0.4.131

3 years ago

0.4.129

3 years ago

0.4.128

3 years ago

0.4.127

3 years ago

0.4.126

3 years ago

0.4.125

3 years ago

0.4.124

3 years ago

0.4.123

3 years ago

0.4.122

3 years ago

0.4.121

3 years ago

0.4.120

3 years ago

0.4.119

3 years ago

0.4.118

3 years ago

0.4.117

3 years ago

0.4.116

3 years ago

0.4.115

3 years ago

0.4.114

3 years ago

0.4.113

3 years ago

0.4.112

3 years ago

0.4.111

3 years ago

0.4.109

3 years ago

0.4.108

3 years ago

0.4.110

3 years ago

0.4.107

3 years ago

0.4.106

3 years ago

0.4.105

3 years ago

0.4.104

3 years ago

0.4.102

3 years ago

0.4.103

3 years ago

0.4.101

3 years ago

0.4.100

3 years ago

0.4.99

3 years ago

0.4.98

3 years ago

0.4.97

3 years ago

0.4.96

3 years ago

0.4.95

3 years ago

0.4.94

3 years ago

0.4.93

3 years ago

0.4.92

3 years ago

0.4.91

3 years ago

0.4.90

3 years ago

0.4.89

4 years ago

0.4.88

4 years ago

0.4.87

4 years ago

0.4.86

4 years ago

0.4.85

4 years ago

0.4.84

4 years ago

0.4.82

4 years ago

0.4.83

4 years ago

0.4.81

4 years ago

0.4.80

4 years ago

0.4.79

4 years ago

0.4.78

4 years ago

0.4.76

4 years ago

0.4.77

4 years ago

0.4.75

4 years ago

0.4.74

4 years ago

0.4.73

4 years ago

0.4.72

4 years ago

0.4.71

4 years ago

0.4.70

4 years ago

0.4.69

4 years ago

0.4.68

4 years ago

0.4.67

4 years ago

0.4.66

4 years ago

0.4.65

4 years ago

0.4.64

4 years ago

0.4.63

4 years ago

0.4.62

4 years ago

0.4.61

4 years ago

0.4.60

4 years ago

0.4.59

4 years ago

0.4.58

4 years ago

0.4.57

4 years ago

0.4.56

4 years ago

0.4.55

4 years ago

0.4.54

4 years ago

0.4.53

4 years ago

0.4.52

4 years ago

0.4.51

4 years ago

0.4.50

4 years ago

0.4.49

4 years ago

0.4.48

4 years ago

0.4.47

4 years ago

0.4.46

4 years ago

0.4.44

4 years ago

0.4.45

4 years ago

0.4.43

4 years ago

0.4.42

4 years ago

0.4.41

4 years ago

0.4.40

4 years ago

0.4.39

4 years ago

0.4.37

4 years ago

0.4.38

4 years ago

0.4.36

4 years ago

0.4.35

4 years ago

0.4.34

4 years ago

0.4.31

4 years ago

0.4.32

4 years ago

0.4.33

4 years ago

0.4.30

4 years ago

0.4.29

4 years ago

0.4.28

4 years ago

0.4.27

4 years ago

0.4.26

4 years ago

0.4.24

4 years ago

0.4.25

4 years ago

0.4.21

4 years ago

0.4.22

4 years ago

0.4.23

4 years ago

0.4.20

4 years ago

0.4.19

4 years ago

0.4.18

4 years ago

0.4.17

4 years ago

0.4.16

4 years ago

0.4.15

4 years ago

0.4.13

4 years ago

0.4.12

4 years ago

0.4.11

4 years ago

0.4.10

4 years ago

0.4.9

4 years ago

0.4.8

4 years ago

0.4.7

4 years ago

0.4.6

4 years ago

0.4.5

4 years ago

0.4.4

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.3.110

4 years ago

0.3.111

4 years ago

0.3.109

4 years ago

0.3.108

4 years ago

0.3.105

4 years ago

0.3.107

4 years ago

0.3.106

4 years ago

0.3.104

4 years ago

0.3.103

4 years ago

0.3.102

4 years ago

0.3.101

4 years ago

0.3.100

4 years ago

0.3.99

4 years ago

0.3.98

4 years ago

0.3.97

4 years ago

0.3.96

4 years ago

0.3.95

4 years ago

0.3.94

4 years ago

0.3.93

4 years ago

0.3.92

4 years ago

0.3.91

4 years ago

0.3.90

4 years ago

0.3.89

4 years ago

0.3.88

4 years ago

0.3.87

4 years ago

0.3.86

4 years ago

0.3.85

4 years ago

0.3.84

4 years ago

0.3.82

4 years ago

0.3.81

4 years ago

0.3.80

4 years ago

0.3.79

4 years ago

0.3.78

4 years ago

0.3.77

4 years ago

0.3.76

4 years ago

0.3.75

4 years ago

0.3.74

4 years ago

0.3.73

4 years ago

0.3.72

4 years ago

0.3.71

4 years ago

0.3.70

4 years ago

0.3.69

4 years ago

0.3.67

4 years ago

0.3.66

4 years ago

0.3.65

4 years ago

0.3.63

4 years ago

0.3.62

4 years ago

0.3.61

4 years ago

0.3.60

4 years ago

0.3.59

4 years ago

0.3.58

4 years ago

0.3.57

4 years ago

0.3.56

4 years ago

0.3.55

4 years ago

0.3.54

4 years ago

0.3.53

4 years ago

0.3.52

4 years ago

0.3.51

4 years ago

0.3.49

4 years ago

0.3.48

4 years ago

0.3.47

4 years ago

0.3.46

4 years ago

0.3.45

4 years ago

0.3.44

4 years ago

0.3.42

4 years ago

0.3.41

4 years ago

0.3.40

4 years ago

0.3.39

4 years ago

0.3.38

4 years ago

0.3.37

4 years ago

0.3.36

4 years ago

0.3.35

4 years ago

0.3.34

4 years ago

0.3.28

4 years ago

0.3.27

4 years ago

0.3.25

4 years ago

0.3.24

4 years ago

0.3.23

4 years ago

0.2.11

4 years ago

0.3.22

4 years ago

0.3.21

4 years ago

0.3.20

4 years ago

0.3.19

4 years ago

0.3.18

4 years ago

0.3.17

4 years ago

0.3.16

4 years ago

0.3.14

4 years ago

0.3.13

4 years ago

0.3.9

4 years ago

0.3.12

4 years ago

0.3.11

4 years ago

0.3.10

4 years ago

0.3.8

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.7

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.9

4 years ago

0.2.8

4 years ago

0.2.7

4 years ago

0.2.3

4 years ago

0.2.2

4 years ago