将现有的化工计算HTML文件转换为微信小程序模块,提取计算逻辑、优化UI/UX、确保参数准确性。基于真实项目经验,避免常见坑点。
⚠️ 经验教训 #1:参数必须与HTML源码严格一致!
grep或Read工具精确提取HTML中的参数定义,直接使用
在utils/目录下创建独立的JS模块,例如:
// utils/calc.js - 储罐容积计算
const HEAD_PARAMS = {
'elliptic': { C: 0.5, label: '椭圆形封头 Ellipsoidal' },
'dish': { C: 0.255, label: '碟型封头 Torispherical' },
'hemi': { C: 1.0, label: '半球形封头 Hemispherical' }
};
function calcHeadVol(D, headType) {
const C = HEAD_PARAMS[headType].C;
return (Math.PI * Math.pow(D, 3) / 6) * C;
}
// ... 其他计算函数
module.exports = { HEAD_PARAMS, calcHeadVol, /* ... */ };
⚠️ 经验教训 #2:计算逻辑要从HTML中完整提取,不要"智能推断"!
使用微信小程序标准结构:
pages/[module_name]/
├── [module_name].js # 页面逻辑
├── [module_name].json # 页面配置
├── [module_name]_wxml_reference.txt # 页面结构(原 .wxml)
└── [module_name]_wxss_reference.txt # 页面样式(原 .wxss)
⚠️ 经验教训 #3:输入框字体要够大!
/* 输入框优化样式 */
.input {
font-size: 36rpx; /* 足够大,清晰可见 */
border: 2rpx solid #e0e0e0;
border-radius: 8rpx;
padding: 16rpx;
}
.input:focus {
border-color: #667eea;
box-shadow: 0 0 0 3rpx rgba(102, 126, 234, 0.1);
}
⚠️ 所有模块必须使用统一的UI风格,参照储罐容积计算(volume)和压力降计算(pressure_drop)模块:
统一主题色:紫色渐变 #667eea → #764ba2
区块样式模板:
/* 区块通用样式 */
.section {
background: white;
border-radius: 20rpx;
padding: 30rpx;
margin-bottom: 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.08);
}
/* 区块标题 */
.section-title {
display: block;
font-size: 32rpx;
font-weight: 600;
color: #1a1a2e;
margin-bottom: 24rpx;
padding-left: 16rpx;
border-left: 6rpx solid #4a90e2;
}
按钮样式模板:
.calc-btn {
width: 100%;
height: 100rpx;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
font-size: 36rpx;
font-weight: 600;
border: none;
border-radius: 50rpx;
margin: 32rpx 0;
box-shadow: 0 8rpx 24rpx rgba(102, 126, 234, 0.4);
}
结果卡片高亮:
.result-card {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 16rpx;
padding: 32rpx;
}
.result-value.highlight {
color: #ffd700; /* 金色高亮关键数值 */
font-size: 48rpx;
font-weight: bold;
}
在页面的data中添加默认值,方便快速测试:
data: {
tanD: '2.0', // 储罐直径
tanL: '5.0', // 储罐长度
tanSF: '50', // 安全容积百分比
rho: '1000', // 密度
hInput: '1.0', // 液位高度
// ... 其他字段
}
{
"pages": [
"pages/index/index",
"pages/volume/volume",
"pages/pressure_drop/pressure_drop"
]
}
<!-- pages/index/index_wxml_reference.txt -->
<view class="module-card" bindtap="goToVolume">
<text class="module-title">储罐容积计算 Tank Volume</text>
</view>
// pages/index/index.js
goToVolume() {
wx.navigateTo({ url: '/pages/volume/volume' });
}
关键要点:
function calcFriction(Re, eps_d) {
if (Re < 2000) {
return 64 / Re; // 层流
}
// 湍流:Colebrook-White迭代
let lambda = 0.02; // 初始猜测
for (let i = 0; i < 50; i++) {
const rhs = -2 * Math.log10(eps_d / 3.7 + 2.51 / (Re * Math.sqrt(lambda)));
lambda = 1 / (rhs * rhs);
}
return lambda;
}
关键要点:
| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 计算结果与HTML不一致 | 参数定义不匹配 | 用Read工具重新检查HTML源码中的参数定义 |
| 封头类型选项过多 | 未严格按照HTML定义 | 只保留HTML中实际使用的类型 |
| 输入框数字太小 | font-size过小 | 设置为36rpx,添加边框和focus效果 |
| 页面无法跳转 | 未在app.json注册 | 检查app.json的pages数组 |
| 计算逻辑报错 | JS模块未正确导出 | 检查module.exports是否正确 |
方式一:询问用户(推荐)
在完成重要功能后,主动询问用户:
"本版本是否保存为 v1.X?"
如果用户选择"保存",执行:
1. git add . && git commit -m "描述本次更改"
2. git tag -a v1.X -m "版本说明"
3. 更新 VERSION_LOG.md
方式二:使用保存脚本
# Windows (双击运行)
save_version.bat
# Git Bash
./save_version.sh
脚本会自动:
# 回滚到指定版本(临时查看)
git checkout v1.0
# 返回最新版本
git checkout master
# 查看所有版本
git tag -l | sort -V
v主版本.次版本(如 v1.0, v1.1, v2.0)
完成转换后,务必检查:
本skill包含以下参考资源:
html_extraction_guide.md - HTML源码提取技巧和注意事项
page_template/ - 小程序页面模板目录
common_styles_wxss_reference.txt - 通用样式片段(原 .wxss)
重要:本项目已配置 Git 版本控制!
save_version.sh / save_version.bat
VERSION_LOG.md
每次完成重要功能后,必须询问用户是否保存版本!
记住:这个skill基于真实项目经验,每一步都有血泪教训。严格遵循工作流程,不要"聪明地"跳过步骤!
共 1 个版本