概述
本文档介绍 Turf.js 作为一个模块化地理空间 JavaScript 库,涵盖其目的、架构和组织结构。有关各个模块实现的详细信息,请参阅几何操作、测量与变换和空间分析。有关包组织和分发详细信息,请参阅包结构。
什么是 Turf.js
Turf.js 是一个用 JavaScript 编写的模块化地理空间引擎,用于空间分析操作。该库提供了 100 多个可独立或一起使用的独立模块,同时支持客户端 Web 应用程序和服务器端 Node.js 环境。
核心功能包括:
- 几何操作:对空间要素进行缓冲区、交集、并集、差集操作
- 空间分析:聚类算法、统计分析和插值
- 测量:具有测地线精度的距离、面积、方位角计算
- 数据工具:GeoJSON 创建、验证和转换辅助函数
- 网格生成:六边形、方形、三角形和点网格系统
仓库架构
模块组织和依赖
代码库遵循分层依赖架构,其中高级模块依赖于基础工具,但绝不反向依赖。
核心模块依赖
数据处理流水线
所有 Turf.js 模块遵循一致的数据流模式,标准化输入验证、坐标处理和输出生成。
标准处理流程
包分发策略
Turf.js 通过其模块化架构和构建系统支持多种使用模式。
| 分发方法 | 目标用例 | 入口点 | 格式 |
|---|---|---|---|
| 独立模块 | Tree-shaking,最小化打包 | @turf/distance, @turf/buffer | ESM/CJS |
| 主包 | 完整功能 | @turf/turf | ESM/CJS |
| 浏览器包 | 直接脚本包含 | turf.min.js | UMD |
构建系统配置
运行时和浏览器支持
Turf.js 面向现代 JavaScript 运行时,具有特定的兼容性要求。Node.js 被视为一等公民,支持 Active 和 Maintenance LTS 版本。浏览器支持遵循 Browserslist 标准:> 0.25%, last 2 versions, fully supports es5, not dead。
构建系统使用 Babel 转译以确保浏览器包的 ES5 兼容性,而独立模块则使用现代 JavaScript 功能发布,以支持支持这些功能的环境。