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

所以我一直听到很多关于Node.js和 javascript网络应用的信息.我所知道的示例往往更像本机应用程序而不是Web应用程序,因为静态URL不可用.它们似乎不是可以链接到的专用页面.

我的问题是……如果静态页面(URL)的存在对于该应用程序至关重要,那么在node.js中构建Web应用程序是否明智(例如;想想如何需要链接到推文或ebay列表或者wordpress帖子).

谢谢!

埃迪

这个答案适用于静态页面和文件,因为静态URL对于node.js来说并不是真正的问题,它在 express js guide中有所介绍.

如果你要构建一个webapp,那么只使用没有任何框架的node.js是一个非常糟糕的主意.但是,node.js有很多优秀的webframeworks,可以让生活变得更轻松.如果你已经安装了NPM,那么它们也非常容易包含在内.

我只有express.js的经验,但如果你以前有任何MVC类型的web框架经验,那么创建webapps真的很容易.

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

以下是使用express.js的示例.

server.js

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

这将创建一个路由,捕获进入内容目录的每个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中指定的文件,并将其提供给客户端.它需要你可以用NPM获得的mime库.

这样可以在/ content /文件夹中使用静态文件.如果您愿意,可以使路由捕获每个未捕获的URL并从路由中查找静态文件.但是,您必须设置某种过滤器,以便您不能只访问server.js文件.

相关文章
相关标签/搜索