> **本文回答**：vjmap / vjmapext 环境搭建的整体思路和所有子项索引。

# 环境初始化总览

## 子项索引

| 子文件 | 回答什么 |
|---|---|
| [install](install.md) | npm / CDN 两种安装方式，加载顺序，版本兼容 |
| [container](container.md) | 地图容器必须满足的宽高 / position 要求，`createUI` 与容器定位的关系 |
| [integrations](integrations.md) | Vite / Vue 3 / Vue 2 / React / 纯 HTML 集成样板 |
| [dispose](dispose.md) | 组件卸载时的资源释放顺序与泄漏防护 |

## 最短可运行代码

```js
import vjmap from "vjmap";
import "vjmap/dist/vjmap.min.css";

const svc = new vjmap.Service(SERVICE_URL, TOKEN);
const res = await svc.openMap({ mapid: "sys_zp", mapopenway: vjmap.MapOpenWay.GeomRender });
if (res.error) throw new Error(res.error);

const prj = new vjmap.GeoProjection(res.bounds);
const map = new vjmap.Map({
  container: "map",
  style: svc.vectorStyle(),
  center: prj.toLngLat(prj.getMapExtent().center()),
  zoom: 2,
  renderWorldCopies: false
});
map.attach(svc, prj);
await map.onLoad();
```

## 主题级 Top 3 陷阱

1. **容器没有宽高 / 没有 position** → 首屏黑屏。看 [container](container.md)。
2. **CDN 引入时 vjmapext 写在 vjmap 之前** → 加载顺序错误，vjmapext 内部引用 `window.vjmap` 失败。看 [install](install.md)。
3. **Vue / React 卸载没 `map.remove()`** → Marker 残留、内存泄漏。看 [dispose](dispose.md)。
