在服务器端使用JavaScript,类似于PHP

4
我现在考虑用JavaScript建立我的服务器端代码,并开始在其上执行所有操作,但我想了解与PHP相比它的安全性和灵活性。同时,我也想知道它是否可以像PHP一样成功地用于开发论坛、完整网站等项目。

但它们并不真正可比。JS有其用途,但它们都是客户端的,而PHP有其用途,但它们大多数是服务器端的。这只是一个好奇的问题,还是你有什么具体的想法? - MJB
除了JavaScript可以在浏览器中被关闭之外,如果你相信一些来源,高达10%的访问者将无法使用你的网站,你还有什么意见? - John Conde
2
(参考)http://zh.wikipedia.org/wiki/服务器端JavaScript - Gordon
客户端JavaScript:http://zh.wikipedia.org/wiki/客户端JavaScript - Sarfraz
1
类似问题:https://dev59.com/8k3Sa4cB1Zd3GeqPsRlN http://stackoverflow.com/questions/160863/whats-a-good-minimal-server-side-javascript-framework - Sasha Chedygov
这个问题应该被关闭,因为它不符合当前社区标准。基于观点,缺乏重点,并寻求外部资源的建议。大多数答案仅包含链接。 - Trenton McKinney
8个回答

9

Javascript现在才开始在服务器上发挥作用,例如ServerJSnodeJS等。但是目前来说,你最好使用PHP来编写服务器端代码,而将javascript用于客户端美化。


1
啊,难道没有人记得Netscape Enterprise Server及其对服务器端JavaScript的处理吗?它领先于时代!当然,也相当可怕。 - bobince
@bobince:哦,我记得了(请看我的回答Sarfraz在我的答案上)。 - T.J. Crowder
1
我会将http://ringojs.org添加到混合中-由长期从事服务器端JS的人构建。 - oberhamsi

6
这个问题非常广泛。将其解释为“我可以在服务器上使用JavaScript吗”:
从根本上讲,当然可以,JavaScript是一种非常强大的语言,因此您可以像客户端一样在服务器端进行开发(如果您还进行客户端脚本编写,那么在服务器上使用JavaScript会带来一些明显的重用好处)。
  • 对于Apache系统,有v8cgi项目(一个FastCGI Javascript插件和连接器,使用Google的超快 V8引擎)。
  • 在基于Microsoft的系统上,IIS支持 Javascript(JScript)在服务器上直接使用(我一直在使用),它可以访问所有ActiveX内容(例如用于与数据库交互,处理文件系统等)。
  • 如果您的服务器框架是基于JVM的,则有Rhino,它是Java平台上的Javascript,并且可以访问所有(或几乎所有)可用于Java的库-例如,庞大的生态系统。
  • 除了v8cgi之外,还有一些其他基于Google V8引擎构建的项目。
  • 有一个名为chromeserver的地方可以为您完成整个堆栈(我不知道他们的后端是什么,我不会从名称中推断)。
  • Paul提到ServerJSNodeJS
  • 还有整个CommonJS项目。
Etc.等等。有一个相当丰富的Wikipedia上的列表
反对的观点是,围绕PHP建立了一个非常丰富的生态系统。除非你正在使用类似于Java平台上的Rhino或IIS上的JScript(因为它们利用的生态系统),否则在开发服务器端的Javascript时可能会发现你没有那么多的生态系统可用。我的意思是,如果你正在寻找预先构建的论坛或维基软件(例如),让我们说,你可以轻松地找到基于PHP的论坛或维基软件,但对于服务器端的Javascript却不能这样说。

@T.J. Crowder:你应该看一下客户端JavaScript:http://zh.wikipedia.org/wiki/客户端JavaScript - Sarfraz
1
@Sarfraz:当然,JavaScript在客户端方面取得了很大的成功,这是毫无疑问的。但是把它称为“客户端语言”就是非常狭隘的思维方式(并且不了解该语言的历史;自从创建以来,它就被用于服务器端)。 - T.J. Crowder

5
通常情况下,PHP和JavaScript运行在完全不同的环境中,不能直接进行比较。(虽然有一种服务器端JavaScript,但它并不普及且不能在标准的网络主机上运行。)
在JavaScript(浏览器端)中会遇到与PHP完全不同的安全问题。 引用:

我也想知道,是否可以像PHP一样成功地用它来开发论坛、完整的网站等。

不可以,使用客户端JavaScript是不行的。对于动态应用程序,您总是需要一些服务器端语言的支持,例如PHP或其他语言,如ASP、Python、Ruby、Perl等。


