当前版本:v1.0
这是一个飞书多维表格插件,用于从多维表格单元格中读取并显示 Markdown 格式的代码内容。
- 前端框架: Vue 3 (Composition API)
- 构建工具: Vite 5
- 语言: TypeScript
- UI框架: Naive UI (轻量级 Vue 3 UI 库)
- 核心SDK: @lark-base-open/js-sdk (飞书多维表格开放平台 SDK)
- Markdown渲染: markdown-it
- 代码高亮: highlight.js
以下为本项目与官方文档对齐的单元格读取规范(来源:Base JS SDK 示例与 Table API 文档)。
- 获取当前表:bitable.base.getActiveTable()(或根据选择bitable.base.getSelection()决定 tableId)
- 获取记录列表:table.getRecordIdList()/table.getRecordList()
- 读取单元格原始值(优先):table.getCellValue(fieldId, recordId)
- 读取单元格纯文本(回退):table.getCellString(fieldId, recordId)
- 从 Field/Record 也可读取:
- field.getCellValue(recordId)/- field.getCellString(recordId)
- record.getCellValue(fieldId)/- record.getCellString(fieldId)
 
本项目统一约定:
- 优先使用 getCellValue(fieldId, recordId);若为空再回退getCellString(fieldId, recordId);
- 仍为空时,JSON 展示原始值便于排查;
- 参数顺序统一为:先 fieldId,后recordId。
示例(推荐流程):
const table = await bitable.base.getActiveTable()
const value = await table.getCellValue(fieldId, recordId)
let text = extractTextFromValue(value)
if (!text) {
  text = await table.getCellString(fieldId, recordId)
}
if (!text && value != null) {
  text = typeof value === 'string' ? value : JSON.stringify(value)
}
render(text)- bitable: 多维表格主要接口
- FieldType: 字段类型枚举
- ViewType: 视图类型枚举
- base: 基础功能模块
- bitable.bridge.getTheme(): 获取主题(深色/浅色)
- bitable.bridge.getLanguage(): 获取语言设置
- bitable.bridge.onThemeChange(): 监听主题变化
- 表格操作、视图操作、字段操作等API
项目根目录/
├── src/
│   ├── App.vue           # 主应用组件(处理主题、国际化)
│   ├── main.ts           # 应用入口
│   ├── views/            # 视图/功能页面
│   ├── components/       # 通用组件
│   ├── utils/            # 工具函数
│   └── locales/          # 国际化文件
├── public/               # 静态资源
├── index.html            # HTML入口
├── package.json          # 项目配置
├── vite.config.ts        # Vite配置
└── tsconfig.json         # TypeScript配置
- 需要HTTPS证书(开发环境)
- 使用 pnpm 作为包管理器
- 支持热更新开发
- 使用 vite build构建生产版本
- 将构建产物上传到飞书开放平台
- 需要飞书开放平台账号和权限
- 
单元格内容读取 - 选择目标表格和字段
- 读取单元格中的Markdown代码内容
 
- 
Markdown渲染 - 解析Markdown格式
- 渲染代码块
- 支持代码语法高亮
 
- 
界面展示 - 清晰的代码展示界面
- 支持深色/浅色主题切换
- 支持代码复制功能
 
- 
多语言支持 - 中文(简体)
- 英文
 
