Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   NodeJS и все с ним связанное (https://javascript.ru/forum/misc/14720-nodejs-i-vse-s-nim-svyazannoe.html)

monolithed 30.01.2011 00:07

Kolyaj, А что с серверной безопасностью (инъекции и пр.)?

Kolyaj 30.01.2011 00:20

А что с серверной безопасностью может быть? А что в PHP с серверной безопасностью? Как скрипт напишешь, так он и полетит.

PeaceCoder 30.01.2011 00:36

Цитата:

Сообщение от Kolyaj
А документация?
require

Да я то понял что можно require делать, но вопрос в другом. Если до createServer все компилируется 1 раз при запуске скрипта и исполняется, а все что внутри createServer компилируется при каждом запросе и исполняется или только 1 раз компилируется и потом просто исполняется, а если сделать в нем require? Он подгрузит и откомпилирует и больше потом не будет подгружать и снова компилировать ? Короче говоря, после запуска сервера, скрипт работает в накопительном режиме ? или все же происходит периодическая выгрузка неиспользуемого кода? Где можно почитать подробно о тонкостях техники работы ноды, всмысле подгрузки, компиляции, исполнения ?
Пример: я знаю что PHP при каждом запросе грузит скрипт-компилирует-исполняет-выдает-выгружает.
Как обстоит делао с техникой в ноде?

Kolyaj 30.01.2011 00:39

При запуске загружает-компилирует-выполняет. При запросе вызывается функция. Если в любой момент будет вызван require, соответствующий файл загрузится-скомпилируется-выполнится. Если этот файл уже загружен в другом месте, то выполнятся он больше не будет, просто ссылка на модуль будет возвращена.

monolithed 30.01.2011 00:39

Цитата:

Сообщение от Kolyaj
А что с серверной безопасностью может быть? А что в PHP с серверной безопасностью? Как скрипт напишешь, так он и полетит.

к примеру для php есть Безопасный режим и полно функций типа mysql_real_escape_string(), htmlspecialchars() как для безопасной работы с базой, полями ввода так и с файловой системой, а что есть в Node, чтобы защитить приложение от XSS- SQL-injections и пр.?

PeaceCoder 30.01.2011 00:43

Цитата:

Сообщение от Kolyaj
просто ссылка на модуль будет возвращена.

О! это меня и интересует. Супер система.
Теперь вопрос в другом: возможно ли переписывать стандартные функции типа require? например как в браузере alert и т.п.?
И еще. Если сделать типа LIB = require('./lib/lib.js'); то будет например видна LIB!==undefined в другом подгружаемом файле? и вобще каким образом можно увидеть уже существующие переменные в require файлах? Например как global в php

П.С. не охота тратить время на тесты. Охота узнать ключевые моменты языка, остальное вроде уже разобрался. библиотек куча написано, кстати как их подключать пока не разобрался (если я правильно понял, надо их скопировать и также просто сделать require)

Kolyaj 30.01.2011 00:54

Цитата:

Сообщение от monolithed
к примеру для php есть Безопасный режим

NodeJS не предназначен для shared хостингов.

Цитата:

Сообщение от monolithed
полно функций типа mysql_real_escape_string()

Это уже вопросы к модулям для работы с базами данных, а не к NodeJS. В MongoDB, например, никакая инъекция невозможна в принципе.

Цитата:

Сообщение от monolithed
htmlspecialchars()

А это вопросы к шаблонизатору, а не к NodeJS.


Цитата:

Сообщение от PeaceCoder
LIB = require('./lib/lib.js');

Расширение .js писать не надо. Все переменные внутри модуля остаются внутри него. Публичные свойства вытаскиваются присваиванием объекту export.

Есть ещё объект global, он один и тот же во всех файлах. Но мне, например, он ещё ни разу не пригодился.

PeaceCoder 30.01.2011 01:02

Цитата:

Сообщение от Kolyaj
Есть ещё объект global, он один и тот же во всех файлах.

Т.е. что бы например тот же LIB был виден везде, надо писать global.LIB = require(...) ? А обращаться к нему я подозреваю не надо через global.LIB global можно опускать (аналог window в клиенте LIB = ... <=> global.LIB = ... не?)?

Цитата:

Сообщение от Kolyaj
Есть ещё объект global, он один и тот же во всех файлах. Но мне, например, он ещё ни разу не пригодился

пригодится когда нода станет на уровень пхп/руби/питона и когда на ней будут писаться серьезные проекты

П.С. извини за наивные вопросы, ты опытен, тебе быстрее ответить чем мне прочитать кучу инфы что бы это узнать, а это важно для меня.

x-yuri 30.01.2011 03:17

Цитата:

Сообщение от monolithed
как по мне, то as больше под это заточен...

наверное, ты хотел сказать, что тебе он больше нравится, чем js. Так же как мне наоборот, без объективных аргументов :)

Цитата:

Сообщение от monolithed
лично меня пока не убеждают тезисы: "ну как же, тотальная асинхронность и возможность писать на js".

тотальная асинхронность да, не убеждает, а возможность писать на js - это мне нравится :)

Цитата:

Сообщение от dmitriymar
мож я не правильно правильно понял эту фразу-но насколько мне не изменяет память динамически можно подгрузить скрипт и без серверных сценариев-только клиентом js

клиентский и серверный js исполняются в разных средах, способ подключения файлов на клиенте не имеет смысла на сервере

Цитата:

Сообщение от Kolyaj
2. Скрипт на NodeJS запускается единожды и выполняется всё время работы сайта. В отличие от PHP, который запускается в момент запроса, после чего убивается. Поэтому весь код со всеми библиотеками парсится единожды при запуске, что не может не добавлять скорости.

во-первых, это в cgi так. А во-вторых, есть еще opcode cache и factcgi

Цитата:

Сообщение от Kolyaj
Особо хочется отметить распространённое заблуждение, что NodeJS это круто, потому что один и тот же язык на сервере и на клиенте.

ну, это актуально для тех кто не знает ни одного серверного языка, либо вообще ни одного языка не знает. В остальном - субъективно

итого, получается, node.js выигрывает в не очень стандартных задачах

Цитата:

Сообщение от PeaceCoder
Т.е. что бы например тот же LIB был виден везде, надо писать global.LIB = require(...) ? А обращаться к нему я подозреваю не надо через global.LIB global можно опускать (аналог window в клиенте LIB = ... <=> global.LIB = ... не?)?

Цитата:

Сообщение от PeaceCoder
пригодится когда нода станет на уровень пхп/руби/питона и когда на ней будут писаться серьезные проекты

ты случайно не пропустил фразу про объект export?

Vulkan 30.01.2011 07:49

Цитата:

Сообщение от PeaceCoder (Сообщение 90436)
кстати как их подключать пока не разобрался (если я правильно понял, надо их скопировать и также просто сделать require)

Ну смотря что, например если коннектор к БД у меня просто скопировать в папку нода и сделать require, а например при установке фреймворка скопировать, сделать внутри папки make, make install, а потом уже require, но там вообще к каждой библиотеке написана инструкция по установке, ничего сложного нет. Вообще удобно их устанавливать с github, например если шаблонизатор mu устанавливать, то зайти в папку ноды, в консоли команду:
git clone https://github.com/raycmorgan/Mu
и через несколько секунд уже модуль в папке лежит.


Часовой пояс GMT +3, время: 20:47.