Сучасний стан бібліотек на платформі Javascript? [зачинено]


90

Я досліджував бібліотеки полотна HTML, і я зіткнувся з цим питанням. Який сучасний стан техніки в бібліотеках і фреймворках HTML-полотна HTML? що було запитано у 2010 р. Найкраща відповідь - Fabric.js Провівши ще кілька досліджень, я натрапив на http://www.html5canvastutorials.com/, де представлені навчальні посібники з KineticJs, які можуть похвалитися кількістю полотен для швидкості. Пізніше трохи більше досліджень виявило, що бібліотеки Canvas здаються повсюдно, коли справа стосується швидкості та можливостей. Який на сьогоднішній день бібліотеки та фреймворки JavaScript Canvas? Хтось вийшов на перше місце?

РЕДАГУВАТИ: Оскільки бібліотеки постійно змінюються, і останнім часом багато людей приїжджають сюди за новинами та інформацією про нові бібліотеки, я змінив питання на більш позачасове.


2
абсолютно. Я вважаю, що варіанти виглядають так: 2d-context -> KineticJS, fabric.js, paper.js, або станковий.js. 3d-context (webgl) -> Three.js
Ерік Роуелл,

1
Ви можете переглянути посилання kangax на порівняння бібліотек полотна. Репост тут docs.google.com/spreadsheet/…
ericbowden

4
Я здивований, що це питання ще не закрите, оскільки майже все тут загалом закривається. Я хочу відповісти, але мені надто страшно (читати "переляканий"), оскільки це може бути розглянуто не в темі. Можливо, якщо ви переформулюєте запитання як "що таке подібність / компроміси", я можу додати свої два центи (прочитати "відповідь")
puk

4
Я почуваюся так само, як @puk. Крім того, я думаю, що семантичний розрив між тим, що по суті є просто "відкритим", і тим, що позначено як "неконструктивним", забавний. Це приблизно перекладається на те, що твердження, що питання, на яке неможлива одна незведена відповідь, не варте розгляду в найпопулярнішому та найповнішому у світі сховищі програмування. Я розумію, що вони не підходять для хорошого "Q + A", але чому б просто не позначити їх як "дуже суб'єктивні", обмежити очки представників і тримати їх відкритими ... щось.
Марк Фокс

1
Просто зважуючи SO, мене теж дуже дратує постійне закриття корисних питань лише тому, що вони суб’єктивні. І що!? Це криваві корисні речі.
Iain Duncan

Відповіді:


80

Застереження: Я автор Fabric.js .

Я б сказав, що Easel.js, Fabric.js та Paper.js є одними з найбільш використовуваних на даний момент. Я суджу за кількістю спостерігачів Github для кожного сховища, обсягом обговорень у їхніх групах Google і тим, як часто я чую про них, що використовуються як бібліотеки полотна в Twitter.

Це також ті, що мають більш-менш пристойну документацію, приклади / демонстраційні програми, дискусійні групи та модульні тести (стан тестування в більшості інших бібліотек полотна досить сумний).

Я також веду цю порівняльну таблицю різних бібліотек canvas , де ви можете побачити, як нещодавно була оновлена ​​бібліотека, її розмір, підтримка IE <9 або node.js тощо.


Ваше порівняння дає багато інформації, але її загальнодоступну редакцію слід обмежити, оскільки деякі інші користувачі неправильно редагують її. Мені потрібна допомога, це kineticjs не підтримуватиме nodjs? і чи можете ви навести один приклад, як програма для фарбування вікон (малювання кола об’єкта в прямому ефірі вашою тканиною)
Тірумалай Муруган

це не можна публічно редагувати
kangax

1
Так пощастило, що я знайшов цю публікацію! Раніше працював з Kinetic, але це ще не дозріло. Потім спробував мольберт, але він занадто важкий. Нарешті перейшов до Fabric, і це здорово!
MeLight

@kangax Вибачте за невдале розуміння, чи можете ви дати мені один приклад, як програма для розфарбовування вікон (малювання кола об'єкта в прямому ефірі вашою тканиною)
Тірумалай Муруган

@Thirumalaimurugan ось і ви: jsfiddle.net/fabricjs/nXmTC/1
kangax

66

EDIT: KineticJS більше не підтримується активно.

Застереження: я створив KineticJS

KineticJS насправді справляється досить добре. Ви можете знайти вихідний код на Github , де на даний момент його зіркою займається 2180 людей.

Він може обробляти тисячі одночасних форм:

10000 стресових тестів на перетягування та падіння: http://www.html5canvastutorials.com/labs/html5-canvas-kineticjs-drag-and-drop-stress-test-with-1000-shapes/

10000 фігур із підказками: http://www.html5canvastutorials.com/labs/html5-canvas-10000-shape-stress-test-with-kineticjs/

Він має дуже хорошу підтримку подій, включаючи мобільні події, і має досить солідний набір 100-ти модульних тестів, тому кодова база відчуває себе досить солідно.

kangax: PS чудова робота з fabric.js! Крім KineticJS (звичайно), моїми двома улюбленими бібліотеками є тканина та папір.


7
Просто подивившись на демонстраційні виступи, продуктивність дійсно виглядає надзвичайно чудово! Також раді почути, що у вас є модульні тести. Я бачу, ви дозволяєте створювати кілька шарів. Це мило. У тканині ми оптимізуємо однаково, але маємо лише 2 шари - один для вибору, другий для малювання - і внутрішній (користувачі не можуть створити більше). Якось мені не вистачало Kinetic при створенні діаграми порівняння бібліотек. Ми повинні це виправити :)
kangax,

