1.0.7 • Published 2 years ago

esm-component v1.0.7

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

esm component

可以动态加载的组件

开发

在自己项目里进行组件开发,大概流程如下

  • 1.创建一个文件夹,下面有 package.json,至少包含以下几个配置项
{
 "name": "line-chart", // 组件名称
 "version": "1.1", // 组件版本
 "fec": {
   "outerLib": ["react", "echarts-for-react"] // 需要从外部工程传入的库,组件打包时不会打包这些库
 }
}
  • 2.创建一个 index.tsx 作为默认的入口文件,开始写自己的组件,例如
import React from 'react';
import ReactECharts from 'echarts-for-react';
import './index.less';

interface IProps {
  data: any[];
}

export default function tableLineChart(props: IProps) {
  const { data } = props || {};
  const chartData = {
    grid: {
      left: 5,
      top: 5,
      bottom: 5,
      right: 5,
    },
    xAxis: [
      {
        show: false,
        axisTick: {
          alignWithLabel: true,
        },
        boundaryGap: false,
      },
    ],
    yAxis: [
      {
        show: false,
      },
    ],
    series: [
      {
        areaStyle: {
          normal: {
            color: {
              x: 0,
              y: 0,
              x2: 0,
              y2: 1,
              colorStops: [
                {
                  offset: 0,
                  color: 'rgba(77,131,244,0.20)',
                },
                {
                  offset: 1,
                  color: 'rgba(76,131,243,0.00) ',
                },
              ],
              globalCoord: false,
            },
          },
        },
        data,
        type: 'line',
        lineStyle: {
          color: '#4C83F3',
          width: 1.5,
        },
        symbol: 'circle',
        symbolSize: 4,
        itemStyle: {
          normal: {
            color: '#4C83F3',
            borderColor: '#fff',
            borderWidth: 1,
          },
        },
      },
    ],
  };

  return (
    <div className="line-chart-box">
      <ReactECharts
        className="line-chart"
        option={chartData}
        notMerge={true}
        lazyUpdate={false}
      />
    </div>
  );
}
  • 3.使用命令行工具启动当前组件的编译和 dev server
npm run dev #实际可能不是这个命令,只是放在这示意一下
  • 4.根据下面的使用流程把组件接入到页面里开始在本地调试

组件管理

  • 1.发布组件,需要先改一下前面提到的 package.json 中的 version 字段,然后
npm run publish #实际可能不是这个命令,只是放在这示意一下

此处会调用配置 server 的 api 去发布当前版本

组建管理 server

这里有两个接口,put 和 get

  • put 添加某个组件的元信息
{
  request: {
    body: {
      name: 'line-chart',
      version: '1.1.5'
      main: 'https://cdn.com/lineChart@1.1.5.js',
    deps: [
      'https://cdn.com/lineChart-1641299144516.css',
    ],
    }
  },
  response: {
    success: true
  }
}
  • get 根据参数返回当前组件的元信息
{
  request: {
    query: {
      name: 'line-chart@1'
    }
  },
  response: {
    // 返回最新的1.x.x版本
    main: 'https://cdn.com/lineChart@1.1.5.js',
    deps: [
      'https://cdn.com/lineChart-1641299144516.css',
    ],
  }
}

使用

大概流程如下

  • 1.在项目的入口文件加入一下代码,来注册需要传给组件的库
import { register } from 'esm-component';
register({
  react: React,
  'echarts-for-react': ReactECharts,
  __dev__: true, // 这个字段用来标识是否为本地开发环境,开发环境会自动链接前面开发流程3中提到的dev server,此处例子为写死的true,实际应该会按照自己项目编译的环境变量来替换,比如:
  // __dev__: __BUILD_ENV__ === 'local',
});
  • 2.在要使用组件的位置加入如下代码,就引入了组件
import { esmc } from '@didi/esm-component';
import React from 'react';

export default component () {
 return (
   <div>
    <span>test</span>
    {esmc('line-chart@1', props)} // 此处@1代表使用最新的1.x.x版本的组件
   </div>
 )
}
1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago