Node.js - zewnętrzne pliki JS i CSS (tylko przy użyciu node.js nie są ekspresowe)
Próbuję nauczyć się node.js i trochę zablokowałem.
Moim problemem jest to, że nie mogłem załadować zewnętrznego pliku css i js do pliku HTML.
GET http://localhost:8080/css/style.css 404 (Not Found)
GET http://localhost:8080/js/script.css 404 (Not Found)
(to było, gdy wszystkie pliki były w katalogu głównym aplikacji)
Powiedziano mi, aby nieco naśladować następującą strukturę aplikacji, dodać trasę dla publicznego katalogu, aby serwer mógł obsługiwać zewnętrzne pliki.
moja struktura aplikacji jest taka
domain.com
app/
webserver.js
public/
chatclient.html
js/
script.js
css/
style.css
Mój skrypt webserver.js znajduje się w katalogu głównym aplikacji, a wszystko, co chcę uzyskać, jest „publiczne”.
Widziałem teżten przykład który używa path.extname (), aby uzyskać dowolne rozszerzenia plików znajdujące się w ścieżce. (patrz ostatni blok kodu).
Próbowałem więc połączyć nową strukturę witryny z tym przykładem path.extname (), aby serwer WWW zezwalał na dostęp do dowolnego pliku w moim publicznym katalogu, więc mogę renderować plik html, który odwołuje się do zewnętrznych plików js i css .
Mój webserver.js wygląda tak.
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);
}
});
W przypadku publicznym próbuję uzyskać dowolny folder / plik wewnątrz tego katalogu poprzez var extname = mypath.extname (ścieżka); Podobny do podanego przeze mnie linku.
Ale w tej chwili „extname” jest puste, gdy go piszę.
Czy ktoś może doradzić, co mogę dodać lub dodać tutaj? Wiem, że można to łatwo zrobić w Expressie, ale chciałbym wiedzieć, jak osiągnąć to samo, opierając się tylko na Node.
Doceniam każdą pomoc na ten temat.
Z góry dziękuję.