关于 "有一种服务器端的JavaScript,但可以说它并不是特别普及,也不能在标准的Web托管上运行。" IIS是一个非常标准、广泛使用的Web托管平台,支持Javascript已经有十年左右的时间了。另一个非常广泛使用的平台是任何JVM托管解决方案,你可以用Java编写JavaScript。虽然它还没有PHP那么普及,但在IIS和任何JVM解决方案上运行使其非常广泛可用和支持。 - T.J. Crowder
@T.J. Crowder: 但问题是,你知道有多少主机可以直接支持服务器端JavaScript吗?此外,目前还没有针对服务器端JavaScript的标准,因此每个实现都使用自己的库和API,这很烦人。 - Sasha Chedygov
@musicfreak:我的观点是,很多人现在拥有的托管套餐都支持JavaScript,但他们甚至不知道。拥有基于IIS的托管套餐?它可以直接在服务器上支持JavaScript。在Tomcat、Resin或任何其他带有JVM的托管套餐上?它也可以直接支持JavaScript。在这两者之间,我认为我们正在看超过一半的托管提供商(因为虽然Apache主导市场,但如果你看一下,提供Apache托管的公司中绝大多数也提供IIS或JVM托管)。 - T.J. Crowder
@musicfreak: (续)还有很大的改进空间,但这就是CommonJS项目(谈到标准),v8cgi项目(Google的V8引擎作为Apache的FastCGI模块)等所发挥的作用。因此,现在,今天,您可以使用Classic ASP拥有的所有内容以及服务器上Java拥有的所有内容。(而且,如果您计算JScript.Net,IIS支持访问所有.Net的“Javascript”)。未来充满希望。 :-) - T.J. Crowder
我会因为没有回答问题而投反对票,但我不能。许多托管公司不支持服务器上的JavaScript,但从概念上讲与托管PHP、Python等没有区别。 - oberhamsi
显示剩余3条评论

2
用JavaScript替换PHP,你需要服务器端的JavaScript,这方面有很多进展。Mozilla的Rhino在JVM上运行JavaScript,而谷歌似乎也正在开发自己的服务器端JavaScript框架。目前最受欢迎的实现包括:
- Helma:有几个活跃项目在使用,运行在Jetty和Rhino之上,让开发人员利用JVM的强大功能,具有自己的面向对象MVC框架。 - Project Phobos:运行在Glassfish和Rhino之上,让开发人员利用JVM的强大功能,包括NetBeans插件,并与jMaki Web UI框架集成。 - JSSP:一个非常简单的服务器端框架,类似于经典ASP、JSP和PHP。
Aptana的Jaxer曾经有很大的潜力,特别是通过将DOM引入服务器端。但现在这个项目似乎已经死了。据我所知,node.js并不像Helma和Phobos那样是一个服务器端的JavaScript框架。相反,它可以用于用JavaScript编写事件驱动的服务器(例如:编写自己的Web服务器)。

@Abbas:非常详细,那些链接也很棒 :) - Sarfraz
我认为谷歌的JavaScript框架开发已经停止了,因为那篇文章已经有3年了,而且没有任何新的消息。他们要么保密,要么就不再继续开发了。 - Sasha Chedygov

0

这可能有点离题,但实际上它可能涉及到你问题的核心:
如果你想为 Web 应用程序仅使用一种语言,你可能会想看看Haxe

它是一种跨平台语言,可以编译成 JavaScript 和 PHP 源代码以及 NekoVM 字节码。对于服务器端 JavaScript,有 NodeJS 绑定。

这样,您就不会被绑定到特定的平台上。Neko 和 PHP API 在很大程度上兼容,因此可以在两个平台上部署,可以选择 Neko 的速度和持久性或 PHP 的部署便利性。请注意,但 PHP 输出具有一定的开销,尽管常见的优化器(如 eaccelerator)会使其几乎不可见。

Haxe比 JavaScript和PHP都严格得多。这使得学习更加困难,但是它是一种更安全、更强大、最终更高效的工具。


0

是的,我的网站是用node.js编写的

使用websvr,它的Java风格具有过滤器和处理程序,在debian操作系统上托管。


-1
总之:不行。Javascript是客户端语言。为了做你所描述的事情,你需要一个服务器端语言,比如PHP。
编辑:好吧,技术上讲,在浏览器以外的其他领域实现Javascript是可能的,但这并不常见。
5年后的编辑:好吧,5年后,显然这个答案已经不准确了,随着像node.js这样的东西的流行。让这成为事物可以多么快速地改变的证明!

2
JavaScript 不是一种客户端语言。它是一种主要部署在客户端的语言。哇,这是个很大的区别。我经常在服务器端使用 JavaScript。 - T.J. Crowder
@T.J. Crowder:你本可以提出建议,JavaScript 部署在客户端上归根结底是一样的,至少不会被点踩,但有些人太过于急躁和愤怒,会继续点踩并关闭合法的问题。 - Sarfraz
由于编辑,踩转为赞。感谢您抽出时间检查评论并相应修改您的回答 :) - Matchu
@Sarfraz:我确实提出了建议。上次你称其为客户端语言时我也是这么说的。 - T.J. Crowder

-4

PHP和JavaScript是两种不同的语言,分别用于不同的功能。它们不能互相替代。你很可能需要同时使用这两种语言。JavaScript用于客户端操作,而PHP用于服务器端操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接