Code Monkey home page Code Monkey logo

yoyoo-starter's Introduction

简介

在线可视化网页生成工具,可导出图片。模板自定义组件和图片上传随服务端功能去掉了。目前只是一个简单的单机版,数据会存储到 localstorage 该项目还有一个配套的预览功能,由于去掉了服务端的功能所以,该预览功能无法展示

项目主要思路: 组件通信方式:通过使用eventbus来解决各个组件的通信,核心框架提供一系列事件,来实现自定义插件功能。 主要模块有: 1、预置组件模块,提供了一个基类(ViewController),实现自定义组件需要继承该类。该类自带了拖拽缩放旋转双击编辑等一系列功能。通过实现renderContent函数来自定义组件的内容 2、如果自定义的组件需要有自己的参数输入时,可配置属性检查器。属性检查器会在组件被选中中时展示,并接受输入,输入的参数会触发组件的propsChange函数,用于响应参数变化来同步组件的更新。定义属性检查器需要继承 ViewProperties 。该类包含了基础的通用属性,如位置属性、边框属性、背景属性、动画属性等。 3、ICON ,目前icon都来自于iconfont网站。 4、快捷键模块,由于快捷配置存放在服务端,服务端功能去掉后写死在前端了。没有放出来 5、图片导出模块,在src/canvas目录下。每个可拖拽的组件都必须有一个canvas组件的实现,用于图片导出。canvas的实现同样有基类,需要继承 CanvasView 该类提供了基础的绘制功能。

安装

npm install && npm start

自定义组件扩展

// 在lib/widget 下创建一个自定义组件

import React from "react";
import ViewController from "./ViewController";

export default class YourCustomComponent extends ViewController {
  renderContent(){
    return <div>自定义组件</div>
  }
}

// 然后在 src/lib/Widget/View.js里面 配置你的组件
// 框架会根据配置的key去实例化你的组件

自定义属性可视化编辑器

// 在 lib/properties 下创建一个组件属性
import ViewProperties from "./base";

export default class YourComponentProperty extends ViewProperties{
    constructor(){
        super()
        // 你的自定义组件类型
        this.type = 'group'
        // 你的自定义组件名称
        this.alias = '分组'
        
        // 扩展你自己的属性
        this.customPxx1='xxx'
    }
}

// 然后在 ib/properties/types.js 里面声明你的组件属性
// 声明后,当组件在编辑器中被选中时,属性编辑器会根据你配置的名称来实例化

自定义图片导出需要需要继承 CanvasView

// 在 src/canvas 下创建自定义组件对应的canvas实现
import CanvasView from "./CanvasView";
export default class CusomtCanvasComponentView extends CanvasView{
    // 重写draw函数实现图形绘制
    draw(){
      // 使用this.ctx来绘图
    }
}

// 然后在 src/canvas/index.js 将组件加入到map中。渲染器会根据组件的name属性找到对应的canvas实现来绘图。

特色

  • 支持自定义可视化组件,所有的组件需要继承ViewController 即可
  • 支持自定义组件属性可视化编辑
  • 支持无限制嵌套、旋转、拖拽、缩放
  • 支持批量选择操作
  • 支持自定义快捷键
  • 支持canvas自定义实现,用于导出图片
  • 丰富的事件,可实现框架的事件为框架提供功能支持,如对齐线 对齐高亮 位置提示都是实现框架提供的事件
  • 实时保存到缓存,可监听保存事件,将数据同步至服务器
  • 支持自定义右键菜单,每个自定义组件都可以定义自己的弹出菜单
  • 支持母版创建,和添加到组件的功能
  • 高性能,第三方依赖很少。后期引入了antdesign。
  • 支持移动端触摸使用,没啥实际用处
  • 在线地址 http://zuimeiaj.github.io/yoyoo/

yoyoo-starter's People

Contributors

yaojunn avatar zuimeiaj 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

Watchers

 avatar  avatar

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.