- 模块化更有助于代码复用
- 每个模块都是一个 .js 文件
- 需要导出 exports 才能被使用
- 需要引入 require 采能使用
[] 时间格式化 formatTime.js
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : `0${n}`
}
module.exports = {
formatTime
}
[] 封装购物车数据统计 calcCarts.js
- 统计数量
- 统计总价
- 统计优惠
- 其它数据
- 创建模块文件 calcCarts.js
const calcCarts = (carts) => {
return carts.reduce((acc, item) => {
if (item.selected) {
const itemTotal = item.quantity * item.price;
const itemDiscounted = itemTotal * (1 - (item.discount || 0));
acc.original += itemTotal;
acc.discounted += itemDiscounted;
acc.total += item.quantity;
}
return acc;
}, {
original: 0.00,
discounted: 0.00,
total: 0
})
}
// 导出
module.exports = {
calcCarts
}
引入模块;注意路径
const {
calcCarts
} = require('../../utils/calcCart')
使用解构出来的方法
onLoad(){
this.setData({
carts: calcCarts(this.data.carts)
})
}
[] 公共库 common.js - 手动封装随机 id
- 根据需要添加其它业务
- nanoid X
- uuid X
- 生成 0-1 之间的随机小数 0.729483294823
- 转换为36进制字符串 0.q8x7n2k4m9
- 去掉了 0. 结果 q8x7n2k4m9
const generateID = () => {
return new Date().getTime().toString(36) + Math.random().toString(36).substr(2)
}
module.exports = {
generateID
}