Edd*_*die 4 web-applications static-linking node.js
所以我一直听到很多关于Node.js和javascript网络应用的信息.我所知道的示例往往更像本机应用程序而不是Web应用程序,因为静态URL不可用.它们似乎不是可以链接到的专用页面.
我的问题是......如果静态页面(URL)的存在对于该应用程序至关重要,那么在node.js中构建Web应用程序是否明智(例如;想想如何需要链接到推文或ebay列表或者wordpress帖子).
谢谢!
埃迪
这个答案适用于静态页面和文件,因为静态URL对于node.js来说并不是真正的问题,并且它在快递js指南中有所介绍.
如果你要构建一个webapp,那么只使用没有任何框架的node.js是一个非常糟糕的主意.但是,node.js有很多优秀的webframeworks,可以让生活变得更轻松.如果您已经安装了NPM,那么它们也非常容易包含在内.
我只有使用express.js的经验,但如果你以前有任何MVC类型的web框架经验,那么创建webapps真的很容易.
根据我的经验,确实无法提供内置于node.js的静态页面.但是,构建一个可以提供静态页面的控制器非常简单.
以下是使用express.js的示例.
server.js
...
app.get('/content/*', controllers.content.getfile);
...
Run Code Online (Sandbox Code Playgroud)
这将创建一个路径,捕获进入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();
});
});
}
}
...
Run Code Online (Sandbox Code Playgroud)
内容控制器中的此操作getfile将查找内容目录中URL中指定的文件,并将其提供给客户端.它requires是你可以用NPM获得的哑剧库.
这样可以在/ content /文件夹中使用静态文件.如果您愿意,可以使路由捕获每个未捕获的URL并从路由中查找静态文件.但是,您必须设置某种过滤器,以便您不能只访问server.js文件.
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |