miércoles, 2 de enero de 2019

Probando NodeJS

Probando NodeJS

Probando NodeJS sobre editores Online.

Node.js® es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome; según Google, Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor basado en el lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google.

Documentación de W3Schools:

Algunos editores NodeJS:
https://repl.it/repls/SpryChiefGenericsoftware
https://www.katacoda.com/courses/nodejs/playground

Empecemos con el código! Tengamos en cuenta que guardamos los archivos como <nombre_archivo>.js, y luego corremos la instrucción node <nombre_archivo>.js para que funcione correctamente, además de usar el puerto 8080 (lo puedes cambiar siempre y cuando uses correctamente el enlace con el puerto cambiado).

Vamos a generar un texto plano desde la función createServer linealmente:

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, 'Test en Node.JS', {'Content-Type': 'text/html'});
res.end('Hola Mundo! Test en Node.JS!');
}).listen(8080);


Ahora generemos código HTML (createServer lo usamos luego para generar el log en la consola):

var http = require('http');

var requestListener = function (req, res) {
res.writeHead(200, 'WebPage de Test en Node.JS', {'Content-Type': 'text/html'});
res.write('<h1>Hola Mundo!</h1>');
res.write('<h2>WebPage de Test en Node.JS</h2>');
res.write('<hr />');
res.write('<p>Hecho con Node.JS.</p>');
return res.end();
};

var server = http.createServer(requestListener);
server.listen(8080, function() { console.log('Listening on port 8080')});



También podemos usar API's externas. En este caso uso CORS Anywhere (la opción online), un Open API hecha por Rob Wu (https://cors-anywhere.herokuapp.com/), que elimina las políticas de CORS del navegador al hacer un call a un enlace externo (tener en cuenta que se define el encabezado en el cliente, si es que uso alguna política de Token).
El enlace que voy a usar, https://www.google.com/search?q=games, pero de la forma
https://cors-anywhere.herokuapp.com/<enlace_a_utilizar>

Veamos (en el código hay algunas anotaciones importantes):

var http = require('http');

var requestListener = function (req, res) {
res.writeHead(200, '
AngularJS Local Call Test', {'Content-Type': 'text/html'});
// **********
// Note 1: I didn't keep comma operator usage inside res.write(...)! Change this please!
// **********
res.write('<!DOCTYPE html>');
res.write('<html>');
res.write('<head>');
res.write('<title>AngularJS Local Call Test</title>');
res.write('<script src="angular.min.js"></script>');
res.write('<script>');

// **********
// Note 2: I used a local AngularJS v1.2.32! Save it to Server!
// **********
res.write('var app = angular.module('myApp', []);');
res.write('app.controller('myCtrl', function($scope, $http) {');
res.write('$http.get("AppData.html").then(function (response) {');
res.write('$scope.dataCall = response.data;');
res.write('})');
res.write('.catch(function(response) {');
res.write('$scope.dataCall = "Error!";');
res.write('});');
res.write('var sURL = 'https://cors-anywhere.herokuapp.com/https://www.google.com/search?q=games';');
res.write('var req = {');
res.write('method: 'GET',');
res.write('url: sURL,');
res.write('headers: {');
res.write(''Authorization': 'Negotiate', ');
res.write(''Access-Control-Allow-Headers': 'Content-Type,X-Requested-With,Authorization,Origin,Access-Control-Allow-Origin,Accept',');
res.write(''Access-Control-Allow-Origin': '*',');
res.write(''cache-control': 'no-cache',');
res.write(''X-PINGOTHER': 'pingpong'');
res.write('}');
res.write('};');
res.write('$http.get(sURL, req).then(function (response) {');
res.write('$scope.WebAPICall = response.data;');
res.write('})');
res.write('.catch(function(response) {');
res.write('$scope.WebAPICall = "Error!";');
res.write('});');
res.write('});');
res.write('</script>');
res.write('</head>');
res.write('<body>');
res.write('<h1>AngularJS Local Call Test</h1>');
res.write('<h2>Fill data from a string HTML file.</h2>');
res.write('<hr />');
res.write('<div ng-app="myApp" ng-controller="myCtrl">');
res.write('webData: {{ dataCall }}');
res.write('<br />');
res.write('<br />');
res.write('webapiData: {{ WebAPICall }}');
res.write('</div>');
res.write('</body>');
res.write('</html>');

return res.end();
};

var server = http.createServer(requestListener);
server.listen(8080, function() { console.log('Listening on port 8080')});


Espero que les sea de utilidad!