Maison  >  Article  >  interface Web  >  Utilisez node.js pour analyser les fichiers de sortie URL vers le client

Utilisez node.js pour analyser les fichiers de sortie URL vers le client

Y2J
Y2Joriginal
2017-05-22 11:57:351931parcourir

J'ai récemment eu besoin de terminer une conception de cours et j'ai été chargé par le chef de projet (chef d'équipe) d'écrire des fonctions d'interface. L'éditeur suivant partagera avec vous à travers cet article comment construire un petit serveur en utilisant Node. je peux m'y référer

Utiliser un nœud pour construire un petit serveur (en fait, il analyse l'URL et envoie le fichier au client)

J'ai récemment eu besoin de terminer une conception de cours et a été chargé par le chef de projet (chef d'équipe) d'écrire l'interface, mais j'ai toujours eu l'impression que je voulais seulement écrire le front-end. Il manque quelque chose, donc je veux écrire le backend moi-même et jouer avec.

Pendant cette période, j'étais un peu confus quant au langage à utiliser. J'avais initialement prévu d'apprendre PHP, mais ensuite j'y ai réfléchi, ne serait-il pas bien d'utiliser nodejs. ? Cela consolide les fondations de js et fait d'une pierre deux coups, ce qui est génial.

Au cours du processus d'apprentissage de Node, j'ai appris à utiliser Node pour implémenter un serveur. Cela ressemble à un bon résumé des modules appris précédemment. Les quatre modules de base fs stream chemin http

sont utilisés. Le code est le suivant : (Contient un anglais approximatif commentaires veuillez me pardonner)

'use strict'
var url = require('url');
var path = require('path');
var fs = require('fs');
var http = require('http');
//get the current path
//var root = path.resolve('.');//以当前的目录为服务器的根目录
var root = path.resolve(process.argv[2] || '.');//以输入的参数作为服务器的根目录,如果没有输入参数就将当前目录作为服务器根目录
console.log('local root dir :' + root);
//create server
var server = http.createServer(function(request, response) {
  //get the path of URL
  var pathname = url.parse(request.url).pathname;
  //get the local path
  var filepath = path.join(root, pathname);
  //get the file stat and output the request file by callback function
  fs.stat(filepath, function(err, stat) {
    if(!err && stat.isFile()) {
      console.log('200' + request.url);
      response.writeHead(200);
      fs.createReadStream(filepath).pipe(response);//没有必要手动读取文件内容。由于response对象本身是一个Writable Stream,直接用pipe()方法就实现了自动读取文件内容并输出到HTTP响应。
    } else {
      console.log('404' + request.url);
      response.writeHead(404);
      response.end('404 Not Found');
    }
  });
});
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');

Pour certains d'entre eux. eux Explication de la fonction :

path.resolve() 路径寻航(这名字不错)
path.resolve([from…], to)

a une explication intéressante : cela équivaut à appeler en continu la commande cd du système

par exemple :

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
//相当于:
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile1
path.join([path1],path[2]...) 路径合并

pour tout copier Les noms sont concaténés avec path.seq, puis formatés avec normailze

par exemple :

path.join('///foo', 'bar', '//baz/asdf', 'quux', '..');
=>'/foo/bar/baz/asdf'

Puisque normalize

est mentionné, alors :

Chemin formaté path.normalize(p)
Formate les chemins qui ne sont pas conformes aux spécifications, simplifiant ainsi le traitement de divers jugements de chemin complexes parmi les développeurs

par exemple :

path.normalize('/foo/bar//baz/asdf/quux/..');
=> '/foo/bar/baz/asdf'

http.response .end() termine la réponse et indique au client que tous les messages ont été envoyés. Cette fonction doit être appelée une fois lorsque tout le contenu à renvoyer a été envoyé. Si cette fonction n'est pas appelée, le client sera dans l'état d'attente pour toujours.

Utilisation :

response.end([data], [encoding])

Les caractères à afficher après l'exécution de data end(). Si la valeur de data est spécifiée, cela signifie qu'après l'exécution de réponse.end(), , exécutera ensuite un réponse.write(data, encoding);

encodage correspondant à l'encodage des caractères des données

[Recommandations associées]

1. Tutoriel vidéo gratuit

2.

Exemple détaillé d'utilisation de JavaScript pour convertir des caractères chinois en pinyin

3

Partage de 15 expressions régulières js couramment utilisées<.>4.

Exemple détaillé d'implémentation de la barre d'outils de recherche via javascript

5.

Introduction détaillée à l'utilisation d'async et d'attente en Javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn