복붙노트

[NODEJS] 간단한 웹 서버로 Node.js를 사용

NODEJS

간단한 웹 서버로 Node.js를 사용

해결법


  1. 1.간단한 Node.js를 서버는 단지입니다 :

    간단한 Node.js를 서버는 단지입니다 :

    $ npm install http-server -g
    

    이제 다음 명령을 통해 서버를 실행할 수 있습니다 :

    $ cd MyApp
    
    $ http-server
    

    당신이 NPM 5.2.0 이상을 사용하는 경우, 당신은 NPX로를 설치하지 않고 HTTP 서버를 사용할 수 있습니다. 이것은 생산에 사용하지 않는 것이 좋습니다 있지만, 빨리 로컬 호스트에서 실행중인 서버를 얻을 수있는 좋은 방법입니다.

    $ npx http-server
    

    또는, 당신은 당신의 웹 브라우저를 열고 CORS 요청을 가능하게하는이 시도 할 수 있습니다 :

    $ http-server -o --cors
    

    추가 옵션을 보려면 GitHub의에 HTTP 서버, 또는 실행에 대한 문서를 체크 아웃 :

    $ http-server --help
    

    다른 좋은 기능과 NodeJitsu에 뇌사 단순 배포 많아요.

    기능 포크

    물론, 당신은 쉽게 자신의 포크 특징을 위로 할 수 있습니다. 당신은 이미이 프로젝트의 기존 800 포크 중 하나를 해본 적이 찾을 수 있습니다 :

    빛 서버 :는 자동 새로 고침 대안

    HTTP 서버에 대한 좋은 대안은 빛 서버입니다. 이 파일 관찰 및 자동 상쾌하고 많은 다른 기능을 지원합니다.

    $ npm install -g light-server 
    $ light-server
    

    Windows 탐색기에서 디렉토리 컨텍스트 메뉴에 추가

     reg.exe add HKCR\Directory\shell\LightServer\command /ve /t REG_EXPAND_SZ /f /d "\"C:\nodejs\light-server.cmd\" \"-o\" \"-s\" \"%V\""
    

    간단한 JSON REST 서버

    당신이 프로토 타입 프로젝트에 대한 간단한 REST 서버를 만들 필요가 있다면 JSON 서버 당신이 찾고있는 무슨 수 있습니다.

    자동 새로 고침 편집자

    대부분의 웹 페이지 편집기와 IDE 툴은 지금은 변경하면 웹 페이지를 새로 고침 소스 파일을보고 자동으로하는 웹 서버를 포함한다.

    난 비주얼 스튜디오 코드와 라이브 서버를 사용합니다.

    오픈 소스 텍스트 편집기 브래킷은 또한 NodeJS 정적 웹 서버가 포함되어 있습니다. 그냥 눌러 "실시간 미리보기"를 브래킷에있는 HTML 파일을 열고 정적 서버를 시작 페이지로 브라우저를 엽니 다. 브라우저 것이다 ** 자동 새로 고침 할 때마다 편집 및 HTML 파일 저장. 적응 형 웹 사이트를 테스트 할 때 특히 유용합니다. 여러 브라우저 / 창 크기 / 기기에서 HTML 페이지를 엽니 다. HTML 페이지를 저장하고 적응 물건을 모두 자동 새로 고침 그들은으로 작동하는지 즉시 참조하십시오.

    폰갭 개발자

    하이브리드 모바일 앱을 코딩하는 경우, 당신은 폰갭 팀은 새로운 폰갭 앱 보드에 자동 새로 고침 개념을했습니다 것을 알고 관심이있을 수 있습니다. 이 개발 중에 서버에서 HTML5 파일을로드 할 수있는 일반적인 모바일 응용 프로그램입니다. 당신은 대부분의 시간을 무슨 일을하는지이다 - 당신은 JS / CSS / HTML 파일을 변경하는 경우 지금은 하이브리드 모바일 앱 개발주기의 속도가 느린 컴파일 / 배포 단계를 건너 뛸 수 있기 때문에 이것은 매우 매끄러운 트릭이다. 또한 파일의 변화를 감지하는 (역할을 실행 폰갭) 정적 NodeJS 웹 서버를 제공합니다.

    폰갭 + 센차 터치 개발자

    지금은 광범위하게 센차 터치 및 jQuery를 모바일 개발자를위한 폰갭의 정적 서버 및 폰갭 개발자 앱을 채택했습니다. 센차 터치 라이브에서 그것을 확인하십시오. QR 코드 --qr 지원하며, 방화벽 외부의 URL에 데스크톱 컴퓨터에서 해당 프록시에게 정적 서버를 --localtunnel! 사용의 톤. 복합 휴대 DEVS위한 대규모 고속화.

    코르도바 + 이온 프레임 워크 개발자

    로컬 서버와 자동 새로 고침 기능은 이온 성 도구로 구운있다. 그냥 이온 앱 폴더에서 역할을 실행합니다. 더 나은 ... iOS 및 안드로이드 모두의 측면보기로보기 자동 새로 고침 측에 --lab 역할 이온.


  2. 2.당신은이에 대한 Node.js를 연결하고 ServeStatic을 사용할 수 있습니다 :

    당신은이에 대한 Node.js를 연결하고 ServeStatic을 사용할 수 있습니다 :

    이제 HTTP에 갈 수 : // localhost를 : 8080 / yourfile.html


  3. 3.이 요점을 확인하십시오. 내가 참조를 위해 여기를 재현하고 있습니다 만, 요점은 정기적으로 업데이트되었습니다.

    이 요점을 확인하십시오. 내가 참조를 위해 여기를 재현하고 있습니다 만, 요점은 정기적으로 업데이트되었습니다.

    var http = require("http"),
        url = require("url"),
        path = require("path"),
        fs = require("fs"),
        port = process.argv[2] || 8888;
    
    http.createServer(function(request, response) {
    
      var uri = url.parse(request.url).pathname
        , filename = path.join(process.cwd(), uri);
    
      fs.exists(filename, function(exists) {
        if(!exists) {
          response.writeHead(404, {"Content-Type": "text/plain"});
          response.write("404 Not Found\n");
          response.end();
          return;
        }
    
        if (fs.statSync(filename).isDirectory()) filename += '/index.html';
    
        fs.readFile(filename, "binary", function(err, file) {
          if(err) {        
            response.writeHead(500, {"Content-Type": "text/plain"});
            response.write(err + "\n");
            response.end();
            return;
          }
    
          response.writeHead(200);
          response.write(file, "binary");
          response.end();
        });
      });
    }).listen(parseInt(port, 10));
    
    console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");
    

    최신 정보

    요점은 핸들 CSS와 JS 파일을 수행합니다. 내가 직접 사용했습니다. "바이너리"모드에서 읽기 / 쓰기를 사용하는 것은 문제가되지 않습니다. 파일은 파일 라이브러리에 의해 텍스트로 해석하고 응답으로 반환 된 콘텐츠 유형 관련이되지 않는다는 것을 단지 의미합니다.

    코드의 문제는 항상 "텍스트 / 일반"의 콘텐츠 형식을 반환하는 것입니다. 위의 코드는 콘텐츠 형식을 반환하지 않습니다,하지만 당신은 단지 HTML, CSS 및 JS를 위해 그것을 사용하는 경우, 브라우저는 그 잘을 추론 할 수있다. 어떤 콘텐츠 유형은 잘못된 것보다 낫다.

    일반적으로 콘텐츠 형식은 웹 서버의 구성입니다. 따라서이 문제가 해결되지 않는 경우, 미안 해요,하지만 간단한 개발 서버로 나를 위해 일을하고 다른 사람들을 도와 줄 알았는데. 당신이 응답에 올바른 컨텐츠 유형을해야하는 경우, 당신은에 하나 필요 명시 적으로 joeytwiddle이 가지고 그들을 정의하거나 의미있는 디폴트를 가지고 연결과 같은 라이브러리를 사용합니다. 이것에 대해 좋은 점은 단순하고 독립적 인 (종속되지)라는 것이다.

    그러나 나는 당신의 문제를 생각 해요. 그래서 여기에 결합 된 솔루션입니다.

    var http = require("http"),
        url = require("url"),
        path = require("path"),
        fs = require("fs")
        port = process.argv[2] || 8888;
    
    http.createServer(function(request, response) {
    
      var uri = url.parse(request.url).pathname
        , filename = path.join(process.cwd(), uri);
    
      var contentTypesByExtension = {
        '.html': "text/html",
        '.css':  "text/css",
        '.js':   "text/javascript"
      };
    
      fs.exists(filename, function(exists) {
        if(!exists) {
          response.writeHead(404, {"Content-Type": "text/plain"});
          response.write("404 Not Found\n");
          response.end();
          return;
        }
    
        if (fs.statSync(filename).isDirectory()) filename += '/index.html';
    
        fs.readFile(filename, "binary", function(err, file) {
          if(err) {        
            response.writeHead(500, {"Content-Type": "text/plain"});
            response.write(err + "\n");
            response.end();
            return;
          }
    
          var headers = {};
          var contentType = contentTypesByExtension[path.extname(filename)];
          if (contentType) headers["Content-Type"] = contentType;
          response.writeHead(200, headers);
          response.write(file, "binary");
          response.end();
        });
      });
    }).listen(parseInt(port, 10));
    
    console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");
    

  4. 4.당신은 표현이 필요하지 않습니다. 당신은 연결이 필요하지 않습니다. Node.js를 HTTP를 기본적으로 수행합니다. 당신이해야 할 모든 요청에 ​​따라 파일을 반환 할 수 있습니다 :

    당신은 표현이 필요하지 않습니다. 당신은 연결이 필요하지 않습니다. Node.js를 HTTP를 기본적으로 수행합니다. 당신이해야 할 모든 요청에 ​​따라 파일을 반환 할 수 있습니다 :

    var http = require('http')
    var url = require('url')
    var fs = require('fs')
    
    http.createServer(function (request, response) {
        var requestUrl = url.parse(request.url)    
        response.writeHead(200)
        fs.createReadStream(requestUrl.pathname).pipe(response)  // do NOT use fs's sync methods ANYWHERE on production (e.g readFileSync) 
    }).listen(9615)    
    

    보장하지만 요청이 액세스 파일이 기본 디렉토리를 아래에, 그리고 수보다 전체 예제는 적절한 오류 처리를 수행합니다

    var http = require('http')
    var url = require('url')
    var fs = require('fs')
    var path = require('path')
    var baseDirectory = __dirname   // or whatever base directory you want
    
    var port = 9615
    
    http.createServer(function (request, response) {
        try {
            var requestUrl = url.parse(request.url)
    
            // need to use path.normalize so people can't access directories underneath baseDirectory
            var fsPath = baseDirectory+path.normalize(requestUrl.pathname)
    
            var fileStream = fs.createReadStream(fsPath)
            fileStream.pipe(response)
            fileStream.on('open', function() {
                 response.writeHead(200)
            })
            fileStream.on('error',function(e) {
                 response.writeHead(404)     // assume the file doesn't exist
                 response.end()
            })
       } catch(e) {
            response.writeHead(500)
            response.end()     // end the response so browsers don't hang
            console.log(e.stack)
       }
    }).listen(port)
    
    console.log("listening on port "+port)
    

  5. 5.나는 당신이 지금 놓치고있는 부분은 당신이 보내는 것을 생각 :

    나는 당신이 지금 놓치고있는 부분은 당신이 보내는 것을 생각 :

    Content-Type: text/plain
    

    당신이 HTML을 렌더링하기 위해 웹 브라우저를 원한다면, 당신은이 작업을하기 위해 변경해야합니다 :

    Content-Type: text/html
    

  6. 6.1 단계는 (내부 명령 프롬프트 [나는 당신의 폴더에 당신에게 CD를 희망]) : Express를 설치 NPM

    1 단계는 (내부 명령 프롬프트 [나는 당신의 폴더에 당신에게 CD를 희망]) : Express를 설치 NPM

    2 단계 : 파일 server.js 만들기

    var fs = require("fs");
    var host = "127.0.0.1";
    var port = 1337;
    var express = require("express");
    
    var app = express();
    app.use(express.static(__dirname + "/public")); //use static files in ROOT/public folder
    
    app.get("/", function(request, response){ //root dir
        response.send("Hello!!");
    });
    
    app.listen(port, host);
    

    음, 당신은 너무 WATCHFILE (또는 사용 nodemon)를 추가해야 바랍니다. 위 코드는 간단한 연결 서버입니다.

    3 단계 : 노드 server.js 또는 nodemon server.js

    그냥 호스트 간단한 HTTP 서버를 원하는 경우 더 쉬운 방법은 지금있다. NPM 설치 -g HTTP 서버

    우리의 디렉토리를 열고 HTTP 서버를 입력

    https://www.npmjs.org/package/http-server


  7. 7.빠른 방법 :

    빠른 방법 :

    var express = require('express');
    var app = express();
    app.use('/', express.static(__dirname + '/../public')); // ← adjust
    app.listen(3000, function() { console.log('listening'); });
    

    너의 길:

    var http = require('http');
    var fs = require('fs');
    
    http.createServer(function (req, res) {
        console.dir(req.url);
    
        // will get you  '/' or 'index.html' or 'css/styles.css' ...
        // • you need to isolate extension
        // • have a small mimetype lookup array/object
        // • only there and then reading the file
        // •  delivering it after setting the right content type
    
        res.writeHead(200, {'Content-Type': 'text/html'});
    
        res.end('ok');
    }).listen(3001);
    

  8. 8.오히려 switch 문을 다루는 것보다, 나는 그것의 깔끔한는 사전에서 콘텐츠 유형을 조회 생각합니다 :

    오히려 switch 문을 다루는 것보다, 나는 그것의 깔끔한는 사전에서 콘텐츠 유형을 조회 생각합니다 :

    var contentTypesByExtension = {
        'html': "text/html",
        'js':   "text/javascript"
    };
    
    ...
    
        var contentType = contentTypesByExtension[fileExtension] || 'text/plain';
    

  9. 9.이것은 기본적으로 연결 버전 3에 대한 허용 대답의 업데이트 버전입니다 :

    이것은 기본적으로 연결 버전 3에 대한 허용 대답의 업데이트 버전입니다 :

    var connect = require('connect');
    var serveStatic = require('serve-static');
    
    var app = connect();
    
    app.use(serveStatic(__dirname, {'index': ['index.html']}));
    app.listen(3000);
    

    나는 또한 그 index.html을가 기본으로 제공됩니다 있도록 기본 옵션을 추가했습니다.


  10. 10.당신은 노드에 대한 "NPM 무료 서버"라는 매우 작은 도서관이있어, 간단한 서버를 실행하는 모든 NPM 모듈을 사용할 필요가 없습니다 :

    당신은 노드에 대한 "NPM 무료 서버"라는 매우 작은 도서관이있어, 간단한 서버를 실행하는 모든 NPM 모듈을 사용할 필요가 없습니다 :

    코드의 50 개 라인, 출력은 파일 또는 폴더를 요청하고 일한 것이 실패 할 경우 그것을 적색 또는 녹색 색상을 제공하는 경우. 크기 1킬로바이트 미만 (축소 된).


  11. 11.당신이 노드 아마 당신에 PC를 설치 한 경우 당신은 당신이 NodeJS 물건을 필요하지 않은 경우, 당신은이에 대한 패키지를 제공 사용할 수 있으며, NPM이있다 :

    당신이 노드 아마 당신에 PC를 설치 한 경우 당신은 당신이 NodeJS 물건을 필요하지 않은 경우, 당신은이에 대한 패키지를 제공 사용할 수 있으며, NPM이있다 :

    1 - PC에서 패키지를 설치합니다 :

    npm install -g serve
    

    2 - 정적 폴더를 봉사 :

    serve <path> 
    d:> serve d:\StaticSite
    

    그것은 당신의 정적 폴더가 같은 호스트에 바로 탐색이 제공되고있는 포트를 표시합니다 :

    http://localhost:3000
    

  12. 12.내가 당신에게 몇 가지 사용이 될 수 NPM에 흥미 라이브러리를 발견했다. 그것은 마임라고 (마임을 설치 NPM 또는 https://github.com/broofa/node-mime) 그리고 파일의 MIME 형식을 확인할 수 있습니다. 여기에 내가 그것을 사용 쓴 웹 서버의 예입니다 :

    내가 당신에게 몇 가지 사용이 될 수 NPM에 흥미 라이브러리를 발견했다. 그것은 마임라고 (마임을 설치 NPM 또는 https://github.com/broofa/node-mime) 그리고 파일의 MIME 형식을 확인할 수 있습니다. 여기에 내가 그것을 사용 쓴 웹 서버의 예입니다 :

    var mime = require("mime"),http = require("http"),fs = require("fs");
    http.createServer(function (req, resp) {
    path  = unescape(__dirname + req.url)
    var code = 200
     if(fs.existsSync(path)) {
        if(fs.lstatSync(path).isDirectory()) {
            if(fs.existsSync(path+"index.html")) {
            path += "index.html"
            } else {
                code = 403
                resp.writeHead(code, {"Content-Type": "text/plain"});
                resp.end(code+" "+http.STATUS_CODES[code]+" "+req.url);
            }
        }
        resp.writeHead(code, {"Content-Type": mime.lookup(path)})
        fs.readFile(path, function (e, r) {
        resp.end(r);
    
    })
    } else {
        code = 404
        resp.writeHead(code, {"Content-Type":"text/plain"});
        resp.end(code+" "+http.STATUS_CODES[code]+" "+req.url);
    }
    console.log("GET "+code+" "+http.STATUS_CODES[code]+" "+req.url)
    }).listen(9000,"localhost");
    console.log("Listening at http://localhost:9000")
    

    이것은 정규 텍스트 또는 이미지 파일을 제공합니다 (.html 중에서, .CSS,은 .js, .PDF, .JPG, .png를, .M4A 및 .MP3 내가 테스트 한 확장이있다,하지만이 모든 것을 작동해야 이론)

    여기에 내가 함께 가지고 있다는 출력의 예입니다 :

    Listening at http://localhost:9000
    GET 200 OK /cloud
    GET 404 Not Found /cloud/favicon.ico
    GET 200 OK /cloud/icon.png
    GET 200 OK /
    GET 200 OK /501.png
    GET 200 OK /cloud/manifest.json
    GET 200 OK /config.log
    GET 200 OK /export1.png
    GET 200 OK /Chrome3DGlasses.pdf
    GET 200 OK /cloud
    GET 200 OK /-1
    GET 200 OK /Delta-Vs_for_inner_Solar_System.svg
    

    경로 구성의 언 이스케이프 기능을 확인할 수 있습니다. 이 공간과 인코딩 된 문자와 파일 이름을 허용하는 것입니다.


  13. 13.Node.js를 샘플 응용 프로그램 노드 채팅 당신이 원하는 기능을 가지고있다. 그것의 README.textfile에서 3 단계는 당신이 찾고있는 것입니다.

    Node.js를 샘플 응용 프로그램 노드 채팅 당신이 원하는 기능을 가지고있다. 그것의 README.textfile에서 3 단계는 당신이 찾고있는 것입니다.

    여기에 server.js입니다

    여기에 util.js입니다


  14. 14.내가 할 방법은 통해 전 세계적으로 모든 노드를 설치 정적 서버의 첫번째이다

    내가 할 방법은 통해 전 세계적으로 모든 노드를 설치 정적 서버의 첫번째이다

    npm install node-static -g
    

    HTML 파일을 포함하고 정적으로 정적 서버를 시작 디렉토리로 이동하여.

    8080 / "yourHtmlFile": 브라우저와 유형 로컬 호스트로 이동합니다.


  15. 15.당신은 당신의 쉘 사람들을 입력 할 수 있습니다

    당신은 당신의 쉘 사람들을 입력 할 수 있습니다

    npx serve
    

    REPO : https://github.com/zeit/serve합니다.


  16. 16.

    var http = require('http');
    var fs = require('fs');
    var index = fs.readFileSync('index.html');
    
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        // change the to 'text/plain' to 'text/html' it will work as your index page
        res.end(index);
    }).listen(9615);
    

    이 검색 어디서 난 당신을 생각합니다. 당신의 index.html을에서, 단순히 일반 HTML 코드로 채우기 - 당신이 좋아, 그것을 렌더링 할 원하는 :

    <html>
        <h1>Hello world</h1>
    </html>
    

  17. 17.기본적으로 허용 대답을 복사하지만, JS 파일을 만들어 피.

    기본적으로 허용 대답을 복사하지만, JS 파일을 만들어 피.

    $ node
    > var connect = require('connect'); connect().use(static('.')).listen(8000);
    

    아주 편리하다고했습니다.

    익스프레스의 최신 버전으로, 정적 봉사 별도의 미들웨어가되었다. 제공하는 데 사용합니다 :

    require('http').createServer(require('serve-static')('.')).listen(3000)
    

    역할 정전기를 설치 첫째.


  18. 18.나는 어떤 파일 URL을 언급하지 않는 경우 기본 HTML 파일을 렌더링하는 간단한 웹 서버를 시작하는 코드 아래 사용합니다.

    나는 어떤 파일 URL을 언급하지 않는 경우 기본 HTML 파일을 렌더링하는 간단한 웹 서버를 시작하는 코드 아래 사용합니다.

    var http = require('http'),
    fs = require('fs'),
    url = require('url'),
    rootFolder = '/views/',
    defaultFileName = '/views/5 Tips on improving Programming Logic   Geek Files.htm';
    
    
    http.createServer(function(req, res){
    
        var fileName = url.parse(req.url).pathname;
        // If no file name in Url, use default file name
        fileName = (fileName == "/") ? defaultFileName : rootFolder + fileName;
    
        fs.readFile(__dirname + decodeURIComponent(fileName), 'binary',function(err, content){
            if (content != null && content != '' ){
                res.writeHead(200,{'Content-Length':content.length});
                res.write(content);
            }
            res.end();
        });
    
    }).listen(8800);
    

    그것은 모든 HTML 콘텐츠와 함께, 모든 JS, CSS 및 이미지 파일을 렌더링합니다.

    "어떤 콘텐츠 유형이 잘못보다 낫다"문에 동의


  19. 19.W3 스쿨에서

    W3 스쿨에서

    이 요청되는 모든 파일을 제공하는 노드 서버를 만드는 아주 쉽게, 당신은 그것을 위해 어떤 패키지를 설치해야 해달라고

    var http = require('http');
    var url = require('url');
    var fs = require('fs');
    
    http.createServer(function (req, res) {
      var q = url.parse(req.url, true);
      var filename = "." + q.pathname;
      fs.readFile(filename, function(err, data) {
        if (err) {
          res.writeHead(404, {'Content-Type': 'text/html'});
          return res.end("404 Not Found");
        }  
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write(data);
        return res.end();
      });
    }).listen(8080);
    

    통해 http : // localhost : 8080 / file.html과

    디스크에서 file.html과 서비스를 제공합니다


  20. 20.나는 그러나, 당신은 변경 시도 할 수 있습니다, 당신이 원하는 무엇을이 정확히 아닌 경우 확신합니다 :

    나는 그러나, 당신은 변경 시도 할 수 있습니다, 당신이 원하는 무엇을이 정확히 아닌 경우 확신합니다 :

    {'Content-Type': 'text/plain'}
    

    이에:

    {'Content-Type': 'text/html'}
    

    이 브라우저 클라이언트 디스플레이를 대신 일반 텍스트의 HTML과 같은 파일이있을 것이다.


  21. 21.익스프레스 기능 sendfile을 당신이 필요로하는, 당신은 노드에서 웹 서버 기능을 원하기 때문에, 명시 적 자연 선택으로 제공하고 정적 파일을 제공하는 것은 쉬운만큼이된다 정확히 수행합니다

    익스프레스 기능 sendfile을 당신이 필요로하는, 당신은 노드에서 웹 서버 기능을 원하기 때문에, 명시 적 자연 선택으로 제공하고 정적 파일을 제공하는 것은 쉬운만큼이된다 정확히 수행합니다

    res.sendFile('/path_to_your/index.html')
    

    자세한 내용은 여기를 읽어 https://expressjs.com/en/api.html#res.sendFile

    노드에 대한 명시 적 웹 서버와 작은 예 :

    var express = require('express');
    var app = express();
    var path = require('path');
    
    app.get('/', function(req, res) {
        res.sendFile(path.join(__dirname + '/index.html'));
    });
    
    app.listen(8080);
    

    이것을 실행하고 탐색에 http : // localhost를 : 8080

    이에 확장하려면 당신이 CSS와 이미지 같은 정적 파일을 제공 할 수 있도록, 여기에 또 다른 예입니다 :

    var express = require('express');
    var app = express();
    var path = require('path');
    
    app.use(express.static(__dirname + '/css'));
    
    app.get('/', function(req, res) {
        res.sendFile(path.join(__dirname + '/index.html'));
    });
    
    app.listen(8080);
    

    그래서 하위 폴더라는 CSS를 만들고, 그 안에 정적 콘텐츠를 넣어, 그것은 같은 쉽게 참조 할 수 있도록 index.html을 사용할 수있을 것입니다 :

    <link type="text/css" rel="stylesheet" href="/css/style.css" />
    

    HREF에서 상대 경로를 주목하라!

    여기!


  22. 22.

    var http = require('http');
    var fs = require('fs');
    var index = fs.readFileSync('index.html');
    
    http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'html'});
    res.end(index);
    }).listen(9615);
    
    //Just Change The CONTENT TYPE to 'html'
    

  23. 23.A는 약간 더 자세한 4.x의 버전을 표현하지만 디렉토리 목록, 압축, 캐싱 및 라인 최소한의 로그인 요청을 제공합니다

    A는 약간 더 자세한 4.x의 버전을 표현하지만 디렉토리 목록, 압축, 캐싱 및 라인 최소한의 로그인 요청을 제공합니다

    var express = require('express');
    var compress = require('compression');
    var directory = require('serve-index');
    var morgan = require('morgan'); //logging for express
    
    var app = express();
    
    var oneDay = 86400000;
    
    app.use(compress());
    app.use(morgan());
    app.use(express.static('filesdir', { maxAge: oneDay }));
    app.use(directory('filesdir', {'icons': true}))
    
    app.listen(process.env.PORT || 8000);
    
    console.log("Ready To serve files !")
    

  24. 24.여기에 복잡한 대답을 미친 양. 당신이 프로세스 nodeJS 파일 / 데이터베이스에 의도 그러나 단지 역할을하지 않으려면 정적 HTML / CSS / JS / 다음 단순히 pushstate 서버 모듈 또는 유사한을 설치하시기 바랍니다 귀하의 질문에 같은 이미지;

    여기에 복잡한 대답을 미친 양. 당신이 프로세스 nodeJS 파일 / 데이터베이스에 의도 그러나 단지 역할을하지 않으려면 정적 HTML / CSS / JS / 다음 단순히 pushstate 서버 모듈 또는 유사한을 설치하시기 바랍니다 귀하의 질문에 같은 이미지;

    여기에 미니 사이트를 만들고 시작하는 "하나 라이너"입니다. 간단히 해당 디렉토리에있는 터미널에 그 전체 블록을 붙여 넣습니다.

    mkdir mysite; \
    cd mysite; \
    npm install pushstate-server --save; \
    mkdir app; \
    touch app/index.html; \
    echo '<h1>Hello World</h1>' > app/index.html; \
    touch server.js; \
    echo "var server = require('pushstate-server');server.start({ port: 3000, directory: './app' });" > server.js; \
    node server.js
    

    브라우저 열기하고 http : // localhost : 3000. 끝난.

    서버에서 파일을 제공 할 수있는 루트로 응용 프로그램 디렉토리를 사용합니다. 추가 자산을 추가하려면 그냥 디렉토리 내에 배치합니다.


  25. 25.간단한 nodejs 서버에 대한 훌륭한 솔루션이 이미 있습니다. 당신이 당신의 파일을 변경 한대로-다시로드 라이브 필요가있는 경우 또 하나의 해결책이있다.

    간단한 nodejs 서버에 대한 훌륭한 솔루션이 이미 있습니다. 당신이 당신의 파일을 변경 한대로-다시로드 라이브 필요가있는 경우 또 하나의 해결책이있다.

    npm install lite-server -g
    

    디렉토리를 탐색 할

    lite-server
    

    그것은 라이브 다시로드와 함께 당신을 위해 브라우저를 엽니 다.


  26. 26.답변의 대부분은 위의 아주 멋지게 내용이 제공되는 방법에 대해 설명합니다. 디렉토리의 다른 내용을 찾아 볼 수 있도록 내가 추가로보고되었다 디렉토리의 목록을했다. 여기에 더 독자를 위해 내 솔루션입니다 :

    답변의 대부분은 위의 아주 멋지게 내용이 제공되는 방법에 대해 설명합니다. 디렉토리의 다른 내용을 찾아 볼 수 있도록 내가 추가로보고되었다 디렉토리의 목록을했다. 여기에 더 독자를 위해 내 솔루션입니다 :

    'use strict';
    
    var finalhandler = require('finalhandler');
    var http = require('http');
    var serveIndex = require('serve-index');
    var serveStatic = require('serve-static');
    var appRootDir = require('app-root-dir').get();
    var log = require(appRootDir + '/log/bunyan.js');
    
    var PORT = process.env.port || 8097;
    
    // Serve directory indexes for reports folder (with icons)
    var index = serveIndex('reports/', {'icons': true});
    
    // Serve up files under the folder
    var serve = serveStatic('reports/');
    
    // Create server
    var server = http.createServer(function onRequest(req, res){
        var done = finalhandler(req, res);
        serve(req, res, function onNext(err) {
        if (err)
            return done(err);
        index(req, res, done);
        })
    });
    
    
    server.listen(PORT, log.info('Server listening on: ', PORT));
    

  27. 27.내가 건너 온 한 간단한 버전은 다음과 같습니다. 그것은 어떤 추상적 인 라이브러리를 사용하지 않기 때문에 교육 목적을 위해, 그것은 가장 좋습니다.

    내가 건너 온 한 간단한 버전은 다음과 같습니다. 그것은 어떤 추상적 인 라이브러리를 사용하지 않기 때문에 교육 목적을 위해, 그것은 가장 좋습니다.

    var http = require('http'),
    url = require('url'),
    path = require('path'),
    fs = require('fs');
    
    var mimeTypes = {
      "html": "text/html",
      "mp3":"audio/mpeg",
      "mp4":"video/mp4",
      "jpeg": "image/jpeg",
      "jpg": "image/jpeg",
      "png": "image/png",
      "js": "text/javascript",
      "css": "text/css"};
    
    http.createServer(function(req, res) {
        var uri = url.parse(req.url).pathname;
        var filename = path.join(process.cwd(), uri);
        fs.exists(filename, function(exists) {
            if(!exists) {
                console.log("not exists: " + filename);
                res.writeHead(200, {'Content-Type': 'text/plain'});
                res.write('404 Not Found\n');
                res.end();
                return;
            }
            var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
            res.writeHead(200, {'Content-Type':mimeType});
    
            var fileStream = fs.createReadStream(filename);
            fileStream.pipe(res);
    
        }); //end path.exists
    }).listen(1337);
    

    이제 브라우저를 열고 다음으로 이동 :

    http://127.0.0.1/image.jpg
    

    여기 image.jpg를이 파일과 같은 디렉토리에 있어야합니다. 이 사람을 도움이되기를 바랍니다 :)


  28. 28.이것은 내가 빠르게 웹 페이지를 참조하는 데 사용하는 가장 빠른 솔루션 중 하나입니다

    이것은 내가 빠르게 웹 페이지를 참조하는 데 사용하는 가장 빠른 솔루션 중 하나입니다

    sudo npm install ripple-emulator -g
    

    그때부터 당신의 HTML 파일과 실행의 디렉토리를 입력

    ripple emulate
    

    다음 넥서스 7 가로로 장치를 변경할.


  29. 29.로컬 웹 서버는 좀 확실히 가치가 있습니다! 여기에 추가 정보에서 발췌이다 :

    로컬 웹 서버는 좀 확실히 가치가 있습니다! 여기에 추가 정보에서 발췌이다 :

    빠른 전체 스택 개발을위한 린, 모듈 형 웹 서버.

    이 도구를 사용하여 다음

    로컬 - 웹 서버가 유용한 미들웨어의 "스타터 팩"과 함께 번들로 LWS의 분포이다.

    이 패키지는 WS 명령 줄 도구를 (사용 가이드를 참조하시기 바랍니다) 설치합니다.

    인수없이 WS를 실행하면 정적 인 웹 사이트로 현재 디렉토리를 개최한다. 해당 파일이 존재하는 경우 서버로 이동하는 것은, 디렉토리 목록 또는 index.html을 렌더링합니다.

    $ ws
    Listening on http://mbp.local:8000, http://127.0.0.1:8000, http://192.168.0.100:8000
    

    정적 파일 튜토리얼.

    DEV 및 통계 -이 클립은 정적 호스팅 플러스 로그 출력 형식의 몇 가지를 보여줍니다.

    단일 페이지 응용 프로그램 (클라이언트 측 라우팅 응용 프로그램, 예를 들면 반응 또는 각도 응용 프로그램)을 제공하면 한 페이지의 이름을 지정하는 것과 같은 사소한 수 있습니다 :

    $ ws --spa index.html
    

    정적 사이트로, 일반적인 SPA 경로 (예 : / 사용자 / 1 / 로그인)에 대한 요청이 존재하지 않는 위치에 파일로 찾을 수 없음 (404)를 반환합니다. 그러나, SPA로 index.html을 표시하여이 규칙을 만들 :

    정적 파일 (예를 들어 /css/style.css는) 다음, 그렇지 않은 경우 (예를 들어, / 로그인)를 제공 요청 경우 지정된 스파 서비스를 제공하고 경로 클라이언트 측을 처리합니다.

    SPA 튜토리얼.

    또 다른 일반적인 사용 사례는 원격 서버에 특정 요청을 전달하는 것입니다.

    다음 명령 프록시는 https://jsonplaceholder.typicode.com/posts/에 / 글 /로 시작하는 경로에서 포스트 요청을 블로그. 예를 들어, / 글 / 1에 대한 요청은 https://jsonplaceholder.typicode.com/posts/1로 프록시 될 것이다.

    $ ws --rewrite '/posts/(.*) -> https://jsonplaceholder.typicode.com/posts/$1'
    

    재 작성 튜토리얼.

    이 클립은 기본 파일 확장명을 지정하고 활동을 모니터링 --verbose하는 --static.extensions의 위의 플러스을 사용하는 방법을 보여줍니다.

    HTTPS 또는 HTTP2를 들어, 각각 --https 또는 --http2 플래그를 전달합니다. 추가 구성 옵션에 대한 위키와 브라우저에서 "녹색 자물쇠"를 얻는 방법에 대한 설명서를 참조하십시오.

    $ lws --http2
    Listening at https://mba4.local:8000, https://127.0.0.1:8000, https://192.168.0.200:8000
    

  30. 30.나는 또한 매우 쉽게 설정하는 것입니다 빠른 쓰기 시작하는 옵션을 제공하고 훌륭한 기능을 가지고 SugoiJS을 추천 할 수 있습니다.

    나는 또한 매우 쉽게 설정하는 것입니다 빠른 쓰기 시작하는 옵션을 제공하고 훌륭한 기능을 가지고 SugoiJS을 추천 할 수 있습니다.

    여기를보세요이 시작하기 : http://demo.sugoijs.com/ , 문서 : https://wiki.sugoijs.com/

    이 요청을 처리 장식, 요청 정책 및 권한 부여 정책의 장식이있다.

    예를 들면 :

    import {Controller,Response,HttpGet,RequestParam} from "@sugoi/server";
    ​
    @Controller('/dashboard')
    export class CoreController{
        constructor(){}
    ​
        @HttpGet("/:role")
        test(@RequestParam('role') role:string,
             @RequestHeader("role") headerRole:string){
            if(role === headerRole )
                return "authorized";
            else{
                throw new Error("unauthorized")
            }
        }
    }
    
  31. from https://stackoverflow.com/questions/6084360/using-node-js-as-a-simple-web-server by cc-by-sa and MIT license