Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2017, 11:46
Новичок на форуме
Отправить личное сообщение для lissalmaty Посмотреть профиль Найти все сообщения от lissalmaty
 
Регистрация: 08.06.2017
Сообщений: 3

Nodejs+HTML (потерялись линки на подключенные ресурсы из html)
Здравствуйте всем!!! Помогите новичку!
Начал изучать Node. Пытаюсь запустить index.html отверстанного одностраничника из server.js. Запускается. Только не воспринимаются линки из html (JQuery, CSS и т.д.) Объясние почему и помогите советом пожалуйста)))
З.Ы. И нету ли какого либо иного способа кроме перезаписи тела файла в переменную и ее последующей записи в response? Что нить типа window.open из JS?

'use strict';
var http = require('http');
var fs = require('fs');
var port = process.env.PORT || 1337;

http.createServer(function (request, response) {
fs.readFile('./index.html', { encoding: 'utf8' }, function (error, file) {
if (!error) {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.write(file);
response.end();
}
});
}).listen(port);
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2017, 12:45
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Если отдавать только index.html, то можно все скрипты, стили и картинки включить непосредственно в него (кое-что перевести в base64 или другую подходящую кодировку).
Иначе из request надо будет доставать ссылку на файл из request и по ней загружать и отправлять нужные файлы.
И вообще, есть готовые решения
sudo npm -g install httpserver
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2017, 12:56
Новичок на форуме
Отправить личное сообщение для lissalmaty Посмотреть профиль Найти все сообщения от lissalmaty
 
Регистрация: 08.06.2017
Сообщений: 3

Если нетрудно, можно пример?
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2017, 13:15
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Если хочу отдавать файлы из директории, то просто набираю команду
httpserver
и получаю всё что необходимо (естественно это статика)
Это то что мне надо, кроме того можно добавить опций и можно использовать как модуль, то так я его не использовал. Это просто самый простой в использовании сервер на отдачу статики. Собственно поэтому и рекомендую. По поводу продвинутому использованию это в мануалы.
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2017, 13:26
Новичок на форуме
Отправить личное сообщение для lissalmaty Посмотреть профиль Найти все сообщения от lissalmaty
 
Регистрация: 08.06.2017
Сообщений: 3

А вот комманда на установку httpserver выше верна?
Просто "npm -g install httpserver" насыпал ошибок и не установился. А что такое "sudo" впереди я так и не понял(((
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2017, 13:38
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

sudo - запустить от имени пользователя root
Дело в том что это утилита, которая ставится глобально. Можно зайти как root и ставить глобально без sudo. Если это венда, то sudo вообще не нужно.
Чтобы поставить глобально нужна опция -g , тогда можно запускать как обычную системную команду.
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2017, 14:01
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Просто страницу нужно отдавать - как статику. Простой подход - модуль node-static. Посмотрите раздел "AJAX и COMET" в учебнике здесь же - там Коган (спасибо ему очередной раз) как раз всё время юзает простейший сервер, отдающий одну страничку HTML.
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2017, 16:18
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Что значит статика люди? Как можно отдать страницу не как статику??

Сообщение от lissalmaty
Только не воспринимаются линки из html (JQuery, CSS и т.д.) Объясние почему
Потому что линки src="jquery.js", href="style.css", src="image.jpg" и тд - это такие же get-запросы как и index.html, нет разницы, значит их надо тоже обрабатывать. Нода не только для использования в качестве http-сервера (как апаче где такая обработка реализована изначально), а есть некий набор встроенных модулей, на основе которых пишутся другие модули на npm, которые могут быть установлены для получения нужного функционала, т.е. Node.js это не тупо сервер, как везде пишут, видимо чтобы не травмировать сразу неокрепшие умы) а как написано на nodejs.org - это JavaScript runtime package ecosystem.
Ответить с цитированием
  #9 (permalink)  
Старый 09.06.2017, 17:53
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Ну какая новость-то, что "runtime package ecosystem". Я вот щас возьму какой-нибудь nodemailer, напишу пять строчек кода и, запустив (Ctrl-B) этот код прямо в Sublime Text, отправлю себе письмо от имени Стива Джобса. И где же тут будет сервер?
Просто, человек ведь изучает вопрос, и предлагать ему глобально установленный http-server - это же для дебилов. И если он придумал себе задачу простым способом (без типа Экпресса и т.п.) отдать HTML-страницу, то для понимания процесса - самое то начать с node-static.
А что линки и картинки - это такие же гет-запросы, так это логер в консоль даже пишет, трудно не заметить.
Ответить с цитированием
  #10 (permalink)  
Старый 09.06.2017, 18:44
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Audaxviator, трудно не заметить, но для новичков это не очевидно
Ответить с цитированием
Ответ



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

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