服务器端javascript的使用是否普遍?为什么会使用它而不是任何其他服务器端脚本?是否有特定的用例使其比其他服务器端语言更好?
另外,对如何开始尝试它感到困惑,我在freeBSD上,为了运行服务器端javascript,我还需要安装什么?
它是这样的:
服务器很昂贵,但用户可以免费在浏览器中为您提供处理时间.因此,与任何足以需要运行多个服务器的站点上的客户端代码相比,服务器端代码相对昂贵.但是,有些事情你不能留给客户,比如数据验证和检索.您希望在客户端上执行这些操作,因为这意味着用户的响应时间更短,并且您自己的服务器基础架构更少,但安全性和可访问性问题意味着需要服务器端代码.
通常情况是你做两件事.您编写服务器端逻辑是因为必须这样做,但您也在javascript中编写相同的逻辑,希望能够为用户提供更快的响应,并在某些情况下为您的服务器节省一些额外的工作.这对验证代码尤其有效.
由于我们都是(大多数)程序员,我们应该立即发现新问题.开发两组相同的逻辑不仅涉及额外的工作,而且还有维护它所涉及的工作,平台产生的不可避免的错误不能很好地匹配,以及随着时间的推移实现漂移而引入的错误.
输入服务器端的JavaScript.我们的想法是您可以编写一次代码,因此相同的代码可以在服务器和客户端上运行.这似乎解决了大部分问题:您可以同时完成所有服务器和客户端逻辑的完整设置,没有漂移,也没有双重维护.当您的开发人员只需要知道服务器和客户端工作的一种语言时,这也很好.
不幸的是,在现实世界中,它并没有那么好用.问题有四方面:
页面的服务器视图仍然与页面的客户端视图非常不同.服务器需要能够执行诸如直接与数据库交谈之类的事情,这些数据库不应该从浏览器完成.浏览器需要执行诸如操作与服务器不匹配的DOM之类的操作.
您无法控制客户端的javascript引擎,这意味着您的服务器代码和客户端代码之间仍然存在重要的语言差异.
数据库通常是比Web服务器更大的瓶颈,因此节省的成本很低.
虽然几乎每个人都知道一点点的JavaScript,没有多少开发商真正认识和理解JavaScript 好.
这些并非完全无法解决的技术问题:您将服务器支持的语言限制为大多数浏览器都支持的javascript子集,提供了解此子集的IDE和服务器端扩展,制定有关页面结构的规则最小化DOM问题,并提供一些锅炉板javascript包含在客户端,以使平台更好用.结果类似于Aptana Studio/Jaxer,或者最近的Node.js,这可能非常好.
但并不完美.在我看来,有太多的陷阱和很少的兼容性问题,使这真的很闪耀.最终,与开发人员的时间相比,额外的服务器仍然很便宜,并且大多数程序员使用javascript以外的其他东西都能够提高工作效率.
我真的很想看到的是部分服务器端的JavaScript.当请求页面或提交表单时,服务器平台会在javascript 中请求验证,可能作为Web服务器的插件完全独立于其余部分,但响应是使用您选择的平台构建的.
我认为使用服务器端Javascript的一种非常酷的用法,几乎不经常用于数据验证.有了它,您可以编写一个javascript文件来验证表单,在客户端检查它,然后在服务器端再次检查它,因为我们不应该信任客户端上的任何内容.它可以让您保持验证规则DRY.非常方便.
另见:
服务器端的Javascript会起飞吗?哪种实施最稳定?
何时以及如何使用服务器端JavaScript?