一、模块作用域:真的能隔离(点点看)

页面里藏了两个「传统 script」和三个「模块 script」,按钮负责把它们的老底翻出来。

二、拆成三个文件(点标签看源码)

这就是第十四章迷你待办的拆分版。沙箱 iframe 里加载不了外部模块文件(模块要走 CORS),所以下面第三节跑的是这三个文件的内联等价版——真实项目里拆成文件后,代码一字不差。

// utils.js —— 纯工具:不碰 DOM,不做业务
export function clamp(n, min, max) {
  return Math.min(Math.max(n, min), max)
}

function pad2(n) {                 // 不 export:只服务本文件,外面看不见
  return String(n).padStart(2, '0')
}

export function formatTime(date) {
  const h = pad2(date.getHours())
  const m = pad2(date.getMinutes())
  const s = pad2(date.getSeconds())
  return h + ':' + m + ':' + s
}

三、运行效果(三个文件装载后)

main.js 渲染出的界面

0
[迷你控制台]