6
оновлення: KineticJS тепер у github: github.com/ericdrowell/KineticJS
Ерік Роуелл

7
Як KineticJS порівнюється з EaselJS? Коли слід користуватися чим?
geeky_monster

1
хотів би зазначити, що KineticJS підтримує SVG-вектори також через форму Kinetic.Path
Ерік Роуелл

2
@EricRowell Mate Мені подобається KineticJS, його швидкість, шлюб з GSAP, але від чого мені крутиться в голові, чи є спосіб вільно трансформувати об’єкти KineticJS, як у FabricJS? Ось посилання на те, що я намагаюся сказати: fabricjs.com/customization Я не хочу використовувати FabricJs як справді повільний і низьку продуктивність, що видно з різних модульних тестів. Я дійсно з нетерпінням чекаю пошуку способу, щоб мати можливість вільно трансформувати об'єкт у KineticJS, оскільки це значно полегшило б життя. Спасибі, Praney
praneybehl

62

Для останніх читачів, станом на січень 2013 року, я оцінив:

  • Кінетична
  • Тканина
  • Папір
  • Мольберт

"Оцінюючи", я не просто читав документи; Я створив прототип програми.

Я розпочав з Fabric, оскільки в ній, здається, найбільша спільнота, і думав, що це буде моє рішення. Але я відмовився від Fabric з наступних причин:

  • дивні та недокументовані невідповідності API, які злили багато мого часу без потреби.
  • суперечлива підтримка події вказівника. Зокрема, Fabric не вважає "Шлях" справжнім об'єктом фігури, який можна обирати та спостерігати. Це не відповідало моїм потребам, оскільки інтерактивні шляхи є основною вимогою мого додатка.
  • закулісні доповнення перекладів на Полотно для розміщення об'єктів. Для мене Fabric намагається бути надто розумним у цьому плані, не розуміючи розробника, що він робить.
  • занадто сильна думка про те, як працює переміщення, зміна розміру та обертання інтерактивності. Багато в чому чудово вбудувати цю функціональність у фреймворк, але, у моєму випадку, я не погодився із способом її реалізації, що означало, по суті, все одно її переобладнати.
  • розріджена документація - партії тих випадків, коли документація методу має вигляд: "setX (Y) - встановіть X на Y" :-)

Я подивився на Папір і не зайшов занадто далеко. Мені це здалося надмірно тупим, а також потрапляє між занадто стуленими IMO - це занадто багато бібліотеки візуалізації, щоб бути простою об'єктною моделлю для Canvas, але недостатньо бібліотеки візуалізації, щоб конкурувати з D3. Плюс, документація знову не була особливо доступною.

Я думаю, що у мольберту, мабуть, багато сенсу, якщо у вас є передісторія Flash / ActionScript, але у мене немає. Плюс, це здавалося надмірно зосередженим на моїх потребах. Цвях у труні знову був документацією - недостатньо та представлений у нестандартному форматі.

Отже, я в кінцевому підсумку пішов із Kinetic, оскільки:

  • справді багаті та зрозумілі підручники та приклади
  • Функції API виконують те, що їх називають, і, в основному, можна здогадатися - швидша продуктивність, менша крива навчання
  • достатньо чітко розуміє, що він робить, а що ні - він не такий багатий, як деякі інші, але це користь; він робить менше речей, але робить їх краще
  • Шляхи - це першокласні фігури для громадян, як і будь-яка інша фігура, що було важливим для моїх вимог.

Kinetic не є досконалим будь-якими способами, і бувало кілька випадків, коли мені доводилось занурюватися глибоко у вихідний код, щоб з’ясувати, що насправді відбувається під ковдрами. Плюс, мені не вистачає розбору SVG та виведення Fabric.


1
Дякую за цю відповідь, заощадила мені багато часу. Я збираюся піти з Kinetic, і сподіваюся, ви дізнаєтесь, що вже сказали.
Башевіс

Я провів ненауковий користувацький тест наданих демонстрацій перетягування для бібліотек вище на iPad3 та Samsung Galaxy Tab2. KineticJS також став тут явним переможцем, будучи більш чуйним та точнішим у своєму сенсорному позиціонуванні.
Per Quested Aronsson

1
Я оцінюю обидва, і на даний момент щиро фабрикація здається більш повною та добре задокументованою.
albanx

9
Джеремі, я хотів би почути більше про невідповідність API у Fabric. Я намагаюся зробити це якомога інтуїтивнішим, тому, якщо щось все-таки дивне, я точно хотів би про це подбати. Ви можете подати квиток або згадати його тут? Документи вдосконалюються з січня, хоча все ще не настільки якісні, як я хотів би, щоб вони були. Сильна думка про інтерактивність - я гадаю, ви можете це сказати, хоча ви можете зробити досить багато налаштувань. Що саме ти хотів іншого? Нарешті, покажчик подій - не впевнений, що ви маєте на увазі. Шлях, безумовно, справжньої форми: fabricjs.com/quadratic-curve
kangax

23

Я настійно рекомендую pixijs. Це високопродуктивна бібліотека полотна.

Pixi.js - це 2D візуалізатор webGL з безшовним резервним полотном, що дозволяє йому працювати в усіх сучасних браузерах, як на настільних, так і на мобільних пристроях.

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


3
На липень 2014 року це здається найкращою бібліотекою полотна. З 4 тисячами людей зняли його на Github, і його використовують великі компанії та агентства. pixijs.com/projects, як Google.
Vennsoh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.