工具与类系统
本文档涵盖 Leaflet 的核心 utility 函数、class 继承系统以及整个库中使用的基础模式。这些组件提供了基本的构建块,使 Leaflet 的模块化架构和一致的编程模式成为可能。
关于详细的 DOM event 处理和交互 utilities,请参阅 DOM 工具与事件处理。关于 Leaflet class 使用的主要 event system,请参阅 事件系统。
核心 Utility 函数
Leaflet 在 Util 命名空间中提供了一套全面的 utility 函数,用于处理常见的编程任务,如对象标识、字符串格式化和函数操作。
对象标识与管理
stamp 函数为对象提供唯一标识,这对 Leaflet 的内部跟踪系统至关重要:
setOptions 函数处理配置对象的合并,创建适当的原型链以支持 option 继承:
字符串与数字处理
Utility 函数提供一致的格式化和字符串操作:
| 函数 | 用途 | 示例用法 |
|---|---|---|
formatNum | 数字精度控制 | Coordinate 舍入 |
splitWords | 字符串分词 | CSS class 解析 |
template | 字符串插值 | URL template 处理 |
wrapNum | 数值范围包装 | Longitude 规范化 |
template 函数使用基于正则表达式的方法将占位符替换为数据值,支持静态值和函数回调。
函数控制 Utilities
throttle 函数为性能关键操作实现速率限制:
Class 继承系统
Leaflet 的 Class 为面向对象编程提供基础,支持继承、mixins 和配置管理。
基类结构
Class 构造函数自动调用 initialize() 并处理初始化钩子,为所有 Leaflet class 提供一致的实例化模式。
继承与扩展
extend 方法使用原型链继承创建新 class:
该系统支持传统的 extend() 方法和现代 ES6 class 语法,所有 class 上都有可用的静态方法用于配置和扩展。
Options 管理
Options 处理使用原型继承来实现高效的默认值和覆盖:
Mixin 系统
include 方法通过 mixins 实现多重继承:
浏览器检测系统
Browser 命名空间提供跨平台兼容性的特性检测:
浏览器检测侧重于能力而不是特定的浏览器版本,基于可用特性实现渐进增强。
DOM Utilities 概述
Leaflet 包含基本的 DOM 操作 utilities,交互系统中有更全面的覆盖:
核心 DOM 操作
| 函数 | 用途 | 使用模式 |
|---|---|---|
get | 元素检索 | ID 或元素规范化 |
create | 元素创建 | Layer DOM 构建 |
setPosition | 位置管理 | Layer 定位 |
setTransform | CSS transforms | 硬件加速 |
元素操作
DOM utilities 使用现代 CSS transforms 并维护位置缓存以优化性能。
基础模式
这些 utilities 建立了 Leaflet 中使用的 consistent patterns:
对象生命周期模式
Event 集成模式
需要 event 功能的 Class 继承自 Evented 并使用 utility 函数进行 DOM 交互:
配置管理模式
Option system 通过适当的继承实现分层配置: