Для початку з поганих новин: Оскільки Node.js - досить молода техніка, я думаю, ви виявите, що процес створення повноцінного веб-сайту та підтримка / експлуатація його буде сильно відрізнятися від того, до чого ви звикли зараз.
Josh3736 додає: Як тільки ви з’ясуєте , як працює Node.js та різні його пакети (Connect, Express), я виявив, що ви можете дуже швидко розробляти нові сайти.
Грубі краї, які зараз існують у Node.js, у поєднанні з швидкими темпами його розробки та всіх задіяних модулів можуть ускладнити ситуацію та зробити речі менш простими, швидкими та зрозумілими, ніж хотілося б.
Позбавивши цього, ось хороша новина:
Node Package Manager, NPM має багато хороших інструменти і механізми для розширення функціональних можливостей голих кісток Node.js, що робить його придатним для створення вебов - сервера.
Найбільш помітним буде Express Framework, який містить майже все, що потрібно для запуску веб-сервера (включаючи файли cookie, сеанси та маршрутизацію шляху). Крім того, Express підтримує часткові елементи, які піклуються про ваш верхній і нижній колонтитули.
Express побудований поверх Sencha's Connect . Файли cookie та сеанси фактично працюють від Connect. Express - це те, що спрощує вашу маршрутизацію та обробляє перегляди / частки. Тож якщо вам не потрібні всі навороти, що постачаються з Express, замість цього просто перейдіть до Connect.
Якщо ви хочете використовувати шаблони для цих частинок, Jade Template Engine може пришвидшити процес. Хоча Josh3736 зазначає, що Джейд повільний і пробільний. Більш повний огляд можна знайти тут , що включає його улюблений doT . (Я особисто використовую Node.js лише для socket.io
базованих програм, тому він є кращим джерелом, ніж я, що стосується шаблонування).
Ви можете підключитися до MySQL з Node.js за допомогою модуля db-mysql , але якщо вам це не потрібно, оскільки ви отримуєте доступ до даних, підключених до вже наявної системи, я б порадив використовувати більш ... 'сучасну підхід, який полягає у використанні бази даних NoSQL, як це робиться у більшості проектів Node.js. MongoDB через Mongoose - популярний спосіб пройти.
Або якщо це просто зберігання об’єктів, які вас цікавлять, просто перейдіть до Redis (який вам, мабуть, колись знадобиться).
Щойно ваш веб-сайт буде завершено, вам доведеться його розгорнути та переконатися, що він продовжує працювати. Для цього існує багато способів, наприклад, використання вбудованої підтримки кластера або використання більш зручного forever
модуля npm. Дивіться це моє запитання SO для отримання додаткової інформації.
Висновок :
До чого я намагаюся дійти, це:
Запитання, яка найкраща практика для створення веб-сайту в Node.js, є приблизно таким самим, як запитання, який найкращий спосіб створити веб-сайт у PHP: 100 розробників дадуть вам 100 різних відповідей.
NPM має безліч чудових фреймворків, які значно спрощують багато задіяних завдань, але все це базується на перевагах, який саме шлях слід насправді.
Як я вже говорив, Node.js - все ще досить молода техніка, тому жоден з фреймворків чи додаткових інструментів ще не вийшов як "стандарт дефакто"; для більшості речей, які ви намагаєтеся зробити, існують, мабуть, різні альтернативи, і сподівайтесь, що ваш код зламається при використанні більшості з них під час оновлення, оскільки розробка самого Node.js та більшості модулів відбувається швидко. Вам доведеться встигати.
Склавши все це разом :
Як я вже говорив, моє основне виробниче використання для Node.js - це можливість його використання socket.io
, тому у мене немає хороших прикладів виробництва (І, як я збираюся виїхати на заслужений відпочинок, я не не встигнути скласти один). Хоча є кілька хороших прикладів:
Знову ж таки, шлях (і згодом приклад для наслідування) в значній мірі залежить від ваших кінцевих цілей та обраних методів, але, на щастя, є достатньо ресурсів для всіх можливих варіантів вибору. Більшість модулів використовують добре задокументовані сховища GitHub і містять приклади у поєднанні з найпопулярнішими модулями (Див. /examples/
Папку, яка, схоже, присутня в більшості сховищ).
Удачі! (І дякую Josh3736 за виправлення моїх помилок.)