Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web applications Node.js应用程序能否具有静态URL?_Web Applications_Node.js_Static Linking - Fatal编程技术网

Web applications Node.js应用程序能否具有静态URL?

Web applications Node.js应用程序能否具有静态URL?,web-applications,node.js,static-linking,Web Applications,Node.js,Static Linking,因此,我经常听说Node.js和javascript web应用程序。我所知道的例子往往更像本地应用程序,而不是web应用程序,因为静态URL不可用。他们的网页似乎不是可以链接的专用网页 我的问题是……如果静态页面(URL)的存在对node.js应用程序至关重要,那么在node.js中构建一个web应用程序是否明智(例如,想想你需要如何链接到tweet、ebay列表或wordpress帖子) 谢谢 Eddie这个答案是针对静态页面和文件的,因为node.js中的静态URL并不是一个真正的问题,下

因此,我经常听说Node.js和javascript web应用程序。我所知道的例子往往更像本地应用程序,而不是web应用程序,因为静态URL不可用。他们的网页似乎不是可以链接的专用网页

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

谢谢


Eddie

这个答案是针对静态页面和文件的,因为node.js中的静态URL并不是一个真正的问题,下面将讨论这个问题

如果要构建一个webapp,只使用node.js而不使用任何框架是一个非常糟糕的主意。然而,node.js有很多很好的webframeworks,它们让生活变得更加轻松。如果你已经安装了,它们也很容易包括在内

我只对MVC类型的web框架有经验,但如果您以前有过MVC类型的web框架的经验,那么创建web应用程序就非常容易了

根据我的经验,确实没有办法为node.js中内置的静态页面提供服务。然而,构建一个能够服务于静态页面的控制器非常简单

下面是一个使用express.js的示例

server.js

...    
app.get('/content/*', controllers.content.getfile);
...
这将创建一个路由,捕获每个指向
content
目录的url,并将其定向到内容控制器中的action 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文件。

Hmm。您提到,您不建议在没有框架的情况下使用node.js来构建web应用程序。我认为node.js是一个js框架。至少wikipedia是这么告诉我的……”Node.js是一个事件驱动的I/O框架,用于Unix类平台上的V8 JavaScript引擎。@Eddie Node.js主要提供V8和系统其他部分(套接字、文件io等)之间的桥梁。此外,它还有一个http库,因此您不必自己处理http(因为http很难). 但是,如果你想以任何方式高效地构建一个webapp,你就需要额外的框架(express.js),这样你就不必自己编写所有的管道代码,不管是路由还是其他方面。这是另一层抽象。明白了……非常感谢奥斯卡!