Sails.js проти Meteor - Які переваги обох? [зачинено]


81

Я багато читав про Nodejs та його фреймворки, і нещодавно закінчив свій перший повний інтерфейс JavaScript (використовуючи Angularjs).

Я вирішив, що моїм наступним проектом для домашніх тварин стане пригода Nodejs, використовуючи одну з цих двох основ:

Я читав про обидва, але все ще не можу повністю зрозуміти їх відмінності, і чому я повинен вибрати використовувати одне над іншим. Тож надіньте, будь ласка, шапку свого найкращого продавця, оберіть каркас і продайте мені.

Деякі функції, які мені потрібні для проекту для домашніх тварин:

  • Результати
  • Подібні до Reddit потоки, в режимі реального часу
  • Видання на зразок Вікіпедії
  • Користувачі / Ролі

1
Перевірте це посилання: vschart.com/compare/meteor-web-framework/vs/sails-js . Це може вам допомогти !!
tuchi35

Відповіді:


138

Я не можу говорити за Метеора, але я можу допомогти надати невелику довідку про Вітрила, тому що я його створив.

tldr; «Вітрила» не є панацеєю від усіх проблем Інтернету - але я вважаю, що Node.js це. Мета Sails - забезпечити практичну основу для розробки повноцінних, масштабованих, стартапів та зручних для бізнесу додатків, побудованих на node.js. Я розпочав Balderdash з питання "Чи можемо ми використовувати Node.js для всього?". Вітрила - це відповідь.


З наших нових документів :

Вітрила - це, звичайно, веб-структура. Але зробіть крок назад. Що це означає? Іноді, маючи на увазі "павутину", ми маємо на увазі "інтерфейсну павутину". Ми думаємо про такі поняття, як веб-стандарти, або HTML 5, або CSS 3; та фреймворки, такі як Backbone, або Angular, або jQuery. Вітрила - це не "такий" веб-фреймворк. Sails чудово працює з Angular та Backbone, але ви ніколи не використовували б Sails замість цих бібліотек.

З іншого боку, іноді, коли ми говоримо про "веб-фреймворки", ми маємо на увазі "фонову мережу". Це викликає такі поняття, як REST, або HTTP, або WebSockets; і побудований на таких технологіях, як Java, або Ruby, або Node.js. Структура "внутрішньої мережі" допомагає робити такі речі, як побудова API, взаємодія з базами даних, обслуговування HTML-файлів та обробка сотень тисяч одночасних користувачів. «Вітрила» - це «такий» веб-фреймворк.

Пару років тому я взяв на себе зобов'язання використовувати Node.js для всього - це була любов з першого погляду . Я побудував Sails поверх Express і Socket.io, оскільки вони були (і залишаються) найбільш усталеними модулями Node для відповідних випадків використання. Код обробки запитів у Sails сумісний із Express, з додатковою перевагою неявної підтримки Socket.io.

Sails розроблений таким чином, щоб бути сумісним із будь-якою стратегією для створення ваших фронтендів у Angular, Backbone, iOS / ObjC, Android / Java або навіть просто пропонувати необроблений API для використання іншою веб-службою або вашим спільнота розробників. Якщо ви врешті-решт зміните свій підхід (наприклад, перейдете з Backbone на Angular) або повністю створите новий інтерфейс (наприклад, створите рідну програму для Windows Phone), ваша програма Sails все одно буде працювати. Як ви вже знали, деякі люди називають цей підхід архітектурою, орієнтованою на послуги, або SOA ( Джо Макканн має чудову тему на цю тему.)

Подібно до цього, Sails підтримує інші звичні правила побудови веб-серверів - стандартну структуру MVC, можливість створювати чисті API та основні модулі, які є відкритими, налаштовуваними, розширюваними та навіть замінюваними. Це означає, що «Вітрила» можна налаштувати відповідно до потреб своїх користувачів, настільки низький рівень, наскільки це необхідно.

У 2013 році фреймворк відчув колосальне зростання популярності, і наш консалтинговий бізнес виріс. Ми з рештою основних службовців розширили нашу увагу на тому, щоб зробити бекенд розробку якомога швидшою та зрозумілішою. Пов’язані з цим аспекти Вітрил, такі як хуки (плагіни), тестування та документи, пройшли довгий шлях за останній рік завдяки зусиллям як нашої основної команди, так і (постійно розширюваної) спільноти Вітрил загалом. Є багато елементів дорожньої карти, над якими ми все ще працюємо, але я вважаю, що Sails - найкращий варіант для стабільної, ремонтопридатної розробки MVC на Node сьогодні. Ми з рештою команди прагнемо продовжувати її обслуговування та розробку функцій, і оскільки ми використовуємо його для всіх наших клієнтських проектів, це нікуди не дінеться.

