假设我有服务器。加载包含javascript库的HTML文件的客户端将使浏览器执行该脚本。这里的问题是,如果客户端的计算机很慢,处理将花费很长时间。
所以我想将处理移到服务器端。但是,我不想将整个javascript库重写为另一种语言,而只是想在服务器上运行javascript。
谷歌搜索“服务器端javascript”将我引导到Node.JS,在我的想象中,它有能力这样做。但是,我找不到一个能够做到这一点的教程。这是否意味着没有简单的方法可以做到这一点?例如,因为javascript脚本可能包含DOM特定的东西,例如document.getElementById()
,这在服务器端没有多大意义。
答案 0 :(得分:2)
简单地将JS从客户端处理转移到服务器是没有简单的方法。
您需要将代码分解为必须在浏览器上运行的代码(例如,假设您不希望浏览器加载全新的页面,DOM操作)和代码可以在服务器上运行。
然后,您需要提供一种在服务器和浏览器之间传递数据的方法,这通常通过HTTP(使用Ajax)完成。
当您从客户端获取输入时,您需要在HTTP请求中将其发送到服务器(而不是仅将其作为参数传递给函数)。服务器需要读取HTTP请求,处理它并发出HTTP响应。
然后,Ajax回调需要解析响应并运行任何客户端逻辑(例如DOM更新)作为响应。
请注意,网络通信时间会影响性能。
答案 1 :(得分:0)
您不能以这种方式“合并”客户端和服务器。您所能做的就是处理服务器上的数据,只需将其显示在客户端中,无需进一步处理。也许您应该了解有关HTTP以及如何将网站发送给客户端的知识。没有任何额外的技巧,如websockets,comet或ajax轮询,您在发送初始网站后无法访问客户端。甚至可以将数据发送到客户端。
当你想坚持使用Javascript时,Node.js是个不错的选择。但是,即使您需要将要处理的数据发送到服务器,也需要在那里处理并以JSON或“显示就绪”HTML格式发回处理过的数据。