我正在尝试学习 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() 示例结合起来,让网络服务器允许访问我的公共目录中的任何文件,这样我就可以渲染引用外部 js 和 css 文件的 html 文件.
我的 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.js 来实现相同的目标。
我很感激这方面的任何帮助。
提前致谢。