express@2.3.1 ./node_modules/express
У npm є концепція мітки (tag), якою можна скористатися, щоб встановити найсвіжішу стабільну версію пакету:
$ npm install sax @ stable
Імена міток довільні і необов'язкові. Їх вибирає автор пакету, і не у всіх пакетах вони пріменяются.позволяет переглянути залежності від інших пакетів, що зберігаються у файлі package:
$ npm view mongoose dependencies
{hooks: 0.1.9 }
$ npm view express dependencies
{connect: gt;=1.5.1 lt; 2.0.0 ,: gt;=0.0.1 ,: gt;=0.0.6}
Залежності - це механізм, за допомогою якого npm дізнається, які ще модулі необхідно встановити. Під час установки модуля npm дивиться, від чого він залежить, і встановлює ті модулі, що не були встановлені раніше.
Хоча ця система проста і зрозуміла кожному, хто хоч раз мав справу з програмним забезпеченням, за нею стоїть сувора модель. Реалізуючи систему нумерації версій, автор npm користувався специфікацією семантичної версійності, опублікованій на сайті # justify gt; Версії представляються рядками виду XYZ, де X, Y і Z зазвичай є цілими числами; X - основний номер, Y - додатковий номер, Z - номер виправлення (наприклад, 1.2.3).
Після номера виправлення в рядку може вказуватися довільний текст, що описує так звані «спеціальні версії» (наприклад, 1.2.3betal).
При порівнянні номерів версій порівнюються не рядки, а числа X, Y і Z. Наприклад, 1.9.0 lt; 1.10.0 lt; 1.11.3. і 1.0.0betal lt; 1.0.0beta2 lt; 1.0.0.
Сумісність документується за допомогою наступних угод про нумерації версій:
пакети з основним номером версії 0 (X=0) абсолютно нестабільні, їх API може змінитися в будь-який час;
якщо зміна виправляє тільки помилки і гарантує зворотну сумісність, то слід збільшувати номер виправлення (Z);
додатковий номер версії (Y) потрібно збільшувати при додаванні функціональності, що зберігає зворотну сумісність (наприклад, додана нова функція, а всі інші назад сумісні);
основний номер версії (X) треба збільшувати при внесенні несумісних змін.
4. Зберігання та вибірка даних
Розглянемо наявні в Node методи зберігання даних. Яким би потужним не був веб-каркас Express, без уміння зберігати дані від нього мало толку. Зазвичай дані зберігають в якій-небудь базі даних. Сьогодні є технології баз даних на самі різні випадки - традиційні сховища на основі SQL, документо-орієнтовані бази даних без використання SQL, прості сховища ключів і значень або веб-служби запитів типу YQL.
. 1 Движки збереження даних для Node
У Node не передбачена вбудована підтримка якоїсь системи зберігання даних, якщо не вважати читання і запис у файлову систему. Для роботи з системами зберігання, зокрема з базами даних, необхідно використовувати відповідний модуль. На вікі-сайті Node перераховано два десятки таких модулів для роботи з CouchDB, MongoDB, MySQL, Postgres, SQLite3, Memcache, REDIS, YQL та іншими системами. Див. Https://github/joyent/node/wiki/modules#database.
У загальному випадку необхідно встановити як сам модуль, так і його залежності, в тому числі платформний код клієнтських бібліотек конкретної СУБД. Наприклад, модулям для роботи з MySQL необхідні сервер MySQL і відповідна клієнтська бібліотека.
. 2 SQLite3 - полегшена вбудована база даних на основі SQL
СУБД на основі SQL необов'язково має на увазі наявність великовагового сервера і високооплачуваних адміністраторів баз даних. Встановити SQLite3 (# justify gt; .3 Mongoose - інтерфейс між Node і MongoDB
- одна з лідируючих «nosql» СУБД (nosql означає, що вона не базується на мові SQL). В описі говориться, що це «масштабується, високопродуктивна, документо-орієнтована СУБД з відкритим вихідним кодом». Вона дозволяє зберігати документи у форматі, близькому до JSON, без строго певної схеми, і володіє цілим рядом передових можливостей. Додаткові відомості та документацію можна знайти на сайті проекту # justify gt; 5. Практичний приклад на основі тривалих обчислень (числа Фібоначчі)
Додаток Math Wizard наочно демонструє основну проблему додатків для Node. Якщо яка-небудь функція зворотного виклику довго не повертає керування циклу обробки подій, то все додаток перестає відповідати на запити.
Щоб переконатися в цьому, необхідно зайти на сторінку обчислення чисел Фібоначчі і вв...