Heim > Web-Frontend > js-Tutorial > Hauptteil

So erstellen Sie einen Webserver mit NodeJS

不言
Freigeben: 2019-01-02 10:02:37
nach vorne
4640 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Methode zum Erstellen eines Webservers mit NodeJS. Ich hoffe, dass er für Freunde hilfreich ist.

Das Front-End stößt beim Abrufen von Daten häufig auf domänenübergreifende Probleme. Dieses Problem kann durch die Verwendung von Nginx als Reverse-Proxy gelöst werden. Nginx ist jedoch ein Middleware-Proxy und die von verschiedenen Entwicklern bereitgestellten Webserveradressen können unterschiedlich sein, sodass die Konfiguration von Nginx nicht universell sein kann.

Wenn Sie einen Client-Proxy haben und ihn mit dem Quellcode des Projekts einreichen können, können Sie die Notwendigkeit von Proxy-Konfigurationen für verschiedene Entwickler beseitigen. webpack-dev-server ist ein solcher Client-Proxy, aber wenn das Projekt kein Webpack verwendet, gibt es keine Möglichkeit, es zu verwenden. Können Sie einen einfachen Webserver für Nicht-Webpack-Projekte nachahmen und schreiben? Unten ist der Code. Ich hoffe, ihr könnt mich kritisieren und korrigieren.

const request = require('request');
const express = require('express');
const path = require('path');

const app = express();

// 代理配置
const proxyTable = {  
    '/api': {
        target: 'http://localhost/api' 
    }
};
app.use(function(req, res,next) {  
    const url = req.url;  
    if (req.method == 'OPTIONS') {      
      console.log('options_url: ', url); 
      
       //  设置cors 跨域
      // res.header("Access-Control-Allow-Origin", req.headers.origin || '*');
      // res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
      // res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

      // 设置 cookie
      // res.header("Access-Control-Allow-Credentials", true);
      
      res.status(200).send('OK');     
      return;
    } 
    // console.log('req_url: ', url);
    next();
});

// 设置静态目录
app.use(express.static(path.join(__dirname, 'static')));

app.use('/', function(req, res) {  
      const url = req.url; 
      const proxy = Object.keys(proxyTable);  
      let not_found = true; 
      for (let index = 0; index < proxy.length; index++) {    
          const k = proxy[index];    
          const i = url.indexOf(k);   
          if (i >= 0) {     
              not_found = false;     
              const element = proxyTable[k];      
              const newUrl = element.target + url.slice(i+k.length);
              req.pipe(request({url: newUrl, timeout: 60000},(err)=>{
                  if(err){          
                      console.log('error_url: ', err.code,url);           
                      res.status(500).send('');
                  }     
              })).pipe(res);      
              break;
          } 
      }  
      if(not_found) {    
          console.log('not_found_url: ', url);
          res.status(404).send('Not found');
      } else {    
          console.log('proxy_url: ', url);
      }
});

// 监听端口      
const PORT = 8080;
app.listen(PORT, () => {  
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
Nach dem Login kopieren

PS: statisch eine statische Seite erstellen

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Webserver mit NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!