node. js 개발 플랫폼 입문 실례

4268 단어
소개 하 다.
node. js 는 개발 플랫폼 으로 이 플랫폼 에서 사용 하 는 프로 그래 밍 언어 는 JavaScript 언어 입 니 다.node. js 플랫폼 은 Chrome V8 JavaScript 엔진 을 기반 으로 구축 되 었 습 니 다.
응용 장면: node. js 기반 콘 솔 프로그램 (명령 행 프로그램, CLI 프로그램), 데스크 톱 응용 프로그램 (GUI) (node - webkit electron 등 프레임 워 크 를 통 해 구현), 웹 응용 프로그램 (사이트) 을 개발 할 수 있 습 니 다.
PS: 개발 플랫폼 이 무엇 인지, 해당 하 는 프로 그래 밍 언어, 언어 가 실 행 될 때, 특정 기능 을 실현 할 수 있 는 API (SDK: Software Development Kit) 가 있 습 니 다.
특징.
  • 이벤트 구동 (이벤트 가 실 행 될 때 전 달 된 리 셋 함수 실행)
  • 비 차단 I / O 모델 (I / O 작업 을 수행 할 때 스 레 드 를 막 지 않 습 니 다)
  • 단일 스 레 드
  • 세계 최대 의 개원 고 생태 시스템 인 npm
  • 을 가지 고 있다.
    파일 의 쓰기 fs. writeFile ()
    fs.writeFile(file,data[,options],callback)
    
    const fs = require('fs')
    
    var msg = 'Hello World'
    //   ./    ,node              
    fs.writeFile('./hello.txt',msg,'utf8',function(err){
        if(err){
            console.log('    ,     :'+err)
        }else{
            console.log('    ')
        }
    })
    

    파일 읽 기 동작 fs. readFile () 구현
    fs.readFile(file[,options],callback)
    
    const fs = require('fs')
    
    fs.readFile('./hello.txt',function(err,data){
        if(err){
            throw err
        }
        //data          Buffer  ,           
        // buffer          ,    toString()  ,    ,      utf8
        console.log(data.toString('utf8'))
    })
    

    파일 읽 기 중. / 상대 경로 문제 해결
    __dirname: 현재 실행 중인 js 파일 이 있 는 디 렉 터 리filename: 현재 실행 중인 js 파일 의 전체 경 로 를 표시 합 니 다.
    let filename = __dirname + '\\' + 'a.txt'
    

    경로 연결 path. join ()
    windows 와 MacOS Linux 에 서 는 경로 경사 봉 의 쓰기 가 다 릅 니 다. path. join 을 사용 하여 경사 봉 의 쓰기 와 자동 으로 일치 합 니 다.
    const path = require('path')
    
    let filename = path.join(__dirname,'a.txt')
    

    간단 한 http 서비스 프로그램 만 들 기
    //  http  
    var http = require('http')
    
    //    http    
    var server = http.createServer()
    
    //         (request  )
    server.on('request',function(req,res){
        //       :       http     ,                 
        res.setHeader('Content-Type','text/html;charset=urf-8')
        res.write('Hello World')
        //       ,         ,     (   )            
        res.end()
    })
    
    //    
    server.listen(8080,function(){
        console.log('server is running,please visit http://localhost:8080')
    })
    
  • request 대상 은 사용자 요청 메시지 의 모든 내용 을 포함 하고 request 대상 을 통 해 사용자 가 제출 한 데 이 터 를 얻 을 수 있 습 니 다
  • response 대상 은 사용자 에 게 데 이 터 를 응답 하 는 데 사 용 됩 니 다. 서버 가 클 라 이언 트 에 데 이 터 를 응답 하려 면 response 대상
  • 을 사용 해 야 합 니 다.
  • request 대상 과 response 대상 이 있 으 면 사용자 가 제출 한 데 이 터 를 얻 을 수 있 고 사용자 에 게 응답 할 수 있 습 니 다
  • 요청 에 따라 request. url 에 응답 하면 사용자 가 요청 한 경 로 를 얻 을 수 있 습 니 다.
    var http = require('http')
    
    http.createServer(function(req,res){
        if(req.url === '/' || req.url === '/index'){
            //res.write('hello index')
            //res.end()           
            res.end('hello index')
        }else if(req.url === '/login'){
            res.end('hello login')
        }else if(req.url === '/list'){
            res.end('hello list')
        }else{
            res.end('404,not Found')
        }
    }).listen(8080,function(){
        console.log('server is running,please visit http://localhost:8080')
    })
    
    

    다른 형식의 파일 요청
    모든 정적 자원 이 server. js 와 같은 디 렉 터 리 에 있 는 Public 폴 더 에 있다 고 가정 합 니 다.요청 할 때마다 돌아 오 는 파일 의 종 류 를 설정 하기 위해 제3자 플러그 인 mime 를 도입 합 니 다.
    //server.js
    var http = require('http')
    var fs = require('fs')
    var path = require('path')
    var mime = require('mime')
    
    http.createServer(function(req,res){
        var publicDir = path.join(__dirname,'public')
        var filename = path.join(publicDir,req.url)
        fs.readFile(filename,function(err,data){
            if(err){
                res.end('404')
            }else{
                res.setHeader('Content-Type',mime.getType(filename))
                res.end(data)
            }
        })
    }).listen(8080,function(){
        console.log('server is running,please visit http://localhost:8080')
    }
    

    이렇게 하면 if else 를 사용 하지 않 고 임의의 파일 을 요청 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기