飞书插件前端开发流程

一、 开发环境准备

为确保飞书插件前端开发的顺利进行,请务必配置以下环境。

|----------------|----------------|
| 项目 | 要求/说明 |
| 开发框架 | React 18 及以上版本 |
| Node.js 版本 | 16 及以上版本 |
| 包管理工具 | npm 或 yarn |

二、 飞书开发工具 CLI 安装与配置

飞书官方提供了命令行工具 @lark-project/cli(简称 **lpm**)来管理插件生命周期。

1. 全局安装

打开命令行工具,执行以下安装命令:

复制代码
npm i -g @lark-project/cli

2. 验证安装

安装完成后,通过以下命令检查版本,确认安装成功:

复制代码
lpm --version

3. 常用命令列表

下表列出了开发中最常用的命令及其功能:

|-------------------|-----------------|
| 命令 | 功能说明 |
| lpm update | 同步并更新项目配置信息 |
| lpm start | 在本地启动开发服务器,用于调试 |
| lpm release | 将代码打包并上传至飞书开放平台 |

三、 标准开发流程

步骤 1:创建插件

在飞书开放平台上创建一个新的应用,获取 Plugin IDPlugin Secret等关键信息,并初始化项目。

步骤 2:添加构成

根据需求在开放平台配置的插件功能里添加构成,例如:

  • 控件

  • 导航

  • 详情页

  • 配置

步骤 3:本地开发与调试

核心操作流程:

  1. 拉取代码 :在 飞书开放平台后台 中,进入对应应用详情,点击 "复制初始化命令"

  2. 开启调试 :在 飞书开放平台后台 中,进入对应应用详情,开启 "本地调试" 模式。

  3. 启动项目 :在本地项目根目录下执行命令 lpm start,启动本地开发服务器。

  4. 配置插件:以控件为例,首先要在空间配置里的页面布局添加插件。

5.实时调试:在飞书客户端(桌面版或移动版)中访问应用,代码改动将实时热更新。

步骤 4:测试插件

在本地调试模式下,对插件的各项功能进行全面测试,确保在飞书客户端内交互正常、数据正确。

步骤 5:发布插件

1.使用 lpm release 命令上传最终代码包,会有一个版本号提示。

2.发布的时候要选择对应的版本。

3.更新你的插件,在对用的空间中,点击更新。

4.注意事项,有时可能配置完页面未更新,需要手动去更新页面。

四、UI库

飞书项目是基于Semi Design 设计系统搭建的。Semi Design 由字节跳动抖音前端与 UED 团队设计、开发并维护的企业级别设计系统,遵循全面、易用、优质的设计原则,帮助设计师与开发者打造高质量产品。

1、安装 Semi

复制代码
# 使用 npm
npm i @douyinfe/semi-ui

# 使用 yarn
yarn add @douyinfe/semi-ui

# 使用 pnpm
pnpm add @douyinfe/semi-ui

2、使用组件

在 Webpack、Rspack、create-react-app 或 Vite 项目中使用时,无需进行任何编译项配置,直接使用即可。构建时所有相关资源均会按需打包

复制代码
import React, { Component } from 'react';
// 如果为 React v19,需要从 @douyinfe/semi-ui-19 中导出组件
import { Button, Toast } from '@douyinfe/semi-ui';

const SemiApp = () => {
    return (
        <Button onClick={() => Toast.warning({ content: 'welcome' })}>Hello Semi</Button>
    );
};

五、接口请求

在插件内可以通过 Axios API 发起网络请求调用您的 API 或者从服务器请求资源。Axios API 的使用方式和 开源库 Axios → 是相似的。

发起请求

复制代码
// src/api/index.ts 
import axios from 'axios'; 
 
export function getContentFromHTTPBin() { 
    return axios.get('https://httpbin.org/get?success=true'); 
} 

如果想对所有请求的 Request 和 Response 做拦截处理,您可以给 axios 增加拦截器

复制代码
import axios from 'axios'; 
 
// Add a request interceptor 
axios.interceptors.request.use( 
  function (config) { 
    // Do something before request is sent 
    return config; 
  }, 
  function (error) { 
    // Do something with request error 
    return Promise.reject(error); 
  } 
); 
 
// Add a response interceptor 
axios.interceptors.response.use( 
  function (response) { 
    // Any status code that lie within the range of 2xx cause this function to trigger 
    // Do something with response data 
    return response; 
  }, 
  function (error) { 
    // Any status codes that falls outside the range of 2xx cause this function to trigger 
    // Do something with response error 
    return Promise.reject(error); 
  } 
 ); 

跨域调用

插件运行在浏览器环境里,所以浏览器的 Cross-Origin Resource Sharing → 策略是适用的。发起网络请求的 origin 可能是 project.feishu.com 也可能是在 origin 为 null 的 iframe 里发起(这与插件沙盒机制有关),因此我们建议您将相关 API 响应头配置成 Access-Control-Allow-Origin: *,允许来自任何源的请求。

请求 HTTP API

由于飞书项目是 HTTPs 站点,因此您无法在飞书项目里发起 HTTP 请求,这会被浏览器的 MixedContent → 策略所限制。因此您需要将您请求的 API 都升级为 HTTPs。

Axios 使用限制

  1. 无法使用 axios.create 新建实例,平台对其做了限制

  2. 使用 axios 调用接口时,接口 URL 必须为绝对路径(含域名),否则将调用失败

  3. 如调用任何 *.feishu.cn 子域名下的接口都将被限制,会调用失败

请求飞书项目 OpenAPI

您无法在插件前端直接调用飞书项目的 OpenAPI,因为这是不安全的。您需要通过插件服务器来调用 OpenAPI。

六、 相关文档地址

  1. 飞书开发文档:https://project.feishu.cn/b/helpcenter/1p8d7djs/nh4exbsn

  2. React中文文档:https://react-js.cn/learn

  3. Semi-Ui文档:https://semi.design/zh-CN/start/getting-started


相关推荐
jinanwuhuaguo13 小时前
OpenClaw、飞书、Claude Code、Codex:四维AI生态体系的深度解构与颗粒化对比分析
大数据·人工智能·学习·飞书·openclaw
小赖同学啊21 小时前
飞书集成openclaw
服务器·飞书
IT WorryFree21 小时前
通过Zabbix监控14条不同线路的出口IP,并与预设值对比,不一致时通过飞书告警
tcp/ip·飞书·zabbix
慵懒的猫mi1 天前
deepin UOS AI 助手接入飞书(Feishu)配置指南
linux·人工智能·ai·gpt-3·飞书·文心一言·deepin
White-Legend1 天前
我用GTP5.4写了一个飞书编辑器
人工智能·gpt·编辑器·飞书·ai编程
supersolon1 天前
OpenClaw接入飞书(channel)
ai·llm·飞书·openclaw·龙虾
KindSuper_liu1 天前
OpenClaw接入飞书配置问题
人工智能·飞书
NeilNiu2 天前
Windows系统本地安装OpenClaw+飞书机器人
windows·机器人·飞书
catchadmin2 天前
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
人工智能·elasticsearch·飞书
码农垦荒笔记2 天前
OpenClaw实战 #07:从 0 写一个自定义 Skill——让 AI 自动同步 Notion 待办到飞书(完整代码)
人工智能·飞书·notion