大佬教程收集整理的这篇文章主要介绍了分离Node.js服务器和客户端,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>服务器作为一个API,并使用@L_944_2@框架.
>客户端只是一个节点静态应用程序,它提供静态的javascript / html文件.
我想要能够彼此独立地分开,或者同时两者兼容.
这是我如何设想目录结构:
/my-app app.js /server server.js /client client.js
我想以三种不同的方式运行它:
>在一些端口上运行服务器(API)(例如3000):
@H_211_14@my-app/server> node server.js ...Server listening on localhost:3000/api
>只运行客户端(即从/ client目录提供静态文件):
@H_211_14@my-app/client> node client.js ...Server listening on localhost:4000/client
>在同一端口上运行服务器和客户端(由单个node.js实例):
@H_211_14@my-app> node app.js ...Server listening on localhost:5000
这可能在节点中,什么是正确的配置方式?
我开始如下:
///////////// // server.js ///////////// // Run the server if this file is run as script if(module.parent){ app.listen("3000/client") } ///////////// // client.js ///////////// var static = require('node-static'); var file = new(static.Server)('.'); var app = require('http').createServer(function (request,responsE) { request.addListener('end',function () { file.serve(request,responsE); }); }); if(module.parent){ app.listen("4000/client"); } ///////////// // app.js ///////////// server = require("server/server.js") server.app.listen("5000/api") client = require("client/client.js") client.app.listen("5000/client") <--- ?????
我不知道如何连接我的app.js中的客户端和服务器,以便它们都从同一端口/进程/线程等提供服务…
注意:排除代码,没有测试,可能不正确.我是node.js的新手
任何技巧赞赏
connect
(快捷的快递)服务器实例,并且当URL以public开头时,将请求路由到node-static,否则连接.
就像是
var connect = require('connect'); server = connect.createServer(); server.use('/public',client.handler_function); server.use(server.express_handler_function);
应该做.您需要在client.js中公开函数(请求,响应),以便它可以通过client.handler_function引用,并对express应用程序执行相同操作(请参阅文档).
例如,在client.js中设置函数会涉及到:
var static = require('node-static'); var file = new(static.Server)('.'); var handler = function (request,responsE); }); }; var app = require('http').createServer(handler); if(module.parent){ app.listen(4000); console.log("Server (statiC) listening on 4000") } module.exports = { handler_function: handler };
所以你可以通过做到处理程序:
var client = require('client'); // this returns the object you've set to `module.exports` in `client.js` [...] server.use('/public',client.handler_function);
其他方法
上面我详细说明的是最接近你想要的(根据你上次编辑中的澄清).还有其他选择,但是:
>在站点根目录下保留静态和快速生成的URL,例如example.com/a_statically_served_script.js和example.com/api_endpoint;首先尝试服务静态文件,如果找不到您将发送请求到基于快照的应用程序
>使用app.js脚本在不同端口(或unix域套接字)上启动两个服务器,并在其前面使用node-proxy(或类似的,甚至是Nginx / apache作为反向代理)
同根
对于第一种方法,您需要向file.serve添加错误处理程序,例如
file.serve(request,response,function(e,res) { if (e && (e.status == 404)) { // if the file wasn't found if (next) { next(request,responsE); } } }
下一个应该是client.js脚本中的一个变量,当脚本直接运行但脚本是必需的时候没有设置(查看节点中的模块和导出如何工作的文档) – 设置,下一个指的是一个函数,它需要(req,res)并将它们提供给它们来表达(看看有关如何执行此操作的快速文档).
备注
请记住,这不是一个详尽的答案:它只是一堆指向要查找的文档和可以用来解决问题的技巧.
值得记住的是,在节点中,通常由函数(请求,响应)来表示和实现请求处理程序.这个成语在connect / express中被扩展到funciton(请求,响应,下一个):这里下一个表示通过server.use()来安装到服务器的处理程序链中的下一个可用的处理函数(函数(请求,响应))处理程序).
以上是大佬教程为你收集整理的分离Node.js服务器和客户端全部内容,希望文章能够帮你解决分离Node.js服务器和客户端所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。