Я наполегливо прагну зробити Sails найкращим веб-фреймворком, але ніколи за рахунок Node.js. Ми з основною командою невпинно віддані вдосконаленню екосистеми Node, а це означає охоплення NPM, використання існуючих технологій Node та найкращих практик тощо. Не лише тому, що це має більше сенсу, але тому, що ми розробники Node.js. Мотивацією всіх наших зусиль є зробити Node більш доступним, а не витіснити його. Отже, якби в якомусь дивному паралельному всесвіті мені дали фаустівський вибір між перетворенням «Вітрил» на якусь іншу мову чи повністю відмовитись від «Вітрил», але все ще маючи можливість використовувати Node, я вибрав би останню.


Додаткові ресурси:

FAQ | Вітрила 101 | Оригінальна трансляція | Керівництво по внеску | Переповнення стека

Група Google | Дорожня карта | IRC: #sailsjs на Freenode | Статус збірки


2
Тут я натрапив на інший хороший погляд на це питання (перша відповідь): linkedin.com/groups/…
mikermcneil


@AaronShafovaloff дякую за голови - ось оновлене посилання: sailsjs.org/get-started
mikermcneil

30

Я побудував пару проектів з Meteor і ще не працював з Sails. Тож моя думка буде, безумовно, упередженою, сподіваюсь, у будь-якому разі корисною.

Побудова інтерфейсу

Meteor пропонує свій власний фронт-енд фреймворк під назвою Blaze-, який буде включений до майбутнього випуску 0.8. Meteor дбає про прив’язку даних з ваших колекцій до ваших поглядів. Через це вам не потрібно турбуватися про те, щоб повідомити ваші погляди про оновлення, вони просто це роблять.

З іншого боку, Sails пропонує лише серверну структуру, і вам доведеться взяти свій власний інтерфейс.

На відміну від більшості фреймворків Node.js, Meteor є синхронним

Meteor працює в циклі, і якщо ви хочете використовувати пакети Node.js, вам доведеться зробити додаткову роботу, щоб переконатися, що вони працюють належним чином у Meteor.

Вітрила, здається, є простим фреймворком MVC Node.js, тому не повинно бути нічого занадто дивного, коли ви заглядаєте в нього.

Вам слід використовувати MongoDB з Meteor

Так, ви можете використовувати інші бази даних із Meteor, але вони не мають жодної такої підтримки, як MongoDB. Тоді як у «Вітрил», схоже, вони мають ORM для декількох баз даних.

Продуктивність

Для великомасштабних програм Метеор може не працювати добре . Для вирішення цієї проблеми проводиться велика робота, і до кінця 2014 року ми можемо розраховувати, що для Meteor з’являться масштабні рішення.

Стабільність

Метеор ще дуже свіжий і ще не досяг 1,0. Ви повинні очікувати, що протягом наступних кількох випусків будуть внесені деякі зміни, які порушать зворотну сумісність. Якщо ви починаєте з нею якомога швидше, можливо, ви захочете використати гілку 0.8-rc0. Тим не менш, деякі функції в конвеєрі дійсно чудові і зроблять версію 1.0 дуже привабливою.

Заключні думки?

Мені подобається Метеор через його своєрідні особливості. Вам доведеться вивчити метеорний спосіб робити щось, але як тільки ви починаєте це робити, ви відчуваєте, що випили кухонну допомогу. Через те, як дані прив’язані до переглядів, рядки між сервером і клієнтом не віддалені. Meteor представляє зміну парадигми в архітектурі додатків, і якщо ви ще не пробували, я б рекомендував його.

PS Ознайомтесь із дорожньою картою, щоб відчути, що саме відбувається.


5
Я б запропонував змінити твердження "метеор синхронний", оскільки це може створити неправильне враження для тих, хто не знайомий з волокнами nodejs. Meteor працює на Node.js, тому ви все одно отримуєте його неблокувальні переваги, керовані подіями. Meteor прозоро інтегрує волокна вузлів, тому серверний код можна писати у лінійній моделі виконання, а не розділяти речі на традиційні зворотні виклики. Це, мабуть, найкраще посилання щодо використання npmпакетів з метеором
alanning

Дякую, Alanning, я включу ваш відгук у цю відповідь!
MSaforrian

8
Можливо, одна важлива річ полягає в тому, що sails.js призначений лише для бекенда, тоді як метеор пропонує цілий фронтальний фреймворк javascript для зручної роботи з бекендом.
Michael

