We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
由于之前使用的开源v-charts (https://v-charts.js.org/#/) 不再有人维护且官网文档展示不了图表,echarts只能使用v4版本以下,故近一月来开发了猫头鹰图表库包(基于echarts)。 技术栈:vue + iview ui库 + echarts 图表库 支持基础图(线图,柱图,柱线图,条形图,堆积图),高级计算图(维度交叉图,差异计算图,多纵向y轴图),支持KMB,percent格式化。支持label展示峰值谷值最新值等。
npm init owl-chart-component
{ "presets": [ ["@babel/preset-env", { "modules": false, "targets": "ie >= 8" }] ], "plugins": [ ["@babel/plugin-transform-runtime", { "corejs": 3 }], ["import", { "libraryName": "view-design", "libraryDirectory": "src/components" }] ] }
const path = require('path'); const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const VueLoaderPlugin = require('vue-loader/lib/plugin'); function resolve (dir) { return path.join(__dirname, '.', dir); } module.exports = { entry: './examples/main.js', mode: 'development', devtool: 'source-map', output: { path: path.resolve(__dirname, './dist'), filename: 'index.js' }, resolve: { extensions: ['.js', '.vue'], alias: { vue$: 'vue/dist/vue.esm.js' } }, devServer: { port: '8099', hot: true }, module: { rules: [ { test: /\.(js|vue)$/, loader: 'eslint-loader', enforce: 'pre', include: [resolve('examples'), resolve('src')], options: { formatter: require('eslint-friendly-formatter') } }, { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.less$/, use: [ 'vue-style-loader', { loader: 'css-loader', options: { esModule: false } }, 'less-loader' ] }, { test: /\.js$/, loader: 'babel-loader', exclude: [resolve('node_modules')], options: { presets: ['@babel/preset-env'] } }, { test: /\.css$/, use: [ 'style-loader', { loader: 'css-loader', options: { esModule: false } } ] }, { test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/, loader: 'file-loader' } ] }, plugins: [ new webpack.HotModuleReplacementPlugin(), new HtmlWebpackPlugin({ filename: 'index.html', template: resolve('examples/index.html'), inject: true }), new VueLoaderPlugin() ] };
"devDependencies": { "@babel/core": "^7.12.10", "@babel/eslint-parser": "^7.13.4", "@babel/plugin-transform-runtime": "^7.12.10", "@babel/preset-env": "^7.12.11", "@babel/runtime": "^7.12.5", "@babel/runtime-corejs3": "^7.12.5", "@rollup/plugin-commonjs": "^17.1.0", "@rollup/plugin-node-resolve": "^11.2.0", "babel-loader": "^8.2.2", "babel-plugin-import": "^1.13.3", "css-loader": "^5.0.1", "echarts": "^5.0.2", "eslint": "^7.17.0", "eslint-config-standard": "^16.0.2", "eslint-friendly-formatter": "^4.0.1", "eslint-loader": "^4.0.2", "eslint-plugin-vue": "^7.4.1", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.0.0-alpha.6", "husky": "^4.3.8", "less": "^4.0.0", "less-loader": "^7.2.1", "lint-staged": "^10.5.3", "lodash": "^4.17.20", "numerify": "^1.2.9", "prettier": "^2.2.1", "rollup": "^2.39.0", "rollup-plugin-babel": "^4.4.0", "rollup-plugin-less": "^1.1.3", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-vue": "^5.1.9", "style-loader": "^2.0.0", "view-design": "^4.5.0", "vue": "^2.6.12", "vue-loader": "^15.9.6", "vue-style-loader": "^4.1.2", "vue-template-compiler": "^2.6.12", "webpack": "^5.12.2", "webpack-cli": "^4.3.1", "webpack-dev-server": "^3.11.1" },
"dev": "webpack serve --inline --progress --config ./webpack.config.js",
设计图:
module.exports = { pkgList: [ { type: 'cjs', suffix: '.js', src: 'src/index.js', dist: 'lib/index' }, { type: 'cjs', suffix: '.js', src: 'src/component/chart/core.js', dist: 'lib/chart/core' }, ... ] };
const { nodeResolve } = require('@rollup/plugin-node-resolve'); const commonjs = require('@rollup/plugin-commonjs'); const babel = require('rollup-plugin-babel'); const vue = require('rollup-plugin-vue'); const less = require('rollup-plugin-less'); const { terser } = require('rollup-plugin-terser'); const { pkgList } = require('./config'); const packageJson = require('../package.json'); const banner = name => ( '/*!\n' + ` * ${name} v${packageJson.version}\n` + ` * (c) 2020-${new Date().getFullYear()} ${packageJson.author}\n` + ' * Released under the MIT License.\n' + ' */\n' ); const pkgExports = []; pkgList.forEach(item => { pkgExports.push({ input: item.src, output: { exports: 'named', format: item.type, sourcemap: false, file: item.dist+item.suffix, globals: { lodash: 'lodash', echarts: 'echarts', numerify: 'numerify' }, banner: banner(item.name+item.suffix) }, plugins: [ nodeResolve({ extensions: ['.js', '.vue'] }), less(), vue({ css: true, compileTemplate: true }), commonjs(), babel({ exclude: '**/node_modules/**', runtimeHelpers: true }), terser() ], external: id => /(^(echarts|numerify|lodash|view-design)$)/.test(id) }); }); module.exports = pkgExports;
"build": "rm -f -r lib && rollup -wc build/rollup.config.js"
切换需要发布包的源,若是npm源,则注册账号,后npm login,登录后,则npm publish
npm login
npm publish
由于该包依赖lodash,echarts,numerify,view-design,故需提前安装
npm install lodash echarts numerify view-design -s
在main文件中
import OwlChart from '@bigo/owl-chart-component'; Vue.use(OwlChart);
<owl-chart :key="renderKey" :data="options" :width="width" :height="height" :group="groupId" />
The text was updated successfully, but these errors were encountered:
No branches or pull requests
猫头鹰图表库开发总结
背景
由于之前使用的开源v-charts (https://v-charts.js.org/#/) 不再有人维护且官网文档展示不了图表,echarts只能使用v4版本以下,故近一月来开发了猫头鹰图表库包(基于echarts)。
技术栈:vue + iview ui库 + echarts 图表库
支持基础图(线图,柱图,柱线图,条形图,堆积图),高级计算图(维度交叉图,差异计算图,多纵向y轴图),支持KMB,percent格式化。支持label展示峰值谷值最新值等。
过程
初始化项目
npm init owl-chart-component
搭建开发环境和测试文件
包含App.vue,index.html,main.js
包含assets(样式文件,静态文件),component(组件文件库)
实现过程
设计图:
打包
config.js
发布
切换需要发布包的源,若是npm源,则注册账号,后
npm login
,登录后,则npm publish
部分效果图
组件使用说明
引入依赖包
由于该包依赖lodash,echarts,numerify,view-design,故需提前安装
使用
在main文件中
参数说明
data-type说明
data-chartData说明
data-dataOptions说明
data-dataOptions-scatterConfig说明
chartOptions说明
有问题和可优化处欢迎大家多多指导
The text was updated successfully, but these errors were encountered: