1. Análise de abertura
Este artigo fala sobre esses três módulos juntos, porque eles não têm muito tempo e, em segundo lugar, existem dependências entre eles, para que sejam introduzidas e analisadas em sequência. Não vou dizer muita bobagem, veja o seguinte documento:
(1), "Módulo URL"
Deixe -me ter um pouco de castanha:
A cópia do código é a seguinte:
var url = requer ('url');
var queryurl = "http: // localhost: 8888/bb? nome = bigbear & memorando = helloworld";
console.log (typeof url.parse (Queryurl));
console.log (url.parse (Queryurl));
Resultados em execução:
A cópia do código é a seguinte:
objeto // typeof
{
Protocolo: 'http:',
barras: verdadeiro,
Auth: null,
Anfitrião: 'Localhost: 8888',
PORT: '8888',
Nome do host: 'localhost',
Hash: null,
Pesquisa: '? Nome = BigBear & Memo = Helloworld',
Consulta: 'Nome = BigBear & Memo = Helloworld',
Pathname: '/bb',
caminho: '/bb? nome = bigbear & memorando = helloworld',
href: 'http: // localhost: 8888/bb? Nome = bigbear & memorando = helloworld'
}
Explique o seguinte:
Protocolo: Solicite Protocolo
Host: o nome do host da URL foi convertido em minúsculas, incluindo informações da porta
Auth: a parte da informação de autenticação do URL
Nome do host: a parte do nome do host do host, convertido em minúsculas
Porta: o número da porta parte do host
Pathname: o caminho da parte do URL, localizado após o nome do host antes da consulta ser solicitada
Pesquisa: a seção de sequência de consulta do URL, incluindo o ponto de interrogação no início.
Caminho: o nome do caminho e a pesquisa estão conectados.
Consulta: consulte a parte do parâmetro (parte da string após o ponto de interrogação) ou use querystring.parse () para analisar o objeto retornado.
Hash: a parte seguinte do URL " #" (incluindo o # símbolo)
API suplementar: "url.format (urlobj)"
Função: Digite um objeto URL para retornar a sequência de URL formatada.
(2), "Módulo de Querystring"
O módulo "Querystring" é usado para converter strings de parâmetros de URL e objetos de parâmetro entre si, como mostrado abaixo:
A cópia do código é a seguinte:
var url = requer ('url');
var qs = requer ('querystring');
var queryurl = "http: // localhost: 8888/bb? nome = bigbear & memorando = helloworld";
queryurl = url.parse (Queryurl) .Query;
console.log (Queryurl);
console.log (qs.parse (Queryurl));
Os resultados da operação são os seguintes:
A cópia do código é a seguinte:
Nome = BigBear & Memo = Helloworld
{
Nome: 'BigBear',
memorando: 'Helloworld'
}
API suplementar:
querystring.Stringify (OBJ, [SEP], [Eq]) ----- serialize um objeto a uma sequência de consulta.
Você pode escolher se deve substituir o divisor padrão ('&') e o alocador ('=').
querystring.Stringify ({foo: 'bar', baz: 'qux'}, ';', ':') // retorna a seguinte string 'foo: bar; baz: qux'
querystring.parse (str, [SEP], [eq], [options]) ------ Desserialize uma sequência de consulta em um objeto. Você pode escolher se deve substituir o divisor padrão ('&') e o alocador ('=').
O objeto Opções pode conter um atributo maxkeys (o padrão é 1000), que pode ser usado para limitar o número de teclas processadas. Configurar para 0 pode remover o número de teclas.
Exemplo: querystring.parse ('foo = bar & baz = qux & baz = quase corge') // {foo: 'bar', baz: ['qux', 'tropeça'], corge: ''}
(3), "Módulo de caminho"
Este módulo contém um conjunto de ferramentas para processar e converter caminhos de arquivo. Quase todos os métodos convertem apenas seqüências de caracteres, e o sistema de arquivos não verificará se o caminho é verdadeiro ou não.
Vamos primeiro ter uma castanha simples:
A cópia do código é a seguinte:
var url = requer ('url');
var qs = requer ('querystring');
var path = requer ("caminho");
var queryurl = "http: // localhost: 8888/bb? nome = bigbear & memorando = helloworld";
var root = path.basename (Queryurl);
console.log (root); // bb? nome = bigbear & memorando = helloworld
Retorna a última parte do caminho, dividida com "/"
A cópia do código é a seguinte:
var url = requer ('url');
var qs = requer ('querystring');
var path = requer ("caminho");
var queryurl = "http: // localhost: 8888/bb? nome = bigbear & memorando = helloworld";
var root = path.basename (Queryurl);
console.log (root); // bb? nome = bigbear & memorando = helloworld
var ext = path.extName (root);
console.log (ext || "não ex -nome!"); // não ex -nome!
Devido a muitas APIs, as listas acima listam apenas algumas usadas, e todos precisam ler o documento com cuidado.
2. Chesttanha abrangente
Descrição do cenário ---- O servidor recebe solicitações de diferentes situações e executa processamento diferente através de "URL". O código é o seguinte:
(1), crie "index.html"
A cópia do código é a seguinte:
<! doctype html>
<html>
<head>
<title> bigbear </title>
<meta content = "ie = 8" http-equiv = "x-ua compatível com"/>
<meta http-equiv = "content-type" content = "text/html; charset = utf-8">
<style type = "text/css">
div {
Margin-top: 50px;
largura: 100%;
margem: 0px;
Altura: 120px;
altura da linha: 120px;
Cor: #ffff;
Size da fonte: 22px;
Antecedentes:#ff9900;
Alinhamento de texto: centro;
}
</style>
<script src = "index.js"> </script>
</head>
<Body>
<div> Olá, Big Bear! </div>
</body>
</html>
(2), crie "index.js"
alerta ("Olá BB!"); // apenas uma frase de código para testar
(3) Crie "Server.js"
A cópia do código é a seguinte:
var http = requer ("http");
var fs = requer ('fs');
var url = requer ('url');
var path = requer ("caminho");
http.createServer (função (solicitação, resposta) {
var método = request.method;
método = métod.TolowerCase ();
var filename = path.basename (request.url);
var extName = path.extName (nome do arquivo);
var root = "./";
if ("get" == método) {
if (extName) {
fs.readfile ("./" + nome do arquivo, "utf-8", function (erro, dados) {
se (erro) lançar erro;
Response.writehead (200, {
"Tipo de conteúdo": {
".css": "text/css",
".js": "Aplicativo/JavaScript"
} [extName]
});
resposta.write (dados);
resposta.END ();
});
}
outro{
fs.readfile (root + "index.html", "utf-8", function (erro, dados) {
se (erro) lançar erro;
Response.writehead (200, {
"Tipo de conteúdo": "texto/html"
});
resposta.write (dados);
resposta.END ();
});
}
}
else if ("post" == request.url) {
// Postagem de manuseio aqui
}
}). Ouça (8888);
console.log ("servidor da web em execução, porta em ---> 8888");
Execute o Node Server.js.
Três, vamos resumir
(1) Entenda a conexão entre os três módulos acima e use -os de maneira flexível.
(2) Proficiente no uso das três APIs relacionadas aos módulos "URL, Querystring e Path".
(3) e, finalmente, enfatize: entenda a intenção de código no exemplo acima, constantemente refator e resumisse.