Дякуємо, що підняли це, @Michael. Sails.js і Meteor насправді не конкурують - Sails.js - це серверний фреймворк для Node.js, який ви можете використовувати замість чогось типу Django, Rails, Express тощо, тоді як Meteor - це новий спосіб думати про те, як будувати реактивні програми зверху вниз - що, на мою думку, справді круто до речі :)
mikermcneil

Чи не хочете ви оновити свій коментар, оскільки минуло понад 4 роки з моменту огляду? Я, безумовно, хотів би скласти думку щодо нової гри, що змінює метеор 1.7.
Шайам,

19

Я можу дати лише думку щодо вітрил. Я надзвичайно досвідчений розробник Javascript і будую вбудовані додаткові приставки, побудовані на Javascript з 90-х.

Речі, які працювали дуже добре - Початок роботи був чудовим, і я почувався дуже підтриманим опублікованими матеріалами - Крива навчання була дуже короткою, і за вітрилами є здорове співтовариство - Після початкового навчання дуже легко швидко творчо

Що можна покращити - Складні структури даних реалізувати досить складно - інтеграція Passport.js була болючою, оскільки відсутні чисті довідкові матеріали

Рекомендації - Кодер Ponzi має чудовий підручник, і це справді допомогло мені почати роботу https://www.youtube.com/user/ponzicoder - Знання більше про експрес та ватерлінію допоможе, коли ви будете намагатися зробити складніші завдання даних

Загалом я б порекомендував вітрила.


1
Привіт, Симоне, не могли б ви поділитися, як вам вдалося інтегрувати паспорт з вітрилами? Я застряг у тій же проблемі. Ви десь писали щоденник чи маєте довідковий матеріал?
Mitremayer Reis

2
Привіт, Мітремайер, вибачте, але мій блог давно помер від нехтування. Те, що змусило паспорт працювати для мене, було усвідомлення того, що якщо я зробив дві речі, це, здавалося б, працювало нормально. 1 імена полів за замовчуванням скрізь (електронна пошта та пароль) 2 передайте об'єкт req зворотному виклику passport.use('local-login', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not) },
simondelliott

1
Ого, дякую. У мене вже кілька днів виникають проблеми з місцевою стратегією. Це заслуговує власного переповнення стека
light24bulbs

1
Інтеграція Passport.js вимагає справді більше документаційного матеріалу, не могла наголосити на цьому. Зокрема, для випадку використання REST API, коли не відбувається рендеринг сервера (наприклад, для кутових клієнтів JS), що поєднує вхід у facebook / google та локальну автентифікацію.
Алон Амір,

1
Проголосувати за Passport.js важко інтегрувати та погано документувати
pim

9

В даний час я використовую Meteor і не використовував Sails.js.

З Метеором було надзвичайно приємно працювати, і я думаю, що це буде чудовим вибором для веб-додатків у реальному часі. Що стосується користувачів / ролей, ви можете перевірити інтегрований пакет Облікових записів, а також шукати в Atmosphere пакунки ролей / дозволів, внесених громадою.

Зрештою, я б порадив спробувати невеликий проект з обома технологіями та побачити, які вам більше подобаються.


Чи знаєте ви, чи має Sail.js якісь зміни компенсації затримки на стороні клієнта, подібні до компенсації затримки Meteor на рівні моделі?
імславко 07.03.14

Не знаю про Sail.js, але ви, можливо, можете включити його самостійно, використовуючи бібліотеку sharejs.org . Принаймні, це, здається, мета цілі.
alanning

1
@alanning - ні, sharejs не робить компенсації затримки. Sharejs робить оперативні перетворення. Компенсація затримки - це коли Meteor робить оновлення свого локального мінімонго і припускає, що віддалене оновлення буде успішним, що дозволить користувачеві продовжити.
gomad

1
@gomad, ти маєш рацію, що sharejs не надає компенсацію за затримку. Я не сказав, що так. Швидше, я сказав: "Ви, можливо, можете включити його самостійно, використовуючи sharejs.org". LC побудований на OT.
аланінг

Просто додана примітка. Я думаю, що метеор дуже приємний у використанні. Існує трохи кривої навчання, але крім цього, структура дуже схожа на те, як ви можете описати рейки на ruby. На даний момент мій єдиний захват - це все ще залежить від вузла 0.10.40, якщо ви хочете самостійно провести хостинг. Оскільки метеор має досить велику базу, я вважаю, що гра в наздоганяння з node трохи несправедлива для метеора.
Jimmy MG Lim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.