ChatGPT解决这个技术问题 Extra ChatGPT

Javascript Canvas 库的现状? [关闭]

关闭。这个问题需要更加集中。它目前不接受答案。想改进这个问题?更新问题,使其仅通过编辑此帖子专注于一个问题。 9年前关闭。改进这个问题

我一直在研究 HTML 画布库,我遇到了这个问题。 What is the current state of the art in HTML canvas JavaScript libraries and frameworks? 这是 2010 年提出的问题。最佳答案是 Fabric.js。在进行了更多研究后,我发现了 http://www.html5canvastutorials.com/,其中包含有关 KineticJs 的教程,它拥有多个画布以提高速度。后来的更多研究表明,在速度和功能方面,Canvas 库似乎无处不在。当今 JavaScript Canvas 库和框架的现状如何?有没有上榜的?

编辑:由于图书馆在不断变化,而且最近有很多人来这里获取有关新图书馆的新闻和信息,我将问题更改为更加永恒。

绝对地。我相信选项看起来像这样:2d-context -> KineticJS、fabric.js、paper.js 或easel.js。 3d 上下文 (webgl) -> Three.js
您可以查看 kangax 与画布库比较的链接。在此转帖docs.google.com/spreadsheet/…
我很惊讶这个问题还没有结束,因为这里几乎所有的东西都已经结束了。我想回答,但我太害怕了(读作“害怕”),因为它可能被认为是题外话。也许如果你把这个问题改写为“什么是相似之处/权衡取舍”,我可以加两分钱(读作“答案”)
我的感觉和@puk 一样。此外,我认为本质上只是“开放式”和被标记为“非建设性”之间的语义分歧很有趣。它粗略地转化为说,在世界上最流行和最全面的编程知识库中,不可能给出单一不可约的答案的问题不值得考虑。我知道它们不适合一个好的“Q+A”,但为什么不把它们标记为“高度主观”,限制代表点并保持开放……什么的。
只是权衡一下,我也对不断关闭有用的问题感到非常恼火,因为它们是主观的。所以呢!?这是非常有用的东西。

k
kangax

免责声明:我是 Fabric.js 的作者。

我想说 Easel.js、Fabric.js 和 Paper.js 是目前最常用的。我根据每个存储库的 Github 观察者数量、他们的 Google 群组中的讨论量以及我在 Twitter 上听到它们用作画布库的频率来判断。

这些也具有或多或少的文档、示例/演示、讨论组和单元测试(大多数其他画布库中的测试状态非常可悲)。

我还在维护此 comparison table of various canvas libraries,您可以在其中查看库的更新时间、大小、对 IE<9 或 node.js 的支持等等。


您的比较提供了很多信息,但它的公开可编辑应该受到限制,因为其他一些用户会错误地编辑这些信息。我需要帮助是 kineticjs 不支持 nodjs 吗?你能举一个像windows paint程序这样的例子吗(用你的织物画出物体圈)
它不可公开编辑
很幸运我找到了这篇文章!曾经与 Kinetic 合作,但它还不够成熟。然后尝试了Easel,但它太重了。终于搬到了Fabric,太棒了!
@kangax 对不起,错过了理解,你能给我举一个像windows paint程序这样的例子吗(用你的织物画出物体圆圈)
@Thirumalaimurugan 给你:jsfiddle.net/fabricjs/nXmTC/1
w
whitneyland

编辑: KineticJS 不再被积极维护。

免责声明:我创建了 KineticJS

KineticJS 实际上做得很好。您可以在 Github 找到源代码,目前有 2180 人在该处加注星标。

它可以处理数千个并发形状:

10,000 次拖放压力测试:http://www.html5canvastutorials.com/labs/html5-canvas-kineticjs-drag-and-drop-stress-test-with-1000-shapes/

10,000 个带有工具提示的形状:http://www.html5canvastutorials.com/labs/html5-canvas-10000-shape-stress-test-with-kineticjs/

它有非常好的事件支持,包括移动事件,并且它有一套相当稳固的 100 套单元测试,所以代码库感觉相当稳固。

kangax:PS 与fabric.js 的工作很棒!除了 KineticJS(当然),我最喜欢的另外两个库是 fabric 和 paper。


