Node.js阻止Bootstrap?
我对Node.js和JavaScript一般都很新,但我想用尽可能少的开销建立一个网站。
我想用Node.js和Bootstrap来实现这一点。
这是我的server.js文件:
var http = require('http'); var fs = require("fs"); http.createServer( //This function decides which content type to use for wich type of request. //This is also used to restrict the type of files that a user is allowoed to request. function(request, response) { //For debugging console.log(request.connection.remoteAddress.toString() + " requested the url " + request.url.toString()); if(/^\/[a-zA-Z0-9\/]*.css$/.test(request.url.toString())){ //Send the requested file if it end with .css sendFileContent(request, response, request.url.toString().substring(1), "text/css"); } else if(/^\/[a-zA-Z0-9\/]*.js$/.test(request.url.toString())){ //Send the requested file if it end with .js sendFileContent(request, response, request.url.toString().substring(1), "text/javascript"); } else { //Answer any other request with the index.html file, because this is a single page application. sendFileContent(request, response, "index.html", "text/html"); } } ).listen(80); function sendFileContent(request, response, fileName, contentType){ fs.readFile(fileName, function(err, data){ if(err){ response.writeHead(404); //TODO: Better 404 page! response.write("Not Found!"); console.log(request.connection.remoteAddress.toString() + " received a 404 error"); } else{ response.writeHead(200, {'Content-Type': contentType}); response.write(data); } response.end(); }); }
它运作良好。 如果我将一个脚本添加到html文档中,例如,在其中使用document.write()
,它将显示在页面上。 现在对于Bootstrap,我看到你只需要四个文件,通常是通过CDN或webpack或bower等工具提供的。 所以我刚刚下载了四个文件bootstrap.min.js,bootstrap.min.css,jquery.min.js和popper.js ,并将它们放在其余文件旁边的脚本文件夹中。 当然,我使用一个相对路径,如scripts/bootstrap/js/bootstrap.min.js
而不是CDN链接。
运行Node.js服务器时,我可以看到文件被请求并成功发送 ,但不知何故引导外观(但一切都可见)。
这是我正在使用的HTML文档(index.html):
Index This is an alert!
现在,这是一个奇怪的部分:手动打开index.html文件会导致所有引导元素的正确显示。 这就是为什么我总结它与Node.js有关。
有谁知道如何解决这一问题?
你的正则表达式与你的CSS文件名不匹配,所以它提供index.html
而不是实际的CSS。
因为您使用的是.min.css
文件,所以需要查找.
在文件名中,除了扩展名之外:
if(/^\/[a-zA-Z0-9\/.]*.css$/.test(request.url.toString())){ // ^
这同样适用于您的JavaScript。