Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2012, 12:19
Новичок на форуме
Отправить личное сообщение для ejik Посмотреть профиль Найти все сообщения от ejik
 
Регистрация: 17.11.2010
Сообщений: 7

Node.js исполняемый язык?
Возможно моя формулировка не правильная, но подругому сформулировать вопрос пока не могу.

Является ли Node.js исполняемым языком или компилируемым?

И правильно ли я понимаю, если язык исполняемый, то на запущеном сервере меняя соурс коды написаные, то это сразу будет видно на страницах которые отображает сервер, без перекомпиляции и перезапуска?
Ответить с цитированием
  #2 (permalink)  
Старый 06.08.2012, 15:53
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Node.js — не язык. JS — язык, а node — обвязка кучи всякого API над V8 (гугловый интерпретатор JavaScript'а).

Далее, исполняемый язык — какой-то странный термин. Подозреваю, Вы имели в виду "интерпретируемый".

Сообщение от ejik
И правильно ли я понимаю, если язык исполняемый, то на запущеном сервере меняя соурс коды написаные, то это сразу будет видно на страницах которые отображает сервер, без перекомпиляции и перезапуска?
Нет, неправильно. Большинство современных интерпретируемых языков в целях увеличения производительности при обработке интерпретатором компилируются в некоторое внутреннее представление (см. JIT), так что интерпретатор вполне может быть нечувствителен к изменениям исходного кода. Node.js, например, именно таков.

Вообще говоря, для любого языка работать так, как Вы хотите, сложно, т.к. придётся как-то определять, откуда продолжать выполнение после обновления файла с кодом (а там может находиться всё, что угодно), не говоря уже о возможных конфликтах состояния. Но можно останавливать интерпретатор после обработки запроса, а потом запускать заново (обычная схема для, например, php), что связано с некоторыми накладными расходами на инициализацию.

Node.js же постоянно работает, не завершая исполнение после обработки запроса. Точнее так: в ноде есть собственный сервер, который умеет принимать запросы. Вы можете назначить обработчик события нового запроса, в котором обрабатывать его. Где-то в недрах node есть event-loop, который постоянно ждёт новых событий (например, новых запросов) и делегирует их нужному event-listener'у.

Таким образом, хоть JS и интерпретируемый, это не отменяет необходимости перезапускать node после обновления исходного кода.
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2012, 16:11
Новичок на форуме
Отправить личное сообщение для ejik Посмотреть профиль Найти все сообщения от ejik
 
Регистрация: 17.11.2010
Сообщений: 7

Вы меня правильно поняли. И дали исчерпывающий ответ.
Спасибо)

Если подскажете, где можно еще почерпнуть информации на эту тему буду благодарен.
Ответить с цитированием
  #4 (permalink)  
Старый 06.08.2012, 16:26
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

http://nodebeginner.ru/
http://nodeguide.ru/doc/
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2012, 16:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от B@rmaley.e><e
Но можно останавливать интерпретатор после обработки запроса, а потом запускать заново (обычная схема для, например, php), что связано с некоторыми накладными расходами на инициализацию.
Обычная схема для Apache, но не PHP.

Сообщение от B@rmaley.e><e
Node.js же постоянно работает, не завершая исполнение после обработки запроса. Точнее так: в ноде есть собственный сервер, который умеет принимать запросы.
То же самое и с PHP, но только для PHP в качестве сервера чаще всего используют Apache.

Сообщение от B@rmaley.e><e
Вы можете назначить обработчик события нового запроса, в котором обрабатывать его. Где-то в недрах node есть event-loop, который постоянно ждёт новых событий (например, новых запросов) и делегирует их нужному event-listener'у.
Все тоже самое можно сделать и в PHP.

Вообще PHP работает по тому же принципу что и Node.JS, но PHP не имеет собственного сервера. Хотя можно запустить демона на PHP и слушать входящие соединения, тем самым обойтись без Apache. Весь функционал для этого в PHP есть и при желании можно PHP использовать в обход сервера Apache. И получится тот же принцип что использует Node.JS.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 06.08.2012, 16:42
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от devote
Обычная схема для Apache, но не PHP.
А что, php столь же часто демоном висит?
Ответить с цитированием
  #7 (permalink)  
Старый 06.08.2012, 16:48
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от B@rmaley.e><e
А что, php столь же часто демоном висит?
конечно... демонов любят делать на PHP. Да и порой иногда для какого нить проекта это нужно, сам не раз демонов писал на PHP. Так же часто используют cron который запускает PHP в обход Apache
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 06.08.2012, 16:53
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Запуск php в обход веб-серверу и демон (true FastCGI, именно про это я и распинался в своём первом посте) — совершенно разные вещи.

P.S. Правда, существует некий php-fpm, который, вроде как, даже крутится демоном. Но ничего про сохранение состояния в нём я не знаю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
компиляция javascript в исполняемый exe-файл nik1985 Общие вопросы Javascript 39 18.01.2016 12:29
XMPP + Node.js FINoM AJAX и COMET 21 20.12.2013 14:29
Javascript-разработчик (ExtJS, node.js), 50 000 - 80 000, СПб IrinaS Работа 0 03.04.2012 20:40
Node.JS - книги Раман AJAX и COMET 6 20.07.2011 14:29
Node.js Kolyaj Серверные языки и технологии 49 24.05.2010 22:29