刚看了演示,性能看起来确实很棒!也很高兴听到您进行了单元测试。我看到您允许创建多个图层。那很好。在织物中,我们以相同的方式进行优化,但只有两层——一层用于选择,一层用于绘制——以及内部(用户无法创建更多)。在创建库比较图表时,不知何故我错过了 Kinetic。我们应该解决这个问题:)
更新:KineticJS 现在在 github:github.com/ericdrowell/KineticJS
KineticJS 与 EaselJS 相比如何?什么时候应该使用什么?
想指出 KineticJS 也通过 Kinetic.Path() 形状支持 SVG 矢量html5canvastutorials.com/kineticjs/…
@EricRowell Mate 我喜欢 KineticJS,它的速度,与 GSAP 的结合,但是让我头晕目眩的是有没有一种方法可以像 FabricJS 中的方式那样自由转换 KineticJS 对象?这是我想说的链接参考:fabricjs.com/customization 我不想使用 FabricJs,因为它真的很慢,而且从各种单元测试中可以看出它的低性能。我真的很期待找到一种能够在 KineticJS 中自由转换对象的方法,因为它会让生活变得更加轻松。谢谢, 普拉尼
J
Jeremy Burton

对于最近的读者,截至 2013 年 1 月,我评估了:

动力学

织物

画架

通过“评估”,我所做的不仅仅是阅读文档;我创建了一个原型应用程序。

我从 Fabric 开始,因为它似乎拥有最大的社区,并认为这将是我的解决方案。但是,我放弃了 Fabric,原因如下:

奇怪且未记录的 API 不一致,不必要地浪费了我很多时间。

不一致的指针事件支持。具体来说,Fabric 并不认为“路径”是一个可选择和可观察的真实形状对象。这不符合我的需求,因为交互式路径是我的应用程序的主要要求。

在幕后添加到 Canvas 的翻译以定位对象。对我来说,Fabric 试图在这方面过于聪明,但开发人员并不清楚它在做什么。

对移动、调整大小和旋转交互如何工作的意见过于强烈。在许多方面,将这个功能内置到框架中是很棒的,但就我而言,我不同意它的实现方式,这意味着无论如何都必须自己重新实现它。

稀疏文档 - 很多情况下,方法的文档采用以下形式:“setX(Y) - set's the X to Y” :-)

我看了看Paper,并没有走得太远。它对我来说似乎过于迟钝,而且也介于 IMO 之间——它是一个太多的可视化库,不能成为 Canvas 的简单对象模型,但它还不足以与 D3 竞争。另外,文档也不是特别容易访问。

如果您有 Flash/ActionScript 背景,我认为 Easel 可能很有意义,但我没有。另外,对于我的要求,它似乎过于专注于游戏。棺材里的钉子又是文件——不够,而且以非标准格式呈现。

所以,我最终选择了 Kinetic,因为:

非常丰富清晰的教程和示例

API 函数做他们所谓的事情,并且在很大程度上是可以猜测的——更快的生产力,更浅的学习曲线

相当清楚它做什么和不做什么 - 它不像其他一些那样富有,但这是一个好处;它做的事情更少但做得更好

路径是一等公民形状,就像任何其他形状一样,这对我的要求至关重要。

Kinetic 无论如何都不是完美的,有几次我不得不深入研究源代码以找出幕后实际发生的事情。另外,我想念 Fabric 的 SVG 解析和输出。


感谢您的回答,为我节省了很多时间。我要和 Kinetic 一起去,希望你能发现你已经说过的话。
我在 iPad3 和三星 Galaxy Tab2 上对上述库提供的拖放演示进行了非科学用户测试。 KineticJS 在这里也是一个明显的赢家,它的触摸定位响应更快,更准确。
我正在评估两者,目前真诚地,fabricjs 似乎更完整且有据可查。
Jeremy,我很想了解有关 Fabric 中 API 不一致 的更多信息。我尽量让它尽可能直观,所以如果有些东西仍然很奇怪,我肯定会想要处理它。您可以在此处提交票证或提及吗? 文档自 1 月份以来一直在改进,尽管仍然没有我希望的那么好。 对交互性的强烈意见 — 我想你可以这么说,尽管你可以做很多调整。你到底想要什么不同?最后,指针事件——不确定你的意思。路径肯定是一个真实的形状:fabricjs.com/quadratic-curve
b
bendangelo

我强烈推荐pixijs。它是一个高性能的画布库。

Pixi.js 是一个 2D webGL 渲染器,具有无缝画布后备,使其能够在所有现代浏览器(包括桌面和移动设备)上工作。

http://www.goodboydigital.com/pixi-js-is-out/


截至 2014 年 7 月,这似乎是目前最好的画布库。有 4k 人在 Github 上为它加注星标,并被大公司和机构使用。 pixijs.com/projects 喜欢 Google。