Node.js app.js使css和js可用

我想知道怎样才能让我的app.js,以便我可以从我的index.html或任何其他HTML页面放置在我的“公共”文件夹中访问任何.js或.css文件。 我有.css和.js文件放在“公共”文件夹内的不同的“CSS”或“JavaScript”文件夹,但我真的不知道如何使我的index.html连接到他们没有CSS和JavaScript直接放置在公众没有子文件夹的文件夹。

是否有可能使我的所有文件在“公​​共”文件夹可以连接,而无需我一直将它们添加到app.js?

这是app.js:

var http = require('http'), path = require('path'), fs = require('fs'), extensions = { ".html" : "text/html", ".css" : "text/css", ".js" : "application/javascript", ".png" : "image/png", ".gif" : "image/gif", ".jpg" : "image/jpeg" }; function getFile(filePath,res,page404,mimeType){ fs.exists(filePath,function(exists){ if(exists){ fs.readFile(filePath,function(err,contents){ if(!err){ res.writeHead(200,{ "Content-type" : mimeType, "Content-Length" : contents.length }); res.end(contents); } else { console.dir(err); }; }); } else { fs.readFile(page404,function(err,contents){ if(!err){ res.writeHead(404, {'Content-Type': 'text/html'}); res.end(contents); } else { console.dir(err); }; }); }; }); }; function requestHandler(req, res) { var fileName = path.basename(req.url) || '/index/index.html', ext = path.extname(fileName), localFolder = __dirname + '/public/', page404 = localFolder + '404.html'; if(!extensions[ext]){ res.writeHead(404, {'Content-Type': 'text/html'}); res.end("<html><head></head><body>The requested file type is not supported</body></html>"); }; getFile((localFolder + fileName),res,page404,extensions[ext]); }; http.createServer(requestHandler) .listen(process.env.PORT, process.env.IP); 

任何帮助将不胜感激,只是告诉我,如果你需要我列出我的文件夹结构(虽然我不知道为什么这将是必要的…):)

您可以使用ExpressJS提供静态文件

  • 使用快递服务静态文件最简单的方法是什么?
  • node.js / express:发送静态文件(如果存在)

那么,你可以按照其他的意见,并使用其他手段来为您的静态文件,Nginx可能更适合直接静态文件服务,快递或节点静态或任何数量的模块比我们大多数人做得好得多扔在一起做静态文件的“networking服务器”部分。 如果你正在寻找出色的性能,那么dynamic+ Nginx的静态结合可能是最好的组合,使用stream行的服务器框架的纯节点是一个稍微简单一些,几乎是一个不错的select。

但是这是你的代码中的实际问题:

 var fileName = path.basename(req.url) || '/index/index.html', // etc 

path.basename()去除所有的目录信息,只是返回文件名给你。 你想要更类似于以下的东西:

 // you should refactor and expand on this one-liner where it makes sense var urlpath = require('url').parse(req.url).pathname; var fileName = urlpath || '/index/index.html', // etc