# 项目起源

最初，我帮朋友实现了一个基于Fabric.js开发的图片生成工具，后面将核心功能抽离并开源到了Github上，获得了一些关注。

Fabric.js的底层能力非常强大，接口也很灵活，**我最初以为只需要简单的API调用就可以实现一个图片编辑器**，事实上我高估了自己的学习能力，也低估了Fabric.js的强大和灵活。

**很多开发者反馈Fabric.js 的文档不太友好**，太过强大和灵活也有一个弊端，那就是细节太多，要实现一个基础功能完整、功能丰富的图编辑器应用并不轻松，**要掌握很多的细节，做很多基础的封装工作**。

我将开发过程发布到了技术社区，结识了很多Fabric.js的开发者。

1. [《使用fabric.js 快速开发一个图片编辑器》](https://juejin.cn/post/7155040639497797645)
2. [《fabric.js开发图片编辑器的细节实现》](https://juejin.cn/post/7199849226745430076)
3. [《fabric.js开发图片编辑器可以实现哪些功能？》](https://juejin.cn/post/7222141882515128375)

## 沉淀

在和众多的开发者交流后，发现大家都在做同一件事情，重复的开发；大家更期望在**不做太多基础工作的情况下，快速构建一个功能完整、易于扩展的图片编辑应用**。

目前的项目还只是一个前端应用项目，希望未来和社区一起沉淀一个介于Web图片编辑器应用与Fabric.js底层库之间的封装层，**面向应用开发者设计，提供更简单的接口，让开发者可以通过开源SDK，快速构建图片编辑器应用**。&#x20;

<figure><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e6e8fec15d9844c1af2f2cdd8ba3084e~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp" alt=""><figcaption></figcaption></figure>

## 邀请

开源是很有魅力一件事情，我在Github上结识了很多志同道合的贡献者，**他们是一个个富有热情且有执行力的有趣灵魂**，是他们在深夜付出自己的时间与热爱为项目贡献代码，让不相识的后来人受益，让项目越来越好。 &#x20;

<figure><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0df6172b6ca143a4a77e16dd87f6541f~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp" alt=""><figcaption></figcaption></figure>

<figure><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ecc79fefc06848a8bdae4b7d531d5356~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp" alt=""><figcaption></figcaption></figure>

我们有太多的工作需要做，**如果你对这件事情感兴趣，真诚的邀请你加入，希望我们一起边走边学，在未来一起成为开源世界里的一部分，期待你的加入。**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nihaojob.gitbook.io/editor/xiang-mu-qi-yuan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
