Я пытаюсь выяснить, как загрузить и отобразить базовый файл HTML, чтобы мне не приходилось писать код, подобный следующему:
response.write('...<p>blahblahblah</p>...');
Я только что нашел один способ, используя библиотеку fs . Я не уверен, если это самый чистый, хотя.
var http = require('http'),
fs = require('fs');
fs.readFile('./index.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(8000);
});
Основная концепция - это просто чтение файлов и вывод содержимого. Тем не менее, все еще открыт для более чистых вариантов!
sys = require('util')
не требуется, поскольку на консоль ничего не выводится.fs.readFile
мог быть помещен в вызовhttp.createServer
, позволяя обработать ошибку. Ответ Используйте Стефан сif (err) { console.log('something bad'); return res.end('Oops! Something bad happened.');}
Thereturn
заявлением является простой вещью , что новые пользователи могут не заметить.используйте app.get, чтобы получить HTML-файл. это просто!!
это так просто. Для этого используйте экспресс-модуль. Установить экспресс:
npm install express -g
источник
express
.var express = require('express'); var app = express();
npm install express --save
вместо -gВы можете отображать файлы вручную, используя объект fs, но я бы порекомендовал использовать среду ExpressJS, чтобы сделать вашу жизнь намного проще.
... Но если вы настаиваете на том, чтобы сделать это трудным путем:
источник
Я знаю, что это старый вопрос, но, поскольку никто не упомянул об этом, я подумал, что стоит добавить:
Если вы буквально хотите обслуживать статический контент (например, страницу about, image, css и т. Д.), Вы можете использовать один из модулей обслуживания статического контента, например, node-static. (Есть и другие, которые могут быть лучше / хуже - попробуйте search.npmjs.org.) С небольшой предварительной обработкой вы можете отфильтровать динамические страницы из статических и отправить их нужному обработчику запросов.
источник
Возможно, это будет лучше, так как вы будете передавать потоковые файлы, а не загружать их в память, например, fs.readFile.
источник
Это обновление к ответу Мухаммеда Несвина
В Express 4.x sendfile устарел, и необходимо использовать функцию sendFile . Разница в том, что sendfile принимает относительный путь, а sendFile принимает абсолютный путь. Итак, __dirname используется, чтобы избежать жесткого кодирования пути.
источник
Это более гибкий и простой способ использования
pipe
метода.источник
Лучший способ, которым я научился, - это использовать экспресс с HTML-файлами, так как экспресс дает много преимуществ. Кроме того, вы можете расширить его до платформы Heroku, если хотите .. Просто сказать :)
Чистый и лучший .. !!!
источник
Самый простой способ сделать это - поместить все ваши файлы, включая index.html или что-то со всеми ресурсами, такими как CSS, JS и т. Д., В общедоступную папку, или вы можете назвать ее как угодно, и теперь вы можете использовать express js и просто сообщить app использовать _dirname как:
В ваш server.js используя экспресс добавить эти
и если вы хотите иметь отдельный каталог, добавьте новый каталог в публичный каталог и используйте этот путь "/ public / YourDirName"
ТАК что мы тут делаем? мы создаем экспресс-экземпляр с именем app и даем адрес, если публичный каталог для доступа ко всем ресурсам. Надеюсь это поможет !
источник
Как насчет использования экспресс-модуля?
затем вы можете использовать браузер для получения / localhost: 8000
источник
источник
response.writeHeader()
, но скорееresponse.writeHead()
.response.writeHeader()
иresponse.writeHead()
оба действительны.Это просто очень просто, если вы используете трубу. Ниже приведен фрагмент кода server.js.
источник
../
. Если бы я ничего не делал, кроме как изменился__dirname + "/index.html'
на что-то вроде__dirname + requestedPageFromHeader
, я считаю, что полученный код имел бы эту уязвимость. Символы пути к каталогу, такие как,~
будут в порядке, если вы включите__dirname +
- если пользователь может определить начало пути, нужно будет также проверить их.Я думаю, что это был бы лучший вариант, поскольку он показывает URL-адрес сервера:
источник
Вы также можете использовать этот фрагмент:
источник
Я знаю, что это старый вопрос - вот простая утилита файлового сервера, если вы предпочитаете не использовать connect или express; а скорее модуль http.
источник
используйте ejs вместо нефрита
npm install ejs
app.js
./routes/index.js
источник
Это довольно старый вопрос ... но если в данном случае вы просто отправляете определенную HTML-страницу в браузер на специальной основе, я бы использовал нечто простое, например:
источник
мы можем загрузить html-документ с помощью фрейма соединения. Я поместил свой HTML-документ и связанные изображения в общую папку моего проекта, где представлены приведенный ниже код и модули узлов.
Я пробовал метод readFile () для fs, но он не загружает изображения, поэтому я использовал платформу подключения.
источник
https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906
Вот мои простые демонстрационные коды для размещения статических файлов HTML с использованием сервера Express!
надеюсь, это поможет вам!
источник