关于前端:antsimplepro20正式发布助力vue3社区

ant-simple-pro在2月份公布v1.0版本,到当初已近有一段时间了,并且也在github上播种了100+star,更要害的是失去了偏右,陈帅,小夕等大佬的激励,使我这个菜鸟更加有了学习的能源和保护,做好ant-simple-pro。

捷足先登的2.0

已实现版本

  • react(v2.0)
  • react+ts(v2.0)
  • vue3.1+ts(v2.0)
  • vue3.1(v2.0)

未实现局部

  • angular(2.0)

此次的版本更新,react版本难度不大,难的是vue版本,因为react对应的插件和第三方库,vue3.0有的没有,哎,其实也不是没有,是齐全没有,因而开启了咱们造轮子的想法。

舒适提醒:如下代码片段只是演示,并不是残缺的,残缺的请查看ant-simple-pro。

vue3-grid-layout

vue3-grid-layout借鉴了vue-grid-layout,react-grid-layout这两个库,并且咱们在vue-grid-layout的根底上,全副用vue3+ts全副重写,使其反对vue3,typescript,vue3-grid-layout可能有很多的bug,不过欢送各位提issues,vue3-grid-layout文档地址。

// 如下代码来自ant-simple-pro
import { GridLayout, GridItem } from '@/components/grid-layout'
 <GridLayout
  v-if="layout.length"
  ref="gridLayout"
  v-model:layout="layout"
  :col-num="12"
  :row-height="30"
  :is-draggable="true"
  :is-resizable="true"
  :is-mirrored="false"
  :vertical-compact="true"
  :margin="[10, 10]"
  :use-css-transforms="true"
>
      <GridItem
        :ref="setItemRef"
        v-for="item in layout"
        :x="item.x"
        :y="item.y"
        :w="item.w"
        :h="item.h"
        :i="item.i"
        :key="item.i"
      >
        <component :is="item.type" @contextmenu="e => onComponentClick(e, item)" :data-i="item.i"></component>
      </GridItem>
</GridLayout>

vue3-context-menu

vue3-context-menu是咱们自已写的一款右键菜单组件,用vue3+ts进行编写,完满的反对vue3typescript,如若有bug,能够提issues,vue3-context-menu文档地址。

// 如下代码来自ant-simple-pro
import createContextMenu from '@/components/context-menu/create-context-menu'
 setup() {
    function onContainerRightClick(e: MouseEvent) {
      createContextMenu({
        event: e,
        menus: [
          {
            label: '编辑',
            handler() {
              visible.value = true
            }
          },
          {
            label: '复制题目',
            handler(item, event: MouseEvent) {
              copy(form.title, event)
              message.destroy()
              message.success('复制胜利,ctrl+v进行粘贴')
            }
          }
        ]
      })
    }
  }
 <a-row type="flex" class="menu-container" align="middle"      @contextmenu="onContainerRightClick">
      <ComImage className="image" :src="logo" alt="logo" />
      <h2 class="title">{{ data.title }}</h2>
      <section class="font-size-16">{{ data.description }}</section>
</a-row>

vue3-qrcode

vue3-qrcode是咱们自已写的一款生成二维码的组件,用vue3+ts进行编写,完满的反对vue3typescript,如若有bug,能够提issues,vue3-qrcode地址文档。

// 如下代码来自ant-simple-pro
import VueQrcode from '@/components/qrcode'
<VueQrcode
  ref="qrcodeRef"
  canvasClass="canvas-qrcode"
  :value="config.linkUrl"
  :size="config.size"
  :style="{ margin: 'auto' }"
  :imageSettings="{
    src: config.logoUrl,
    width: config.logoW,
    height: config.logoH,
    excavate: config.excavate
  }"
></VueQrcode>

vue3-color

vue3-color是咱们借鉴了react-color的源码思维,用vue3+ts写的一款色彩选择器组件,齐全反对vue3,ts,咱们对外裸露了SketchPicker,SwatchesPicker等组件选择器,api和组件选择器,更react-color一模一样,vue3-color文档地址。

