Node.js应用程序可以有静态URL吗?

所以我一般都听到很多关于Node.js和javascript web应用程序的信息。 我所知道的例子往往比那些静态URL中的networking应用程序更像本地应用程序。 他们似乎并不是可以链接到的专用页面。

我的问题是…如果静态页面(URL)的存在对于该应用程序是必不可less的,那么在node.js中构build一个web应用程序是非常明智的(例如,想想如何链接到tweet或ebay列表或一个WordPress的post)。

谢谢!

埃迪

这个答案是针对静态页面和文件的,因为静态url对于node.js来说并不是真正的问题,它在快速js指南中已经介绍过了 。

如果你打算构build一个web应用程序,只使用node.js而不使用任何框架是一个非常糟糕的主意。 然而,node.js有很多很好的webframework,使得生活变得更容易。 如果你安装了NPM,它们也很容易包含。

我只有express.js的经验,但如果你有任何MVCtypes的web框架的经验,它使得创buildwebapps非常容易。

根据我的经验,确实没有办法提供内置到node.js中的静态页面。 但是,build立一个可以提供静态页面的控制器非常简单。

这里是一个使用express.js的例子。

server.js

... app.get('/content/*', controllers.content.getfile); ... 

这将创build一个path,捕获到达content目录的所有url,并将其引导到内容控制器的动作getfile,即www.yourdomain.com/content/style.css

controllers.js

 ... exports.content = { getfile : function(req,res){ var uri = url.parse(req.url).pathname; var filename = path.join(process.cwd(), uri); path.exists(filename, function(exists){ if(!exists){ res.writeHead(404, {"Content-Type" : "text/plain"}); res.write("Content not found"); res.end(); return; } fs.readFile(filename, "binary", function(err, file){ res.writeHead(200, {'Content-Type' : mime.lookup(filename) }); res.write(file, "binary"); res.end(); }); }); } } ... 

内容控制器中的此操作getfile将查找内容目录中的URL中指定的文件,并将其提供给客户端。 它requires你可以用NPM获得的mime库。

这使得可以在/ content /文件夹中使用静态文件。 如果您希望可以使路由捕获每个未捕获的URL并从路由中查找静态文件。 但是你必须设置一些filter,以便你不能只访问server.js文件。

Interesting Posts