Вказівки щодо архітектури "веб-додатка на одній сторінці"


12

Я збираюся розпочати побічний проект по створенню веб-додатка "одна сторінка". Додаток має бути в режимі реального часу, надсилаючи оновлення клієнтам у міру зміни.

Чи є якісь хороші ресурси для найкращих практичних підходів до архітектури таких типів додатків. Найкращий ресурс, який я знайшов досі, - це стаття про архітектуру trello тут: http://blog.fogcreek.com/the-trello-tech-stack/

Для мене ця архітектура, хоча і дуже сексуальна, напевно, перероблена для моїх конкретних потреб - хоча у мене є подібні вимоги. Мені цікаво, чи потрібно мені турбуватися з суб / пабом на стороні сервера, чи можу я не просто натискати оновлення з сервера, коли щось відбувається (наприклад, коли клієнт надсилає оновлення на сервер, записує оновлення в db, а потім надіслати оновлення клієнтам).

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

Відповіді:


5

Я б точно поглянув на MVC на стороні клієнта для такого типу Backbone.js. Він дуже легкий, але додасть вашій програмі деякої необхідної структури. Я настійно рекомендую скріншот Peepcode як найшвидший спосіб дізнатися більше про хребет.

Приємною архітектурною перевагою MVC на стороні клієнта, як це, є той факт, що ви можете легше рухатися до обміну даними з боку сервера, наприклад, структурованого JSON за REST.

Backbone.js підтримує це нестандартно - ви можете серіалізувати свої моделі між клієнтом і сервером як JSON, що може звільнити нас від думки щодо запиту / відповіді.

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

Одна з альтернатив .... Така модель, як Comet, може бути простим способом досягнення веб-паб / підрозділу, і є деякі рамки на стороні сервера, які це підтримують.


Ура, я напевно думав використовувати MV * FW для клієнтської сторони, і я дізнався про хребет. Хороші поради.
Метт Робертс

1

Я, ймовірно, пішов би з MV * javascript рамкою для переднього кінця. Я сам будую веб-додаток на одній сторінці, і після дослідження ряду рішень я закінчив роботу з Backbone.js. Я знайшов, поки це рішення не забезпечило максимальну функціональність коробки, воно дало мені основний фундамент для початку і набагато гнучкіше, ніж інші рішення, на які я дивився (що було важливо для мене).

Інші популярні рішення - це Ember.js та Knockout.js, які забезпечують більше функціональних можливостей, але вам потрібно дотримуватися їхніх конвенцій, щоб використовувати функцію thT (яка може працювати або не працювати для вас).


1

Це ІМО, який не займається мозком. AngularJS для переднього кінця, тому що це приголомшливо. NodeJS / express / SocketIO для динамічного та сексуального бекенду з паб / суб добротою та мінімумом суєти. І як бонус, ви можете використовувати одну мову для передньої та задньої!

Перевірте мою реалізацію того ж https://github.com/hackify/hackify-server для прикладу

Одне застереження, деякі люди рекомендують NodeJS альтернативу socketio під назвою sockjs, але я цього не перевірив, тому не можу його рекомендувати


0

Схоже, що ви дивитесь, це Apache 2.2 з PHP або сервер додатків Tomcat з простим сервлетом, який обробляє запити. Це еквівалент столяра молотка та цвяхів. Нічого складного, але це робить роботу. Якщо вам коли-небудь знадобилося розширити функціонал, ви завжди можете це зробити, оскільки Tomcat може підтримувати jsp та jsf, якщо вам це потрібно.

Що стосується передньої частини, мені буде зручно просто використовувати jQuery ( $ .post , $ .load , $ .ajax ), оскільки це досить зручне подвоєння як засіб для додавання функціональності на вашу сторінку в поєднанні з інтерфейсом jQuery


0

Якщо ви хочете оновлювати клієнта в режимі реального часу, вам доведеться або реалізувати тривалі блокуючі дзвінки "AJAX", або бажано використовувати сучасні веб-розетки. Вони дозволяють підштовхувати оновлення до підключеного клієнта, який буде оброблятися трохи JavaScript.

Я розумію, що найсучаснішим (чи останнім примхом) є AngularJS від Google. Частково розроблений для полегшення написання СПА.


0

Якщо ви хочете щось наближене до середнього стека (node.js, mongo ...) для створення програми для однієї сторінки, яка повинна бути реактивною, я б вибрав метеор . Особливо, якщо ви будуєте прототип і починаєте з нуля.

Рейки з кутовою передньою стороною були б нормальним вибором, але вам буде складніше "надсилати оновлення клієнтам, коли відбудуться зміни", тому що вам потрібно буде встановити конкретні дорогоцінні камені, з'єднати рядок бібліотеки з довгим опитуванням або sockjs. .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.