// 如下代码来自ant-simple-pro
import { Sketch, Swatch, Chrome, Compact } from '@/components/vue-color'
<a-row :gutter="[20, 20]" type="flex">
  <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
    <Sketch v-model:value="color"></Sketch>
  </a-col>
  <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
    <Swatch v-model:value="color"></Swatch>
  </a-col>
  <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
    <Chrome v-model:value="color"></Chrome>
  </a-col>
  <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
    <Compact v-model:value="color"></Compact>
  </a-col>
</a-row>

vue3-cropImage

vue3-cropImage是咱们写的一款图片上传剪切组件,vue3+ts编写,完满反对vue3,操作简略,vue3-cropImage文档地址。

// 如下代码来自ant-simple-pro
import CropImage from '@/components/cropper/index.vue'
 <CropImage v-model:visible="visible" :src="src" @submit="onCropSubmit" :file="fileRef"></CropImage>

vue3-useHotkeys

vue3-useHotkeys是咱们写的一款按键监听插件,用vue3中的hooks思维,在配合hotkeys-js而写的,操作简略,vue3-useHotkeys文档地址。

// 如下代码来自ant-simple-pro
import { useHotkeys } from '@/hooks'
useHotkeys('ctrl+d', event => {
  event.preventDefault()
  disabled.value = false
})

useHotkeys('ctrl+s', event => {
  event.preventDefault()
  disabled.value = true
})

vue3-for-editor

vue3-for-editor是咱们借鉴了for-editor而写进去的markdown语法编辑器,for-editor
是一款reactmarkdown 语法编辑器,尽管作者没怎么保护了,然而咱们看中了for-editor简洁,适宜二次开发的特点,所以用vue3+ts全副重写,能够认为vue3-for-editor是for-editor的vue版本,vue3-for-editor文档地址。

// 如下代码来自ant-simple-pro
import ForEditor from '@/components/for-editor'
 <ForEditor v-model:value="value"></ForEditor>

vue3-codemirror

vue3-codemirror是咱们借鉴了CodeMirror,且在CodeMirror的根底上用vue3+ts写的一个代码编辑器组件,使其完满反对vue3和操作简洁,vue3-codemirror文档地址。

// 如下代码来自ant-simple-pro
import Codemirror from '@/components/vue-codemirror/index.vue'
<Codemirror
  v-model:value="content"
  :options="{
    mode: 'javascript',
    theme: 'material',
    lineNumbers: true
  }"
></Codemirror>

vue3-tinymce

vue3-tinymce是咱们借鉴了tinymce和tinymce-vue这2个插件而写的一个富文本编辑器组件,尽管tinymce-vue当初曾经反对vue3.0了,然而有些bug,咱们在这二者之间,再次进行封装,使其操作更加简洁,vue3-tinymce文档地址。

// 如下代码来自ant-simple-pro
import TinymceEditor from '@/components/tinymce/index.vue'
 <TinymceEditor v-model:value="form.content" placeholder="请输出"></TinymceEditor>

emoji-mart-vue

emoji-mart-vue并不是咱们开发的,而且emoji-mart-vue也反对vue3.0,只是确少ts申明,所以咱们对emoji-mart-vue新增了ts版本的类型申明文件
地址。

// 如下代码来自ant-simple-pro
import { Picker, EmojiIndex } from 'vue-emoji-mart'
 <Picker :data="emojiIndex" set="apple" @select="onSelect" :i18n="i18nConfig" />

总结

如上所述的这些vue3组件或者插件,基本上是咱们自已编写开发和保护的,所以如果有什么bug也是很失常的,咱们很心愿大家可能给咱们提issues。

咱们在vue版本中除了下面的这些组件外,咱们还编写了很多小组件,如图片上传组件,layoutTablescrollbarsvg组件等等,当然咱们也编写了一些hooks,具体的请查看此我的项目。

咱们都是一群很菜的码农,如果有些不好的中央,还请各位多多指教,咱们也想为vue3社区和antd社区献出一份微薄之力,同时也非常感谢我的好敌人;永豪为vue版本做出的重大贡献。

ant-simple-pro会继续更新,迭代,不必放心我的项目没人保护的问题。

我的项目地址:ant-simple-pro。

文档地址:ant-simple-pro-document必看。

舒适提醒:ant-simple-pro-document文档,可能有些案例用法没有同步进来,咱们会在后续同步更新文档的。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理