网络服务器上的Javascript与Nodejs对比SublimeText

时间:2017-08-03 11:03:13

标签: javascript node.js

使用Javascript入门。需要编辑器并在SublimeText上找到热门参考,所以我安装了它。好工具。
因为我想在将它放到我的服务器上之前测试/运行一些代码,所以我需要在本地测试代码。再次返回互联网,我找到了Nodejs并安装了它。到现在为止还挺好。
第一次测试:

    alert("Hello World"); 

在我的网站上运行正常,不适用于Nodejs。我后来发现我需要使用

    console.log("Hello World");

在Nodejs上.. 如果这只是一个区别,我可能应对,但我的下一次尝试

    var answer = prompt("just type in something");
由于同样的原因,

也失败了。

我认为Nodejs和webservers是不同的野兽,并且用于不同的目的,但另一方面:在将代码放入服务器之前如何测试代码?

AAAAAAHHHHH !!!这让我疯狂。更不用说SublimeText接受了两者(因此这对我没有帮助)

有没有办法让Nodejs接受与在我的服务器上运行相同的代码?

2 个答案:

答案 0 :(得分:0)

我认为你混淆了webserverbrowser

NodeJs是一个在Web服务器上执行的Javascript运行时。因此,任何与浏览器运行时环境相关的命令(如alert)都无法在那里工作。

如果用户访问执行Javascript的站点,则会在浏览器运行时环境中执行。因此alert之类的命令正在运行,但其他命令可能不起作用(如fs.readFile)。

答案 1 :(得分:0)

如果您在MDN(window.alert和window.prompt)上查看警报和提示。

您可以看到这些方法属于窗口对象。

window是一个DOM接口,见

https://developer.mozilla.org/en/docs/Web/API/Window

您遇到的问题是因为NodeJS是服务器端应用程序,因此它意味着窗口未定义,因为NodeJS没有DOM。在NodeJS中调用窗口将导致错误“窗口未定义”。

您可以在客户端上调用窗口,而不是服务器。

进一步阅读:

Why doesn't node.js have a native DOM?

要回答你的问题,有一些节点包会给NodeJS一个DOM,比如jsdom。

但是,你应该考虑是否应该使用它,因为我怀疑你只是调用了错误的方法并且你试图在服务器应用程序上编写客户端执行的代码,你应该保留客户端/服务器分离。 (根据我的经验,我只为服务器端应用程序提供了一个用于错误集成测试的DOM。)

您的网络服务器应该响应来自客户端的请求,并让您的客户端执行代码处理它。