Node.js
From Wikipedia, the free encyclopedia
Remove ads
Node.js е многоплатформена среда за изпълнение на сървърни и мрежови приложения с отворен код. Приложенията се пишат на JavaScript и могат да се изпълняват в Node.js среда на Microsoft Windows, GNU/Linux, macOS и IBM.
Remove ads
Node.js предоставя задвижвана от събития архитектура и неблокираща входно-изходна система за програмиране на приложенията (API), която оптимизира производителността и мащабируемостта на дадена програма. Тези технологии са често използвани за мрежови приложения, работещи в реално време.
Node.js използва JavaScript двигателя V8 на Google, за да изпълнява код и голяма част от основните модули са написани на JavaScript. Node.js съдържа вградени библиотеки, които позволяват приложенията да работят като сървъри, без софтуер като Apache HTTP Server или IIS.
Node.js придобива популярност като сървърна платформа и се използва от Microsoft,[2][3] Yahoo!,[4] Walmart,[5] Groupon,[6] SAP,[7] LinkedIn,[8][9] Rakuten, PayPal,[10][11] Voxer,[12] GoDaddy[13] и други.
Remove ads
История

Node.js е създаден от Раян Дал и други разработчици, работещи в Joyent. Node.js е създаден и първоначално пуснат за употреба под Linux през 2009 г. Разработването и поддръжката са били под ръководството на Раян Дал и спонсорирани от Joyent, фирмата, където Дал е работил.[14]
Дал е бил вдъхновен да създаде Node.js след като вижда прогреса на качване на файл под Flickr. Браузърът не е знаел каква част от файла е бил качен и се е налагало от своя страна да отправя запитване към уеб сървъра. Дал е смятал, че просто трябва да има по-лесен начин.[15]
Получава международно внимание след своя дебют по време на учредителната конференция JSConf EU на 8 ноември 2009.[16][17] Дал представя Node.js с неговата комбинация от JavaScript двигателя на Google V8, цикъла на събитията и входно-изходния програмен интерфейс на ниско ниво. Проектът получава бурни аплодисменти и оттогава се радва на безпрецедентен растеж, популярност и приемственост.
През 2011 бива въведен пакет за управление на библиотеките под Node.js, наречен npm. Пакетният мениджър позволява публикуването и споделянето в общността на Node.js библиотеки с отворен код и улеснява инсталацията, обновяването и премахването на библиотеките.
През юни 2011 г., Microsoft си партнира с Joyent, за да създадат версия на Node.js[18] за Windows. Първата Node.js версия поддържаща Windows, е пусната на пазара през юли месец същата година.
През януари 2012 г. Дал отстъпва своето място, издигайки своя колега и създател на npm Исак Шлютер. Той поема ръководството над проекта.[19]
През януари 2014 г. Шлютер обявява Тимоти Дж. Фонтайн за новия ръководител на проекта Node.js.[20]
През декември 2014, Федор Индутни стартира io.js, форк на Node.js. Поради вътрешни сблъсъци относно управлението на Joyent, io.js бива създаден като алтернатива с отворено управление с отделен технически комитет.[21]
Remove ads
Общ преглед
Node.js позволява създаването на уеб сървъри и мрежови инструменти, използвайки JavaScript и колекция от модули, които боравят с различните функционалности на ядрото.[22][23][24][25] Модулите се грижат за входно-изходната система, работата в мрежа (HTTP, TCP, UDP, DNS, или TLS / SSL), двоичните данни (буфери), криптографските функции, потока от данни, както и други основни функции.[22][24][26] Модулите на Node.js имат семпъл и елегантен приложно-програмен интерфейс, което от своя страна намалява сложността при писането на сървърни приложения.[22][24]
Могат да бъдат използвани софтуерни рамки, с цел да бъде ускорено разработването на приложения – достъпни за публично ползване са софтуерните рамки Express.js, Socket.io и Connect.[22][27] Node.js приложения могат да работят под Microsoft Windows, Unix и macOS сървъри. Node.js приложения, като алтернатива, могат да бъдат написани с CoffeeScript (по-четима форма на JavaScript), Microsoft TypeScript (силно типизирана форма на JavaScript), или който и да е друг програмен език, на който може да се компилира JavaScript.[28]
Node.js се използва предимно за изграждане на мрежови програми като уеб сървъри, което го прави подобен на PHP и Python.[23] Най-голямата разлика между PHP и Node.js е, че PHP е език за блокиране (командите се изпълняват само след като предишната команда е завършила с изпълнението си), докато при Node.js изпълнението протича по различен начин (командите се изпълняват паралелно и използват обратни извиквания, за да сигнализират своето завършване).[23]
Node.js дава възможност за развитие на бързи уеб сървъри под JavaScript.[22] Разработчиците могат да създават високо мащабируеми сървъри. Това става с помощта на опростен модел, който използва обратни извиквания към сигнала за завършване на командата.[22] Node.js е създаден, защото е трудно постигането на съгласуваност при много сървърни езици за програмиране, което често води до лошо изпълнение. Node.js свързва лекотата на скриптов език (JavaScript) с мощността на Unix мрежово програмиране.[22]
Node.js е създадена на двигателя на Google V8 JavaScript, защото:
- V8 е с отворен код под лиценза на BSD
- V8 е изключително бърз
- V8 е фокусиран върху уеб, така че може да се каже че е специалист в областта на не малко основи в интернет пространството като HTTP, DNS, TCP
- JavaScript е добре познат език в рамките на уеб програмирането, което го прави достъпен за много уеб разработчици
Хиляди библиотеки с отворен код са били създадени за Node.js и могат да бъдат изтеглени безплатно от интернет страницата на проекта. Node.js разчита на общност от разработчици, концентрирани около два адресни списъка и IRC канал # node.js на freenode. Обществото от програмисти, занимавали се с Node.js се събира на NodeConf, годишна конференция фокусирана върху Node.js.[29]
Remove ads
Технически характеристики
Threading
Node.js работи върху една нишка, като не блокира входно-изходната комуникация, което му позволява да поддържа десетки хиляда връзки едновременно, без да се налага да се притесняваме за забавяне при контекстното превключване между нишките. Дизайнът на споделяне на една нишка между всички искания означава, че може да бъде използван за изграждане на високо паралелни приложения. Целта на дизайна на Node.js приложението е при всяка входящо-изходяща операция да се използва обратно повикване.
Недостатък на този подход е, че Node.js не позволява мащабиране в зависимост от ядрата на процесора на клиента, на който бива изпълняван, ако не се използват допълнителни модули като pm2.
V8
V8 е двигателят за JavaScript, създаден специално за браузъра Google Chrome, чийто код Google отваря през 2008 година. Написан под С++, V8 компилира изходния код (JIT) до машинен код на момента, замествайки интерпретацията в реално време.
Node.js съдържа libuv, който от своя страна поема асинхронните събития. V8 осигурява средата за изпълнение за JavaScript. Libuv е слой за абстракция на мрежата, както и за функционалността на файловата система под Windows и POSIX-базирани системи като Linux, macOS и Unix.
Главната функционалност на Node.js е внедрена в JavaScript библиотеката. Свързващите части на Node.js, писани на С++ свързват всички тези технологии една с друга, както и с операционната система.
Управление на пакети
npm е предварително инсталиран пакетен мениджър (опция за управление на пакетите) за сървърна платформа от типа Node.js. Този мениджър се използва за инсталацията на Node.js програмите от npm регистъра. Организирайки инсталирането и управлението на външни Node.js програми, той позволява на програмистите да изграждат приложенията си по-бързо. npm не трябва да се бърка с CommonJS require() командата, защото той не се използва за зареждане на код, а за инсталиране на код и управление на неговите зависимости от командния ред. Пакетите, които се намират в npm регистъра варират от прости спомагателни библиотеки като underscore.js до по-сложни мениджъри на задачи като Grunt.
Унифицирано АПИ
В комбинация с браузер, база данни за документи (от типа на MongoDB или CouchDB), както и с JSON, Node.js предоставя унифициран JavaScript стек за разработване. Със засиленото внимание спрямо клиентските рамки, както и с адаптирането на основно сървърни шаблони за разработка като MVC, MVP, MVVM и така нататък, Node.js позволява преизползването на същия модел и обслужващ интерфейс, както за сървъра така и за клиентите.
Цикъл на събитията
Node.js се регистрира с операционната система, за да бъде уведомяван когато бъде направена връзка. Когато се направи връзка, операционната система провежда обратно повикване. В рънтайма на Node.js всяка връзка е малка алокация в динамичната памет. Традиционно всяка връзка се поема от сравнително тежки системни процеси или нишки. Node.js използва цикъл на събитията вместо процеси или нишки, за да поеме милиони връзки едновременно. За разлика от други сървъри базирани на събития, цикъла на събитията на Node.js няма нужда да се вика изрично. Вместо това се дефинират обратните повиквания и сървъра автоматично влиза в цикъла на събитията в края на дефиницията. Node.js излиза от цикъла, когато няма вече обратни повиквания за изпълнение.
Remove ads
Инструменти
- Интегрирани среди за разработка на десктоп
- Atom (безплатна с отворен код) Бележка: прехвърли се на io.js след версия 0.177.0
- Brackets (безплатна с отворен код)
- Sublime Text (комерсиална)
- JetBrains IntelliJ IDEA (комерсиална)
- JetBrains WebStorm (комерсиална)
- Microsoft Visual Studio с Node.js Tools for Visual Studio[30] (комерсиална)
- Microsoft Visual Studio с TypeScript (комерсиална)
- Nodeclipse Enide Studio (безплатна с отворен код, Eclipse-базирана)
- NoFlo – флоу-базирана програмна среда, интегрирана с GNOME APIs[31]
- Онлайн кодови редактори
- Koding (облачна услуга)
- Codenvy IDE (облачна услуга)
- Cloud9 IDE (облачна услуга)
- Codiad Архив на оригинала от 2015-08-14 в Wayback Machine. (услуга за собствен хостинг)
- Среди за изпълнение и дебъгери
- Microsoft Visual Studio (комерсиална) с Node.js Tools for Visual Studio (безплатна)
- Microsoft WebMatrix (безплатна)
- Управление на производителност на приложенията
- Рамки
- Сървърни рамки: Express.js, Socket.io, Koa.js, Hapi.js, Total.js[33][34]
- MVC рамки: Meteor, Derby, Sails, Mean, MeanJS, Tower.js Архив на оригинала от 2016-01-03 в Wayback Machine., Nombo Архив на оригинала от 2014-08-18 в Wayback Machine., Geddy Архив на оригинала от 2019-05-13 в Wayback Machine., Compound, Yahoo! Mojito Архив на оригинала от 2015-09-07 в Wayback Machine.
Remove ads
Алтернативи
io.js
io.js е разклонение на Node.js, стартирало през декември 2014 г. от сътрудник на Node.js проекта. Очаква се през март 2015 г. io.js да бъде обявен за стабилен. Причината за разклоняването на io.js от Node.js, е че авторите са искали проект извън корпоративното управление, и по тази причина са създали система за „отворено управление“, състояща се от техническа комисия, от която са част авторите.
io.js подобно на Node.js, е мулти-платформена среда за изпълнение на сървърни и мрежови приложения с отворен код. Приложенията на io.js са написани на JavaScript, и могат да бъдат стартирани в io.js среда за изпълнение под операционни системи macOS, Microsoft Windows, Linux. io.js предоставя задвижвана от събития архитектура и неблокираща входно-изходна система за програмиране на приложенията (API), която оптимизира производителността и мащабируемостта на дадена програма. Използва JavaScript двигателя V8 на Google, за да изпълнява код.
Други езици
Подобни среди за разработка достъпни за други езици за програмиране са:
Remove ads
Източници
Вижте също
Външни препратки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads