单位转换工具 & 怎么发一个npm 包
2023-03-14 22:54:46 时间
业务需求
wiki.envisioncn.com/pages/viewp…
起因:页面上有个数值特别长,有没有一个单位自动转换工具,让页面展示得更简洁?如10000000kg 展示为10kt 或 1万吨。
初始单位为吨
单位自动转换
单位转换包——@enos/unit-conversion
安装和使用: npm.envisioncn.com/package/@en…
基本用法
传参:初始数值,初始单位,保留小数点位数(默认保留两位)
const result = unitConversion.getConversionResult(12345, 'kWh', 2);
// 结果
// 中文环境:{num: 1.23,unit: "万kWh",rate: 10000}
// 英文环境:{num: 12.35,unit: "MWh",rate: 1000}
// rate为(初始值 / 转化后的值),为1则是未转化成功
复制代码
指定目标单位
目标单位区分中英文环境
const resultZh = unitConversion.getConversionResult(12345, 't', 2, '千克');
// resultZh {num: 12345000, unit: '千克', rate: 0.001}
const resultEn = unitConversion.getConversionResult(12345, 't', 2, 'kg');
// resultEn {num: 12345000, unit: 'kg', rate: 0.001}
复制代码
为什么指定单位要区分中英文?
因为中英文的单位可能不一致。 当前库中维护的单位有:
[
//电量
{
unitEn: {
unit: ['kWh', 'MWh', 'GWh'],
rate: 1000
},
unitZh: {
unit: ['kWh', '万kWh', '亿kWh'],
rate: 10000
}
},
//功率
{
unitEn: {
unit: ['kW', 'MW', 'GW'],
rate: 1000
},
unitZh: {
unit: ['kW', 'MW', 'GW'],
rate: 1000
}
},
//质量
{
unitEn: {
unit: ['kg', 't', 'kt'],
rate: [1, 1000, 1000 * 1000]
},
unitZh: {
unit: ['千克', '吨', '万吨', '亿吨'],
rate: [1, 1000, 1000 * 10000, 1000 * 10000 * 10000]
}
},
//热量
{
unitEn: {
unit: ['kJ', 'MJ', 'GJ'],
rate: 1000
},
unitZh: {
unit: ['kJ', 'MJ', 'GJ'],
rate: 1000
}
},
//液体体积
{
unitEn: {
unit: ['L', 'kL'],
rate: 1000
},
unitZh: {
unit: ['L', 'kL'],
rate: 1000
}
},
//固体体积
{
unitEn: {
unit: ['m3', 'km3'],
rate: 1000000000
},
unitZh: {
unit: ['m3', 'km3'],
rate: 1000000000
}
}
];
复制代码
- 进率支持统一进率——rate为number,也支持不同的进率——rate为array
这些单位没覆盖我的单位怎么办?
自定义单位
- 新增单位:支持新增单位,格式为object[]。
const unitArray = [{
unitEn: {
unit: ['kWh', 'MWh', 'GWh'],
rate: 1000 // 或rate:[1,1000,1000*1000]
},
unitZh: {
unit: ['kWh', '万kWh', '亿kWh'],
rate: 10000 // 或rate:[1,10000,10000*10000]
}
}]
// unitConversion.addUnits(unitArray)
复制代码
- 覆盖单位:支持覆盖单位,则只根据用户提供的单位进行转换
const unitArray = [{
unitEn: {
unit: ['kWh', 'MWh', 'GWh'],
rate: 1000
},
unitZh: {
unit: ['kWh', '万kWh', '亿kWh'],
rate: 10000
}
}]
unitConversion.replaceUnits(unitArray)
复制代码
怎么发一个npm包
wiki.envisioncn.com/pages/viewp… 发到cnpm需要admin权限
我们以发到npm 举例。
- 新用户到www.npmjs.com/ 注册账号
- 查看要发布项目的registry, 如果不符合则需要切换
npm config set registry https://registry.npmjs.org/
复制代码
- npm login 登录——填写用户名、密码、邮箱
- npm publish 发布
- 问题1:the package has been marked as private —— package.json中去掉"private": true
- 问题2:You cannot publish over the previously published versions: xxx——每次发布需要更新版本号
- 问题3:a package version that is forbidden by your security policy.——npm中有同名的包,需要改名
发布成功后邮箱会收到成功邮件。在npm个人主页可以看到这个新发上去的包。其他项目中通过npm install 或者yarn add可以引入并使用这个包。
- 问题4:安装了新的包,但import 后无法使用。——检查package.json是否写了入口文件main
怎么本地调试一个npm包
- 在包项目A中 yarn link,得到连接“A”
- 在调试项目B中 yarn link "A"
- A中的修改会实时地在B中生效
- 取消连接使用 yarn unlink
相关文章
- OH-v3.0-LTS Camera相机驱动框架(L2)解析之创建流
- 做中文域名代理需要多少资金
- HaaS EDU K1设备资源总体介绍
- Kubernetes 调度均衡器 Descheduler 使用指南
- 业界:教育新基建或催生混合云发展黄金期
- 怎么从传统的Linux网络视角理解容器网络?
- 高薪秘诀,跟着AliOS Things轻松入门操作系统:互斥信号量
- GNOME 动态三重缓冲技术,可将桌面性能提高 100%
- 微软宣布将抛弃Windows 10 20H2系统:涉约3.7亿用户
- 崮德好文连载 – 关于危机感
- 做一个中文域名购物网站要多少钱
- 生产力利器 - Linux 下高级日志文件查看器
- 2021年的云计算自动化将成为科技行业的新常态
- 深入理解Linux端口重用这一特性
- 注册中文域名要多少钱
- 我喜欢在 Linux 命令行中使用的六个元字符
- 崮德好文连载 – 时间&事项管理工具
- 闲鱼业务代码解耦利器SWAK是如何实现的(内含大量代码)
- 「漏洞扫描系统」CentOS7下安装部署巡风系统
- 2020年政务云公有云市场规模达81.4亿元人民币