Node.js - внешние файлы JS и CSS (просто использование node.js не экспресс)
Я пытаюсь выучить node.js и наткнулся на препятствие.
Моя проблема заключается в том, что я не могу загрузить внешний файл CSS и JS в HTML-файл.
GET http://localhost:8080/css/style.css 404 (Not Found)
GET http://localhost:8080/js/script.css 404 (Not Found)
(это было, когда все файлы были в корне приложения)
Мне сказали несколько подражать следующей структуре приложения, добавить маршрут для общедоступного каталога, чтобы веб-сервер мог обслуживать внешние файлы.
структура моего приложения такая
domain.com
app/
webserver.js
public/
chatclient.html
js/
script.js
css/
style.css
Так что мой скрипт webserver.js находится в корне приложения, а все, к чему я хочу получить доступ, находится в «общедоступном».
Я тоже виделэтот пример который использует path.extname () для получения любых расширений файлов, расположенных в пути. (см. последний блок кода).
Поэтому я попытался объединить новую структуру сайта и этот пример path.extname (), чтобы веб-сервер разрешил доступ к любому файлу в моем общедоступном каталоге, чтобы я мог отобразить html-файл, который ссылается на внешние файлы js и css ,
Мой webserver.js выглядит так.
var http = require('http')
, url = require('url')
, fs = require('fs')
, path = require('path')
, server;
server = http.createServer(function(req,res){
var myPath = url.parse(req.url).pathname;
switch(myPath){
case '/public':
// get the extensions of the files inside this dir (.html, .js, .css)
var extname = mypath.extname(path);
switch (extname) {
// get the html
case '.html':
fs.readFile(__dirname + '/public/chatclient.html', function (err, data) {
if (err) return send404(res);
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data, 'utf8');
res.end();
});
break;
// get the script that /public/chatclient.html references
case '.js':
fs.readFile(__dirname + '/public/js/script.js', function (err, data) {
if (err) return send404(res);
res.writeHead(200, { 'Content-Type': 'text/javascript' });
res.end(content, 'utf-8');
res.end();
});
break;
// get the styles that /public/chatclient.html references
case '.css':
fs.readFile(__dirname + '/public/css/style.css', function (err, data) {
if (err) return send404(res);
res.writeHead(200, { 'Content-Type': 'text/javascript' });
res.end(content, 'utf-8');
res.end();
});
}
break;
default: send404(res);
}
});
Внутри публичного доступа я пытаюсь получить любую из папок / файлов внутри этого каталога через var extname = mypath.extname (path); Аналогично ссылке, которую я предоставил.
Но в данный момент «extname» пусто, когда я консоль войти
Кто-нибудь может посоветовать, что мне нужно добавить или настроить здесь? Я знаю, что это легко сделать в Express, но я хотел бы знать, как добиться того же, просто полагаясь на Node.
Я благодарен за любую помощь в этом.
Заранее спасибо.