- 代码编辑功能
- 将编辑后的内容写回单元格
- 支持多种代码高亮主题
- 导出功能
- 创建项目目录
- 拉取参考项目
- 分析技术栈和项目结构
- 初始化项目配置(package.json, vite.config.ts等)
- 配置TypeScript
- 搭建基础项目结构
- 配置开发环境(HTTPS证书)
- 实现表格/字段选择组件
- 实现单元格内容读取功能
- 集成Markdown解析库
- 集成代码高亮库
- 实现内容渲染组件
- 实现主题切换适配
- 添加国际化支持
- 优化界面布局和交互
- 添加代码复制功能
- 功能测试(代码检查通过)
- 性能优化(构建配置已优化)
- 兼容性测试(TypeScript严格模式)
- 配置生产环境构建
- 构建项目
- 准备发布材料(文档完备)
- 上传到飞书开放平台(等待用户操作)
- 官方开发文档: https://bytedance.feishu.cn/docx/VxhudDXbyo1V7jxAcTbctJQ5nvc
- 多维表格扩展脚本开发指南: https://bytedance.feishu.cn/docx/HazFdSHH9ofRGKx8424cwzLlnZc
- 参考项目: https://github.com/Ocyss/FeishuPlugin
- Lark Base Open SDK: https://www.npmjs.com/package/@lark-base-open/js-sdk
- 插件名称: Markdown Code Viewer / Markdown代码查看器
- 插件描述: 从多维表格单元格读取并显示Markdown格式的代码内容
- App ID: 请在 .env中配置VITE_FEISHU_APP_ID
- Markdown渲染: markdown-it
- 代码高亮: highlight.js
- 开发端口: 5173
- HTTPS证书: 已生成自签名证书(localhost.pem / localhost-key.pem)
项目使用 .env 文件管理敏感配置信息:
# 查看配置模板
cat .env.example
# 实际配置已写入 .env 文件(不会提交到git)重要提示:
- .env文件已添加到- .gitignore,不会泄露到版本控制
- 正式发布前需要在飞书开放平台创建正式应用,并更新 App ID 和 App Secret
- 当前版本:v1.0
- 主要功能:单元格 Markdown 渲染与代码高亮、深浅色主题、复制原文、精简/全功能预览切换、按宿主选择记录/字段
- 生产构建:已通过(pnpm build)
cd feishu-bitable-markdown-plugin
pnpm installpnpm dev开发服务器将在 https://localhost:5173 启动
- 打开飞书多维表格
- 进入插件管理
https://<your-HTTPS-domain>/feishu-bitable-markdown-plugin/?v=<timestamp>
- 保存后在多维表格中打开插件进行验证
pnpm build构建产物将输出到 dist/ 目录
- 确认 dist/产物完整且已本地验证
- 登录飞书开放平台,在插件管理页面上传 dist/内容
- 在生产环境更新 .env中的VITE_FEISHU_APP_ID和VITE_FEISHU_APP_SECRET
- 严格路径规范:线上访问路径固定为 /feishu-bitable-markdown-plugin/
- 线上访问示例:https://caosinian.top/feishu-bitable-markdown-plugin/?v=20251023-09
- 文件系统部署目录(默认):/var/www/feishu-bitable-markdown-plugin
- 部署步骤(密码方式):
pnpm build 
export SERVER_HOST="" export SERVER_USER="root" export SERVER_NAME="" export SSHPASS="{{SERVER_PASSWORD}}" # 请以环境变量方式注入密码 ./scripts/deploy.sh
- 部署步骤(SSH 免密):直接 rsync 到默认目录,然后按下方 Nginx 配置即可
```bash
pnpm build
rsync -avz dist/ root@<your-server-host>:/var/www/feishu-bitable-markdown-plugin/
- Nginx 示例(子路径部署):
server { listen 80; 
server_name ; location /feishu-bitable-markdown-plugin/ { alias /var/www/feishu-bitable-markdown-plugin/; index index.html; try_files $uri $uri/ /feishu-bitable-markdown-plugin/index.html; } location /feishu-bitable-markdown-plugin/assets/ { alias /var/www/feishu-bitable-markdown-plugin/assets/; expires 1y; add_header Cache-Control "public, immutable"; } }
- 若遇到域名/证书问题,可先用 IP 测试(HTTP),再切回 HTTPS 域名。
## 技术选型说明
### 为什么选择 markdown-it?
- 功能强大,插件生态丰富
- 支持扩展语法
- 性能优秀,适合大文档渲染
### 为什么选择 highlight.js?
- 支持 190+ 编程语言
- 自动语言检测
- 主题丰富,易于定制
## 测试结果
### 代码质量检查
```bash
pnpm lint
# ✅ 通过:只有1个预期的v-html警告
pnpm build
# ✅ 成功:生成了生产环境构建产物
# - index.html (0.45 kB)
# - CSS (3.33 kB, gzipped: 1.20 kB)
# - JS bundles (2.4 MB, gzipped: 775 kB)✅ 严格模式开启,所有类型定义完备
- ✅ 表格/字段/记录选择
- ✅ Markdown渲染和代码高亮
- ✅ 深色/浅色主题自动切换
- ✅ 中英文国际化
- ✅ 代码复制功能
- ✅ 原始内容/预览切换
- ✅ HTTPS证书已自动生成(开发用自签名证书)
- ✅ 敏感信息已安全存储在 .env文件中
- 🔒 正式发布前需要更新为生产环境的 App ID 和 App Secret
- 📝 插件名称和描述可在发布前修改
- 🔐 确保使用的SDK版本与飞书平台兼容
- 📋 遵循飞书插件开发规范
- 🛡️ 注意权限申请和数据安全