如何在html文件中包含nodejs模块?

时间:2012-04-15 21:36:06

标签: javascript node.js require

首先,我是nodejs的新手,其次是我的问题。 如何在js中包含nodejs net模块,这是在html中加载的

我的js文件看起来像这样。

net = require('net');
var client = net.createConnection(8000, '192.168.15.59');
client.on('connect',function(){
console.log('Connected To Server');
});
client.on('data',function(data){
console.log('Incoming data:; ' + data);
});

我的html文件在

之下
<html>
<head>
<script type="text/javascript" src="sample.js"></script>
<script type="text/javascript">
function displaymessage(message)
{
alert(message);
client.write(message, encoding='utf8')
}
</script>
</head>

<body>
<form>
<input type="text" id="msg"></input>
<input type="button" value="Click me!" onclick="displaymessage(document.getElementById('msg').value)" />
</form>
</body>
</html>

当我在浏览器中运行HTML文件时,它会给出以下错误

  

未捕获的ReferenceError:未定义require

如果我使用命令行直接在nodejs中运行js文件(比如“node sample.js”),那么它可以正常工作。

提前致谢。

3 个答案:

答案 0 :(得分:13)

NodeJS在服务器上运行。 HTML文件中的脚本在客户端上运行。您不在客户端上包含服务器代码。而是从客户端向服务器代码发送消息,并解释结果。因此,执行此操作的标准方法是在服务器上定义生成要生成的内容或数据的资源,并使用正常页面加载或“ajax”从客户端检索该内容或数据。 (虽然现在,大多数人不使用“ajax”中的“x”[XML] [有些人仍然这样做],他们使用JSON,文本或HTML)。

答案 1 :(得分:3)

澄清@ T.J.Crowder在评论中所说的内容:你要做的事情是不可能的。

NodeJS是服务器端框架。您在NodeJS中编写的Javascript是在服务器上执行的。您为HTML页面编写的Javascript在客户端上执行。客户端和服务器不能直接调用彼此的方法。这就是AJAX和其他异步客户端 - 服务器通信技术的用途。

答案 2 :(得分:1)

“require is not defined”的原因是因为“require”是node.js的关键字,但它不是浏览器中的关键字。

Node.js是javascript的虚拟机(或运行上下文),浏览器也是javascript的虚拟机。但他们却截然不同。您不能在另一个虚拟机中使用一个虚拟机支持的关键字,就像您可以在Windows和Linux上使用C / C ++一样,但有许多库只能在Linux或仅在Windows中使用。