内容导入
功能概述:内容导入是iFlow CLI的模块化内容管理系统,支持通过@文件语法导入外部内容。
学习时间:5-10分钟
前置要求:了解基本的文件路径概念,熟悉Markdown语法
什么是内容导入
内容导入是iFlow CLI提供的模块化内容管理功能,允许您通过 @file.md 语法从其他文件导入内容。这个功能让您能够将大型的配置文件拆分为更小、更易管理的组件,实现内容的模块化组织和重复使用。
核心特点
| 特点 | 说明 | 优势 |
|---|---|---|
| 模块化管理 | 将大文件拆分为小组件 | 提高可维护性 |
| 路径灵活性 | 支持相对和绝对路径 | 适应不同项目结构 |
| 安全防护 | 内置循环导入检测 | 防止无限 递归 |
| 实时处理 | 导入时动态解析内容 | 保持内容同步 |
| 跨项目共享 | 组件可在多项目间重用 | 提高开发效率 |
工作原理
导入处理流程
文件读取 → 路径解析 → 安全检查 → 内容导入 → 递归处理
↓
[@file.md] → [路径计算] → [循环检测] → [内容插入] → [嵌套导入]
安全机制
- 路径验证:检查文件路径的合法性和安全性
- 循环检测:防止文件间的循环引用
- 权限控制:确保只能访问授权的文件
- 错误恢复:导 入失败时的优雅处理
详细功能说明
基本语法
使用 @ 符号后跟您要导入的文件路径:
# 主要的配置文件
这是主要内容。
@./components/instructions.md
这里是更多内容。
@./shared/configuration.md
支持的路径格式
| 路径类型 | 语法示例 | 说明 |
|---|---|---|
| 同目录 | @./file.md | 从同一目录导入文件 |
| 父目录 | @../file.md | 从父目录导入文件 |
| 子目录 | @./components/file.md | 从子目录导入文件 |
| 绝对路径 | @/absolute/path/to/file.md | 使用绝对路径导入 |
使用示例
基本导入场景
简单文件导入
# 主配置文件
欢迎来到我的项目!
@./getting-started.md
## 功能特性
@./features/overview.md
模块化组织
# 项目文档结构
项目根目录/
├── IFLOW.md # 主配置文件
├── components/
│ ├── instructions.md # 使用说明组件
│ ├── setup.md # 设置指南组件
│ └── examples.md # 示例代码组件
└── shared/
├── common.md # 公共配置
└── templates.md # 模板文件
高级导入功能
嵌套导入
导入的文件本身也可以包含导入,创建多层次结构:
# main.md
@./header.md
@./content.md
@./footer.md
# header.md
# 项目标题
@./shared/title.md
@./shared/metadata.md
条件性导入
根据不同情况导入不同的配置:
# 开发环境配置
@./configs/development.md
# 生产环境配置
@./configs/production.md
安全防护机制
循环导入检测
系统自动检测并防止文件间的循环引用:
# file-a.md
@./file-b.md
# file-b.md
@./file-a.md <!-- 系统会检测到循环引用并阻止 -->
检测机制:
- 维护导入路径栈
- 检查每个新导入是否已存在于路径中
- 发现循环时立即中止并报告错误
安全限制
| 安全项 | 限制 | 作用 |
|---|---|---|
| 路径验证 | 只允许授权目录 | 防止访问敏感文件 |
| 深度限制 | 最大5层嵌套 | 防止无限递归 |
| 文件类型 | 仅支持文本文件 | 避免二进制文件问题 |
| 权限检查 | 验证读取权限 | 确保文件可访问 |