2012-04-15 41 views
10

Antes que nada, soy nuevo en nodejs y, en segundo lugar, a continuación mi pregunta. Cómo incluir el módulo de red nodejs en js que se carga en html ??¿Cómo incluir módulos nodejs en archivos html?

Mi archivo js tiene este aspecto.

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); 
}); 

Y mi archivo html está por debajo

<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> 

Cuando ejecuto el archivo HTML en el navegador se da por debajo de error

Uncaught ReferenceError: require is not defined

mientras que si corro directamente el archivo js en nodejs (como este "node sample.js" usando la línea de comando, entonces funciona bien.

Gracias de antemano.

+7

NodeJS se ejecuta en el ** servidor **. La secuencia de comandos dentro de los archivos HTML se ejecuta en el ** cliente **. No incluye código de servidor en el cliente. En cambio, envía * mensajes * al código del servidor del cliente e interpreta los resultados. –

Respuesta

2

Para aclarar lo que dijo @ T.J.Crowder en el comentario: Lo que estás tratando de hacer es imposible.

NodeJS es un marco del lado del servidor. El Javascript que escribes en NodeJS se ejecuta en el servidor. El Javascript que escribe para sus páginas HTML se ejecuta en el cliente. El cliente y el servidor no pueden llamar a los métodos de los demás directamente. Para esto se utilizan AJAX y otras técnicas de comunicación cliente-servidor asíncronas.

+2

Estaría agradecido si puede proporcionar algún enlace a tales ejemplos donde pueda encontrar dicha comunicación entre servidor/cliente. –

+2

https://www.google.com/search?q=ajax+with+node+js –

11

NodeJS se ejecuta en el servidor . La secuencia de comandos dentro de los archivos HTML se ejecuta en el cliente . No incluye código de servidor en el cliente. En cambio, envía mensajes al código del servidor desde el cliente e interpreta los resultados. Entonces, la forma estándar de hacerlo es definir un recurso en el servidor que genera el contenido o los datos que desea generar, y recuperar ese contenido o datos del cliente, utilizando solo la carga normal de la página o "ajax" (aunque estos días , la mayoría de las personas no usa la "x" [XML] en "ajax" [algunas todavía lo hacen], usan JSON, texto o HTML).

+0

¿Puede proporcionar algún enlace a tales ejemplos en los que puedo encontrar dicha comunicación entre el servidor/cliente –

+1

@FarooqArshed: es difícil hacer una la búsqueda se relaciona con la programación web sin tropezar con ejemplos de ajax. Literalmente sería un flaco favor elegirlos por ti. –

+0

@ tj-crowder Si tiene un módulo que desea usar en el back-end (a través de node.js) y también en el front-end (con script en html), no desea mantener dos versiones: solo quiero tener un solo archivo .js para ambos casos. El problema es que la versión del nodo tiene un export/require que desencadena errores en el código del cliente. Ver [esta pregunta] (http: // stackoverflow.com/questions/14532071/including-js-files-with-html-and-node-js) – wcochran

1

La razón "requieren no está definido" es porque "requieren" es una palabra clave de node.js, pero no es una palabra clave en el navegador.

Node.js es una máquina virtual (o contexto en ejecución) para javascript, el navegador también es una máquina virtual para javascript. Pero son muy diferentes. No puede usar una palabra clave admitida en una máquina virtual en otra máquina virtual, al igual que puede usar C/C++ en Windows y Linux, pero hay muchas bibliotecas que están solo en Linux o solo en Windows.

Cuestiones relacionadas