1. Análisis de apertura
Este artículo habla sobre estos tres módulos juntos porque no tienen una longitud muy larga y, en segundo lugar, hay dependencias entre ellos, por lo que se introducen y analizan en secuencia. No diré muchas tonterías, consulte el siguiente documento:
(1), "Módulo URL"
Déjame tener un poco de castaño:
La copia del código es la siguiente:
var url = require ('url');
var queryurl = "http: // localhost: 8888/bb? name = bigbear & Memo = helloworld";
console.log (typeof url.parse (queryurl));
console.log (url.parse (queryurl));
Resultados de ejecución:
La copia del código es la siguiente:
objeto // typeof
{
Protocolo: 'http:',
Clashes: Verdadero,
Auth: Null,
Anfitrión: 'Localhost: 8888',
Puerto: '8888',
nombre de host: 'localhost',
hash: nulo,
búsqueda: '? name = bigbear & memo = helloworld',
consulta: 'name = bigbear & Memo = helloworld',
RathName: '/bb',
ruta: '/bb? name = bigbear & Memo = helloworld',
href: 'http: // localhost: 8888/bb? name = bigbear & Memo = helloworld'
}
Explique de la siguiente manera:
Protocolo: protocolo de solicitud
Host: el nombre de host de URL se ha convertido en minúsculas, incluida la información del puerto
Auth: la información de la información de autenticación de la URL
nombre de host: la parte del nombre de host del host, convertido en minúsculas
Puerto: la parte del número de puerto del host
RathName: la parte de la ruta de la URL, ubicada después del nombre del host antes de que se solicite la consulta
Búsqueda: la sección de cadena de consulta de la URL, incluido el signo de interrogación al principio.
Ruta: PathName y Search están conectados.
Consulta: consulte la parte del parámetro (parte de la cadena después del signo de interrogación) o use QueryString.Parse () para analizar el objeto devuelto.
Hash: La siguiente parte de la URL " #" (incluido el símbolo #)
API complementaria: "URL.Format (Urlobj)"
Función: ingrese un objeto URL para devolver la cadena de URL formateada.
(2), "Módulo de consulta"
El módulo "QueryString" se usa para convertir las cadenas de parámetros de URL y los objetos de parámetros entre sí, como se muestra a continuación:
La copia del código es la siguiente:
var url = require ('url');
var qs = require ('QueryString');
var queryurl = "http: // localhost: 8888/bb? name = bigbear & Memo = helloworld";
queryurl = url.parse (Queryurl) .query;
console.log (Queryurl);
console.log (Qs.Parse (Queryurl));
Los resultados de la operación son los siguientes:
La copia del código es la siguiente:
nombre = Bigbear & Memo = Helloworld
{
Nombre: 'Bigbear',
Memo: 'Helloworld'
}
API complementaria:
QueryString.stringify (obj, [sep], [eq]) ----- serializa un objeto a una cadena de consulta.
Puede elegir si anular el divisor predeterminado ('&') y el asignator ('=').
QueryString.Stringify ({foo: 'Bar', Baz: 'qux'}, ';', ':') // Devuelve la siguiente cadena 'foo: bar; baz: qux'
QUERYTRING.PARSE (STR, [SEP], [EQ], [OPCIONES]) ----- Deserialice una cadena de consulta en un objeto. Puede elegir si anular el divisor predeterminado ('&') y el asignator ('=').
El objeto Opciones puede contener un atributo MaxKeys (predeterminado es 1000), que puede usarse para limitar el número de claves procesadas. Configurarlo en 0 puede eliminar el número de claves.
Ejemplo: QueryString.Parse ('foo = bar & baz = qux & baz = quux & corge') // {foo: 'bar', baz: ['qux', 'quux'], corge: ''}
(3), "Módulo de ruta"
Este módulo contiene un conjunto de herramientas para procesar y convertir rutas de archivos. Casi todos los métodos solo convierten cadenas, y el sistema de archivos no verificará si la ruta es verdadera o no.
Primero tengamos una castaña simple:
La copia del código es la siguiente:
var url = require ('url');
var qs = require ('QueryString');
ruta var = requerir ("ruta");
var queryurl = "http: // localhost: 8888/bb? name = bigbear & Memo = helloworld";
var root = Path.BaseName (QueryUrl);
console.log (raíz); // bb? name = bigbear & Memo = Helloworld
Devuelve la última parte de la ruta, dividido con "/"
La copia del código es la siguiente:
var url = require ('url');
var qs = require ('QueryString');
ruta var = requerir ("ruta");
var queryurl = "http: // localhost: 8888/bb? name = bigbear & Memo = helloworld";
var root = Path.BaseName (QueryUrl);
console.log (raíz); // bb? name = bigbear & Memo = Helloworld
var ext = path.extname (root);
console.log (ext || "¡NO EXT NOMBRE!"); // NO EXT NAME!
Debido a demasiadas API, solo unas pocas se enumeran anteriormente, y todos necesitan leer el documento cuidadosamente.
2. Chestnut integral
Descripción del escenario ---- El servidor recibe solicitudes de diferentes situaciones y realiza un procesamiento diferente a través de "URL". El código es el siguiente:
(1), cree "index.html"
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<title> bigbear </title>
<meta content = "ie = 8" http-oquiv = "x-ua-compatible"/>
<meta http-equiv = "content-type" content = "text/html; charset = utf-8">
<style type = "text/css">
div {
margen-top: 50px;
Ancho: 100%;
margen: 0px;
Altura: 120px;
Línea de altura: 120px;
Color: #ffff;
tamaño de fuente: 22px;
Antecedentes:#FF9900;
Text-Align: Center;
}
</style>
<script src = "index.js"> </script>
</ablo>
<Body>
<Div> ¡Hola, Big Bear! </div>
</body>
</html>
(2), cree "index.js"
alerta ("¡Hola BB!"); // Solo una oración de código para probar
(3) Crear "server.js"
La copia del código es la siguiente:
var http = require ("http");
var fs = require ('fs');
var url = require ('url');
ruta var = requerir ("ruta");
http.createServer (función (solicitud, respuesta) {
VAR Method = request.method;
método = método.tolowercase ();
var filename = path.basename (request.url);
var extname = path.extName (nombre de archivo);
var root = "./";
if ("get" == método) {
if (extname) {
fs.ReadFile ("./" + nombre de archivo, "UTF-8", función (error, datos) {
if (error) tirar error;
Response.Writehead (200, {
"Tipo de contenido": {
".css": "texto/css",
".js": "Aplicación/JavaScript"
} [Extname]
});
respuesta.write (datos);
respuesta.end ();
});
}
demás{
fs.ReadFile (root + "index.html", "utf-8", función (error, datos) {
if (error) tirar error;
Response.Writehead (200, {
"Tipo de contenido": "Texto/HTML"
});
respuesta.write (datos);
respuesta.end ();
});
}
}
else if ("post" == request.url) {
// manejar la publicación aquí
}
}). Escuchar (8888);
console.log ("Servidor web en ejecución, puerto en ---> 8888");
Ejecutar Node Server.js.
Tres, resumamos
(1) Comprenda la conexión entre los tres módulos anteriores y úselos de manera flexible.
(2) Competente en el uso de las tres API relacionadas con los módulos "URL, consulta y ruta".
(3), y finalmente enfatice: Comprenda la intención del código en el ejemplo anterior, refactor y resume constantemente.