npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

a-datav-lowcode

v2.1.4

Published

a-datav低代码模块

Readme

a-datav纯前端

环境

nodejs v10+
npm v6.14+

准备

  1. 安装 nodejs v10+ 和 npm v6.14+ ,按照官网安装即可。
  2. 进入adatav-lowcode项目根目录,执行 npm install ,安装前端依赖。
  3. 依赖安装完成后,执行 npm run dev ,启动项目。
  4. 启动完成后,浏览器访问 http://localhost:9999/

开发

1.src/datav-create/components 为组件目录,新组件在该目录创建 2.src/datav-create/components/config 为组件声明目录,新组件需在该目录下声明

组件定制开发

下面我会和您一起定制一个简单的背景组件,在这之前,您需要了解React的基本语法。

  • 每个组件至少包含3个文件(文件名随便): 1.state.js:组件状态。 2.Renderer.js:组件渲染器。 3.Configer.js:组件配置器。

  • 在 datav-create/components 下创建文件夹 demo,在demo中创建文件夹 background-demo,这是我们存放组件代码的地方。

  • 新建组件状态文件 datav-create/components/demo/background-demo/state.js :

    import common_state from "../../common/common_state";
    const state = {
        ...common_state,  //继承通用组件状态,包含组件位置、大小、数据等信息
        w: 1000,          //重写组件默认宽度
        h: 600,           //重写组件默认高度
        backgroundColor: 'rgba(21,163,132,1)'  //自定义字段,Configer中对该值的修改会触发Renderer重新渲染
    }
    export default state;
  • 新建组件渲染器 datav-create/components/demo/background-demo/Renderer.js:

    import React from 'react'
      
    export default function Renderer({component}){
      
        //component为组件状态,组件状态改变会触发渲染器重新渲染
        let {i: id,_ready,backgroundColor,w,h} = component
        //这里是固定写法,组件非ready时很多属性为空值,如果继续执行可能导致空指针
        if(!_ready)
            return null
        //返回一个简单的div,背景色是在state.js中定义的backgroundColor属性,Configer中可以对该属性进行修改
        return <div style={{backgroundColor:backgroundColor,width: w,height: h}}></div>
    }
  • 新建组件配置器 datav-create/components/demo/background-demo/Configer.js:

    import React from 'react'
    import { Row,Col } from 'antd'
    import state from "./state";
    import useUpdateComponent from "../../../hooks/useUpdateComponent";
    import useInitComponent from "../../../hooks/useInitComponent";
    import Palette from "../../../../lib/palette/Palette";
      
    export default function Configer({component}){
        //component为组件状态
        let {i: id,backgroundColor} = component
        //更新组件数据的hooks
        let updateComponent = useUpdateComponent()
        //固定写法,初始化state,执行结束会将组件_ready状态置为true
        let ready = useInitComponent(component,state)
        //固定写法,组件非ready时很多属性为空值,如果继续执行可能导致空指针
        if(!ready)
            return null
        //处理背景色改变事件,调用updateComponent函数提交指定组件的变化
        function handleColorChange(color) {
            //参数1是组件id,组件初始化后,会自动生成唯一id保存到组件状态中
            //参数2是组件状态的改变部分,这些改变会触发渲染器的重新渲染
            updateComponent(id,{backgroundColor: color})
        }
        //页面显示一个调色盘,允许用户修改背景色
        return (
            <>
                <Row style={{marginBottom: 4}}>
                    <Col span={6}>背景颜色</Col>
                    <Col span={18}>
                        <Palette color={backgroundColor} onChange={handleColorChange}/>
                    </Col>
                </Row>
            </>
        )
    }
  • 在框架中定义我们的组件: datav-create/components/config/index.js中定义了所有组件,为保证可读性,每个大类单独拆分成单个文件。

    import React from 'react'
    import general from "./general";
    import antv from "./antv";
    import word from "./word";
    import material from "./material";
    import interactive from "./interactive";
    import custom from "./custom";
    import demo from "./demo";
    import geo from "./geo";
    import hidden from "./hidden";
      
    export default {
        general: general,
        antv: antv,
        geo: geo,
        word: word,
        material: material,
        interactive: interactive,
        custom: custom,
        demo: demo,    //在这里定义demo组件
      
        hidden: hidden //该目录下组件不在列表中显示,可作为子组件使用
    }

    在datav-create/components/config/demo.js中定义我们的背景组件。

    import loadable from '@loadable/component'
    import {BarChartOutlined, LineChartOutlined, PictureOutlined} from '@ant-design/icons';
      
    const demo = {
        //一级名称和图标
        icon: BarChartOutlined,
        descr: 'demo',
        children: {
            //二级名称和图标,如果是deft,则页面不显示二级
            deft: {
                icon: LineChartOutlined,
                descr: '折线图',
                children: {
                    //三级名称和图标,包括具体组件的配置器和渲染器,也可以用图片代替图标,参考其他组件
                    background1: {
                        icon: PictureOutlined,
                        descr: '我的背景组件',
                        //我们定制背景组件的配置器,loadable保证组件懒加载,节省带宽
                        configer: loadable(() => import(`../demo/background-demo/Configer`)),
                        //我们定制背景组件的渲染器
                        renderer: loadable(() => import(`../demo/background-demo/Renderer`))
                    }
                }
            },
        }
    }
    export default demo;
  • 完成后,项目改变部分文件结构如下:

    a-datav
      |_front
        |_datav-create
          |_components
            |_config
              |_demo.js
              |_index.js
            |_demo
              |_background-demo
                |_Configer.js
                |_Renderer.js
                |_state.js
  • 至此,我们的背景组件就开发成功了,可以刷新页面看到成果。组件虽然简单,但包含了最基本的组件开发思路。我们可以举一反三,参考其他组件定制更多更高级更复杂的组件。

  • 当然,一个强大的组件还需要更多高级特性,比如组件交互、数据结构定义、显示隐藏控制、父子组件等。您可以参考其他组件定制。