- API 路由统一: 移除 /api/h5/,统一 /api/pms/ 入口 - 二进制改名: api-server -> pms-api(与服务名一致) - nginx: 合并 /api/ + /pms/api/ 为 /api/pms/ - 新增 docs/API.md 接口文档 - 后端: CabinetDetail 增加 rssi/pow_fail/address/soc 等字段 - Redis 管道批量读取仓体实时数据(SOC/电压/电流/功率) - DB: 所有 TIMESTAMP 列改为 DATETIME(修复类型不匹配) - 用户管理: 新增创建时间/修改时间列,状态改用 Switch - 角色管理/用户管理: 操作按钮改为图标 - PC 设备详情: 基本信息补全 RSSI/ICCID/电源/地址 - PC 卡片: 通道统计改用 Lucide 图标,颜色统一 - PC 二维码: canvas 渲染,含编号文字,支持右键下载 - H5: 按 uni-app 规范修正导航(navigateTo 替代 reLaunch) - H5: 详情页加返回导航条 - H5: 扫码支持摄像头(jsQR)+ ?id= 参数 - H5: 底部 tabBar 在所有页面常显 - H5: 首页统计改为 6 项(设备/通道/空闲/充电/充满/故障) - H5: 下拉刷新 / 上拉加载 - 产品首页: 添加业务联系 - 文档: 清理过时文件,补充缺失规范章节
2.8 KiB
2.8 KiB
Use camelCase for Style Binding Properties
Rule
When using :style bindings in Vue, prefer camelCase property names over kebab-case for consistency with JavaScript object syntax and better IDE support.
Why This Matters
- camelCase is the standard JavaScript convention for object properties
- Kebab-case properties require quotes, adding visual noise
- IDE autocomplete and type checking work better with camelCase
- Consistent with how CSS properties are accessed via
element.stylein JavaScript - Vue's auto-prefixing works with both, but camelCase is cleaner
Bad Code
<template>
<!-- Requires quotes, harder to read -->
<div :style="{
'font-size': fontSize + 'px',
'background-color': bgColor,
'margin-top': marginTop + 'px',
'z-index': zIndex
}">
Content
</div>
</template>
Good Code
<template>
<!-- Clean camelCase syntax -->
<div :style="{
fontSize: fontSize + 'px',
backgroundColor: bgColor,
marginTop: marginTop + 'px',
zIndex: zIndex
}">
Content
</div>
</template>
With Computed Properties
<script setup>
import { computed } from 'vue'
const props = defineProps({
width: Number,
height: Number,
isVisible: Boolean
})
// camelCase throughout
const containerStyle = computed(() => ({
width: `${props.width}px`,
height: `${props.height}px`,
opacity: props.isVisible ? 1 : 0,
transition: 'opacity 0.3s ease'
}))
</script>
<template>
<div :style="containerStyle">
Content
</div>
</template>
Auto-Prefixing with Multiple Values
Vue automatically detects and applies vendor prefixes. For properties that need multiple values for cross-browser support, use an array:
<template>
<!-- Vue will use the last value supported by the browser -->
<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }">
Flexbox content
</div>
</template>
Combining Static and Dynamic Styles
The :style directive can coexist with the regular style attribute:
<template>
<!-- Static styles + dynamic styles are merged -->
<div
style="border: 1px solid gray"
:style="{ backgroundColor: dynamicColor }"
>
Content
</div>
</template>
Merging Multiple Style Objects
Use array syntax to merge multiple style objects:
<script setup>
const baseStyles = {
padding: '10px',
borderRadius: '4px'
}
const themeStyles = computed(() => ({
backgroundColor: isDark.value ? '#333' : '#fff',
color: isDark.value ? '#fff' : '#333'
}))
</script>
<template>
<!-- Later objects override earlier ones for conflicting properties -->
<div :style="[baseStyles, themeStyles]">
Content
</div>
</template>