loader/README.md

59 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

# @web/loader 模块调度中心
`@web/loader` 是整个 `@web` 体系的入口调度中心。它负责根据当前环境自动生成 `importmap`,并管理各模块的版本。
---
## 一、 集成方式
### 方式一:内联引导 (推荐 - 无额外请求)
在 HTML 的 `<head>` 顶部加入以下代码。这种方式不需要额外请求 `loader.min.js` 文件。
```html
<script>
(function __load(tpl, ...pkgs) {
const DEFAULT_VERSIONS = { state: 'v1.0.11', bootstrap: 'v1.0.1', base: 'v1.0.7' };
const importMap = { imports: {} };
pkgs.forEach(pkg => {
const [name, version] = pkg.split(':');
const v = version || DEFAULT_VERSIONS[name] || 'main';
importMap.imports[`@web/${name}`] = tpl.replace(/{project}/g, name).replace(/{tag}/g, v);
});
const s = document.createElement('script');
s.type = 'importmap';
s.textContent = JSON.stringify(importMap);
document.currentScript.parentNode.insertBefore(s, document.currentScript);
})('https://apigo.cc/web/{project}/raw/tag/{tag}/dist/{project}.js', 'state', 'bootstrap', 'base');
</script>
```
### 方式二:引用外部 Loader
直接引用打包好的 `loader.min.js`。它会自动根据当前的 URL 模板进行调度。
```html
<script src="https://apigo.cc/web/loader/raw/tag/v1.0.0/dist/loader.min.js"></script>
<script>
// 无需版本号,自动使用内置的默认版本
Loader.load('state', 'bootstrap', 'base');
</script>
```
---
## 二、 核心特性
1. **智能模板 (Smart Templating)**:自动根据 `loader.js` 的加载路径推断其他组件的下载路径。
2. **默认版本 (Default Versioning)**:构建时内置了 `@web` 家族各成员的推荐稳定版本,解决“版本选择困难症”。
3. **按需加载 (On-demand)**:在页面头部一次性声明所需模块,避免加载无关资源。
---
## 三、 支持模块清单
* `state` (原子状态机)
* `bootstrap` (UI 引擎)
* `base` (常用控件库)
* `dataTable` (高性能表格)
* `kanban` (看板)
* `mindmap` (思维导图)
* `chart` (图表)