Maison  >  Article  >  interface Web  >  Une approche novice pour créer un serveur Web à l'aide de nodejs

Une approche novice pour créer un serveur Web à l'aide de nodejs

不言
不言original
2018-09-14 17:22:291851parcourir

Ce que cet article vous apporte concerne la façon dont les novices construisent des serveurs Web avec nodejs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Nodejs construit un serveur Web simple

1.1 Introduction

Node.js est une plate-forme basée sur le runtime JavaScript Chrome. En fait, il s'agit d'une adaptation de. Google Chrome Le moteur V8 est encapsulé et est principalement utilisé pour créer des applications réseau rapides et évolutives.

En d'autres termes, le Javascript du navigateur est l'analyse du code js du navigateur, tandis que Node.js est l'analyseur de code JS côté serveur. Le code JS stocké côté serveur est analysé et appliqué par Node.js.

Remarque : bien que dans un sens, Nodejs et js soient le même produit, leur écriture et leur utilisation sont différentes, mais le fait est que nodejs est du côté du serveur de portée, js est uniquement du côté du navigateur de portée, js Il peut pointer vers le navigateur, mais nodejs ne peut pas pointer vers le navigateur, donc certaines API sont différentes.

De même : js est un langage faiblement typé, donc nodejs est également un langage faiblement typé. Il y aura des écarts dans l'algorithme du langage si vous développez un système bancaire ou un système de paiement, n'utilisez pas nodejs. (nodejs convient aux applications gourmandes en E/S, pas aux applications gourmandes en CPU.)

Types de modules 1.2node

Les types de modules sont :   

1) Modules natifs officiellement fournis
global, util, querystring, url, buffer, fs, http,
2) Modules tiers
mysql, oracle, express
3) Modules personnalisés
Module de fichiers et module de répertoire

1.3 Modules natifs couramment utilisés - principaux points de difficulté

1) Le module querystring est utilisé pour traiter la chaîne de requête dans l'url de la requête http
var obj=qs.parse(str); Analyser la chaîne en un objet js
var str=qs.parse(obj); Convertir l'objet js en une chaîne de requête

2) Le module url est utilisé pour analyser une adresse de requête http et obtenir chaque Different Part
var obj = url.parse(str) Analyse une chaîne d'URL en un objet
var obj = url.parse(str,true) Analyse une chaîne d'URL en un objet et convertit la chaîne de requête est également analysé dans un objet

3) tampon Le tampon est essentiellement une zone de mémoire utilisée pour stocker temporairement des données à utiliser dans le futur (il peut s'agir de nombres, de chaînes, d'images binaires, d'audio et de vidéo, etc.),
Cette zone devient le "cache". ******Les objets globaux ne nécessitent pas de références******

//创建一个大小为10字节的缓冲区
var buf1 = Buffer.alloc(10); //alloc:分配
console.log(buf1);
var buf2 = Buffer.alloc(1024*3); //alloc:分配3kb大小的缓冲区
console.log(buf2);
var buf3=Buffer.from(['a','b','c']);
console.log(buf3);
//使用一个字符串创建一个缓冲区
var buf4=Buffer.from('abcd');
console.log(buf4);
var buf5=Buffer.from('一二三文');
console.log(buf5);
//把缓冲区的内容转换为字符串
console.log(buf5.toString());

4) module de système de fichiers fs
Le module fs fournit les fonctions d'ajout, de suppression, de modification, de vérification, de lecture et d'écriture de fichiers/répertoires dans le système de fichiers.

//同步读取文件中的内容
var data=fs.readFileSync(file);
//同步向文件中写出内容(删除已有内容)
fs.writeFileSync(file,str/buf);
//同步向文件中追加写出内容(不删除已有内容)
fs.appendFileSync(file,str.buf)
例如fs异步读写文件 不需要等待直接往下走
//异步读取文件中的内容
fs.readFile(file,funcgtion(err,data){
});
//异步向文件中写出内容(删除已有内容)
fs.writeFile(file,str/buf,function(){
});
//异步向文件中追加写出内容(不删除已有内容)
fs.appendFile(file,str.buf,function(){

});

5) Le module http peut être utilisé pour écrire des programmes clients (c'est-à-dire des navigateurs) basés sur le protocole http
peut également être utilisé ; pour écrire des programmes clients basés sur le protocole http Programme côté serveur (c'est-à-dire un serveur Web)
Écrire un serveur Web à l'aide du module http : var server=http.createServer();
1) Recevoir le message de requête http du client
2) Analyser le message de demande du client
3) Lire le fichier demandé par le client.
4) Envoyer un message de réponse http au client, le corps principal est le fichier demandé par le client

1.4 Comment construire un serveur Web

Après avoir parlé de ce qui précède, nous peut parler de la façon de créer un petit serveur Web avec nodejs ! (Regardez attentivement le code et les commentaires ci-dessous !)

const http=require('http'); 
const url=require('url');
const fs=require('fs'); //引用模块前面讲过啦每个模块都是干嘛的
//创建一个http服务器
var server=http.createServer();
//让http服务器监听指定的端口
server.listen(80);
//当客户端请求到来时,处理请求消息
server.on('request',function(req,res){
    //处理消息 req请求消息,res响应消息
    console.log('nodejs服务器接收到一个请求');
    //解析客户端发来的请求消息
    console.log('请求地址'+req.url);
    var objURL=url.parse(req.url);
    /*console.log(objURL);*/
    res.setHeader('Content-Type','text/html;charset=utf-8');
    var path = objURL.pathname;
    if(path==='/login'){
        
        /*res.write(&#39;<h1>欢迎访问登录页面</h1>&#39;);*/
        fs.readFile(&#39;./public/login.html&#39;,(err,data)=>{  
            if(err){
                res.write(&#39;<h1>报错了</h1>&#39;);
            }else{
                res.statusCode=200;
                res.write(data);
                res.end();
            }
        });
        
    }else if(path===&#39;/index&#39;){
        
        fs.readFile(&#39;./public/index.html&#39;,(err,data)=>{
            if(err)throw err;//若存在错误抛出错误,后面不执行
            res.statusCode=200;
            res.write(data);
            res.end();
            
        });
    }else{
        
        fs.readFile(&#39;./public/404.html&#39;,(err,data)=>{
            if(err){
                res.write(&#39;<h1>报错了</h1>&#39;);
            }else{
                res.statusCode=404;
                res.write(data);
                res.end();
            }
        });
    }
});

Cet article convient aux débutants. Si vous souhaitez créer un serveur Web solide, vous avez besoin de plus de connaissances sur le middleware.

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