Typescript 을 사용 하여 node.js 프로젝트 개발(간단 한 환경 설정)

11583 단어 Typescriptnode
최근 type:script 을 공부 하 는 과정 에서 ts 를 사용 하여 node.js 프로젝트 를 개발 할 수 있 을 지도 모른다 는 생각 이 들 었 습 니 다.인터넷 에서 검색 해 보 니 많은 개발 자 들 이 이 방면 의 내용 을 실천 했다.여기 서 나 는 개발 환경 을 구축 하 는 간단 한 과정 을 기록 했다.
Typescript 개발 의 장점:
4.567917.비교적 엄격 한 유형 검사 와 문법 검사
  • ES6/ES 2015/ES7(부분)에 대한 지원 이 좋 습 니 다.
  • 컴 파일 된 js 파일 은 깨끗 하고 다양한 코드 규범 도 지원 합 니 다
  • 기타,문 서 를 참조 하 십시오
  • 준비 하 다.
    4.567917.node.js v 6.9.1 또는 임의의 새로운 버 전,오래된 버 전 은 잠시 시험 하지 않 았 습 니 다tsc typescript 컴 파일 러,npm 설치:npm install-g typescript,현재 v 2.0.10편집기:vscode명령 행 터미널:windows 의 cmd특별 알림 과 토 크:tsc 를 설치 하려 면 벽 을 넘 어야 할 수도 있 으 므 로 타 오 바 오 미 러 를 사용 할 수도 있 습 니 다.
    node.js 프로젝트 만 들 기
    npm init 를 사용 하여 지정 한 디 렉 터 리 에 항목 의 디 렉 터 리 를 만 듭 니 다.
    여기 서 나 는 자신의 프로젝트 디 렉 터 리 구 조 를 만 들 었 다.
    
    testTS
    |---build         //    js    
    |---src          //ts    
    |---static        //       
    | |---scripts
    | |   |---main.js
    | |----styles
    | |   |---style.css
    | |----assets
    |---views         //html    
    |  |---index.html
    |---package.json
    |---tsconfig.json
    tsconfig.json 편집
    위의 디 렉 터 리 구조 에 tsconfig.json 파일 이 있 습 니 다.ts 의 컴 파일 옵션 을 설정 합 니 다.
    이 파일 을 가 져 오 려 면 프로젝트 루트 디 렉 터 리 에 tsc--init 를 사용 하면'tsconfig.json'이 자동 으로 만들어 집 니 다.
    필요 한 설정 항목 작성
    기본적으로 tsc 는 디 렉 터 리 의 모든.ts 파일 을 컴 파일 하 는 기본 컴 파일 설정 을 사용 합 니 다.tsconfig.json 을 작성 하면 tsc 의 컴 파일 행 위 를 설정 하여 원 하 는 결 과 를 얻 을 수 있 습 니 다.
    
    {
      "compilerOptions": {
        "module": "commonjs",  //            
        "target": "es6",    //      
        "noImplicitAny": false, //            'any'     。
        "sourceMap": false,   //  debug  
        "rootDir":"./src",   //            --outDir。
        "outDir":"./build",   //       。  
        "watch":true      //           。       ,          。
      },
      "include":[
        "./src/**/*"
      ],
      "exclude":[
        "views",
        "static"
      ]
    }
    
    설정 파일 주의 점
    "copiler Options"는 컴 파일 옵션 입 니 다.자세 한 내용 은 다음 을 참조 하 십시오.
    중국어 문서
    영문 문서
    "module"은 컴 파일 된 js 코드 를 지정 하고 어떤 모듈 규범 을 사용 하 는 지 지정 하 는 데 사 용 됩 니 다.node.js 프로젝트 를 개발 하기 때문에 comonjs 를 선택 하 십시오.(관심 이 있다 면 모든 module 의 가능 한 값 을 한 번 시험 해 볼 수 있 습 니 다.컴 파일 된 js 파일 의 차 이 를 보면 생 성 된 코드 가 괜 찮 고 깨끗 하 다 는 것 을 알 수 있 습 니 다.)
    'target'은 컴 파일 된 js 코드 가 어떤 규범 을 따 르 는 지,es3/es5/es6 등 이 있 습 니 다.여 기 는 ts 2.0 코드 와 es6 코드 의 차 이 를 비교 하기 위해'es6'를 사 용 했 습 니 다.
    "rootDir"는 컴 파일 러 에 게 이 디 렉 터 리 의 파일 이 컴 파일 되 어야 한 다 는 것 을 알려 줍 니 다.그렇다면 이 옵션 을 설정 하고 외부(예 를 들 어 루트 디 렉 터 리)에'ts 파일'을 설치 하면 어떻게 될까요?tsc 는 이러한 오 류 를 알려 줍 니 다.

    "error TS6059: File 'D:/workplace/nodeWP/testTS/index.ts' is not under 'rootDir' 'D:/workplace/nodeWP/testTS/src'. 'rootDir' is expected to contain all source files."
    또한 build 디 렉 터 리 에서 출력 된 디 렉 터 리 구조 도 변 합 니 다.
     
    이것 은 분명히 우리 가 원 하 는 결과 가 아니다.
    솔 루 션 은 include 와 exclude 속성 을 사용 합 니 다.문서 설명 에 따 르 면"include"와"exclude"속성 은 파일 glob 일치 모드 목록 을 지정 합 니 다.포 함 된 파일 디 렉 터 리 나 파일,필터 가 필요 한 파일 이나 디 렉 터 리 를 표시 합 니 다.자세 한 것 은 공식 문서 의 설명 을 보십시오.
    따라서"./src/**/*"를"include"가 가리 키 는 배열 에 추가 하면 지정 할 수 있 습 니 다./src 의 모든 파일 은 우리 가 진정 으로 컴 파일 되 어야 하 며 다른 디 렉 터 리 는 제 외 됩 니 다.
    "outDir"는 컴 파일 된 js 코드 가 출력 된 곳 을 가리킨다.문서 에 도"outFile"옵션 이 있 습 니 다.모든 ts 파일 을 일정한 순서 규칙 에 따라 하나의 파일 로 포장 할 수 있 습 니 다.구체 적 으로 문 서 를 참고 할 수 있 습 니 다.여기 서 우 리 는 outDir 를 우선 사용 합 니 다.
    시험 해 보다
    두 개의 프로필 을 작성 한 후에 코드 를 작성 하고 컴 파일 을 실행 할 수 있 습 니 다.우리 시험 해 보 자.
    .../src/server.ts 에 간단 한 것 을 쓰 십시오.
    
    interface ICache{
      useCache:boolean;
      [propName:string]:any;
    }
    const cache:ICache = {useCache:true};
    다음 터미널 에 입력:
    D:\workplaceodeWP\testTS>tsc
    컴 파일 을 통 해 server.js 를 build 디 렉 터 리 에 생 성 합 니 다:
    
    //server.js
    const cache = { useCache: true };
    d.d.ts 파일 사용 하기
    프로젝트 를 개발 하려 면 이 코드 만 있 는 것 은 분명 하지 않다.내부 모듈 과 제3자 모듈 을 사용 해 야 합 니 다.그러나 모듈 을 직접 가 져 오 면.ts 파일 에 서 는 안 됩 니 다.예 를 들 면:

    이것 은 type:script 자체 의 메커니즘 으로 인해 xx.d.ts 성명 파일 이 필요 합 니 다.모듈 이 대외 적 으로 공개 하 는 방법 과 속성의 유형 과 내용 을 설명 합 니 다.좀 귀 찮 은 것 같 아서 요.다행히 정부 와 지역 사 회 는 이 문 제 를 해결 하기 위해 방안 을 마련 했다.
    TypeScript 2.0 이상 버 전에 서 형식 성명 파일 을 가 져 오 려 면 npm 만 사용 하 십시오.프로젝트 디 렉 터 리 에서 설치 실행:
    
    npm install --save-dev @types/node
    
    node.js v6.x 에 관 한 API 형식 설명 파일 을 얻 을 수 있 습 니 다.그 후에 필요 한 모듈 을 순조롭게 가 져 올 수 있 습 니 다.
    
    import * as http from 'http';
    완료 후 http 모듈 의 방법 을 정상적으로 사용 할 수 있 을 뿐만 아니 라 vscode 에서 해당 하 는 코드 알림 도 얻 을 수 있 습 니 다.
    내장 모듈 에 대해@types/node 모듈 을 설치 하면 모듈 의 성명 파일 문 제 를 전체적으로 해결 할 수 있 습 니 다.그렇다면 방대 한 제3자 모듈 에 대해 서 는 어떻게 해 야 할 까?정부 와 지역사회 에서 도 검색 과 설치 경 로 를 제공 했다.
  • typings
  • DefinitelyTyped
  • TypeSearch
  • 자동 컴 파일 및 자동 재 부팅 서비스
    성명 파일 을 해결 한 후에 사실 우 리 는 ts 를 사용 하여 node.js 프로젝트 의 개발 을 간단하게 진행 할 수 있 습 니 다.그러나 코드 를 다 쓰 거나 수정 할 때마다 컴 파일 한 다음 에 시작 하 는 것 은 크 지 않 지만 상당히 짜증 나 는 일이 다.효율 을 위해 서 우 리 는 그것 을 개선 해 야 한다.
    우선.ts 파일 이 자동 으로 컴 파일 될 수 있 도록 해 야 합 니 다.이것 은 위의 tsconfig.json 파일 에 설정 되 어 있 습 니 다.바로"watch":true 입 니 다.이 때 명령 행 에서 tsc 명령 을 실행 하면 컴 파일 러 는 디 렉 터 리 의.ts 파일 의 변 화 를 수시로 감시 한 다음 에 자동 으로 컴 파일 합 니 다.
    node 서버 를 자동 으로 다시 시작 합 니 다.우 리 는supervisor모듈 로 해결 하거나 유사 한 기능 을 가 진 해결 방안 을 사용 할 수 있 습 니 다.
    전역 에 슈퍼 바 이 저 모듈 npm install-g 슈퍼 바 이 저 를 설치 한 후 터미널 에서 슈퍼 바 이 어 를 사용 할 수 있 습 니 다./build/server.js 로 서버 를 시작 하고 서버 쪽 코드 가 바 뀌 면 자동 으로 서버 를 다시 시작 합 니 다.
    시작 서 비 스 를 더욱 간단하게 하 다
    이상 의 두 명령 으로 시작 할 때 파 라 메 터 를 추가 해 야 할 수도 있 습 니 다.입력 할 때마다 번 거 롭 습 니 다.
    npm script 으로 해결 할 수 있 습 니 다.package.json 파일 의"scripts"에서 설정 합 니 다:
    
    {
      "scripts":{
        "dev": "supervisor -w build ./build/server.js",
        "build": "tsc",
      }
    }
    npm run dev 를 실행 한 후./build 디 렉 터 리 의.js 파일 이 바 뀌 면 서버 를 다시 시작 합 니 다.
    npm run build 를 실행 할 때 ts 파일 만 컴 파일 하고 ts 의 변 화 를 감시 합 니 다.
    예 를 들 어 시험 해 보 자.
    
    import * as http from 'http';
    //====================
    const server = http.createServer(function(request:http.IncomingMessage,response:http.ServerResponse):void{
      console.log("create a server...");
      response.writeHead(200,{'Content-Type':'text/plain'});
      response.write('Hello world,we use typescript to develop.');
      response.end();
    });
    
    server.listen(3000,function(){
      console.log("Server listening on port 3000");
      console.log("test...");
    });
    
    추가:tsc 컴 파일 과 서버 재 부팅 명령
    2017.5.3 업데이트:
    본문 에 대한 여러분 의 지지 에 감 사 드 립 니 다.친구(@Ajaxyz)가 ts 컴 파일 감시 와 서버 재 부팅 을 명령 으로 통합 할 방법 이 있 습 니까?
    여기 서 비교적 간단 한 방법 을 제시 하여 gulp 를 사용 하여 이 두 가지 절 차 를 관리 합 니 다.gulp 작업 을 어떻게 사용 하 는 지 는 Gulp API 를 참고 하 세 요)
    1.gulp 의 watch()를 사용 하여 ts 파일 의 변 화 를 감시 하고 서버 를 다시 시작 합 니 다.
    이 방식 은 gulp 와 gulp-type escript 플러그 인(설치 하 다.)을 사용 해 야 합 니 다.
    주의 할 점 은:gulp-typescript 은 프로젝트 디 렉 터 리 에 typescript 을 설치 해 야 할 수도 있 으 므 로 프로젝트 디 렉 터 리 에서 명령 행 을 실행 할 수 있 습 니 다.
    
    npm install typescript
    gulp 와 플러그 인 을 준비 한 후 gulpfile.js 를 gulp 프로젝트 로 수행 해 야 할 작업 파일 로 작성 해 야 합 니 다.예 는 다음 과 같 습 니 다.
    
      //gulpfile.js
      
      let gulp = require('gulp');
      let ts = require('gulp-typescript');
      let tsp = ts.createProject('tsconfig.json'); //  tsconfig.json    tsc
      let exec = require('child_process').exec;
      
      let child;
      //    
      const PATHS = {
        scripts:['./src/**/*.ts'],
        output:'./build',
      };
      //  ts  
      gulp.task('build-ts',['restart'],function(){
        return gulp.src(PATHS.scripts)
          .pipe(tsp())
          .pipe(gulp.dest(PATHS.output));  
      });
      //  ts    
      gulp.task('watch-ts',['build-ts'],function(){  
        gulp.watch(PATHS.scripts,['build-ts']);
      });
      //       
      gulp.task('restart',function(){
        child = exec('supervisor -w build ./build/server.js',(error,stdout,stderr)=>{
          console.log(`stdout: ${stdout}`);
          console.log(`stderr: ${stderr}`);
          if (error !== null) {
            console.log(`exec error: ${error}`);
          }
        });
      });
      //    
      gulp.task('dev',['build-ts','restart','watch-ts']);
    
    이렇게 하면 개발 할 때 프로젝트 디 렉 터 리 에서 gulp dev 를 직접 실행 하면 컴 파일 과 서버 를 시작 할 수 있 습 니 다.이후 gulp 는 ts 파일 의 변경 을 감시 한 후 ts 파일 을 컴 파일 하고 서버 를 다시 시작 합 니 다.페이지 를 새로 고치 면 새로운 결과 가 브 라 우 저 페이지 에 출력 되 었 음 을 볼 수 있 습 니 다.
    또 주의해 야 할 것 은 gulp 가 ts 파일 의 변 화 를 감시 하기 때문에 tsconfig.json 에서"watch"를 false 로 설정 하거나 삭제 하 십시오.
    2.tsconfig.json 을 사용 하여 ts 파일 의 변 화 를 감시 하고 서버 를 다시 시작 합 니 다.
    이러한 방식 으로 먼저 tsconfig.json 이 ts 파일 에 대한 감 시 를 열 고 gulpfile.js 파일 을 수정 합 니 다.다음 과 같 습 니 다.
    
      //...requier       ,    
      
      let tsChild,    //  ts       
        serverChild;  //        
      //  ts  
      gulp.task('build-ts',function(){
         tsChild = exec('tsc',(error,stdout,stderr)=>{
          console.log(`tsc====>stdout: ${stdout}`);
          console.log(`tsc====>stderr: ${stderr}`);
          if (error !== null) {
            console.log(`exec error: ${error}`);
          }
        });
      });
      //       
      gulp.task('restart',function(){
        serverChild = exec('supervisor -w build ./build/server.js',(error,stdout,stderr)=>{
          console.log(`restart=====>stdout: ${stdout}`);
          console.log(`restart=====>stderr: ${stderr}`);
          if (error !== null) {
            console.log(`exec error: ${error}`);
          }
        });
      });
      //    
      gulp.task('dev2',['build-ts','restart']);
    
    gulp dev 2 를 실행 합 니 다.효 과 는 이전 예 와 같 습 니 다.
    이상 에서 해결 방법 을 제공 하 는 방식 과 방향 은 참고 만 하고 실제 환경 에 사용 하면 기능 을 계속 보완 해 야 한다.
    결어
    본 고 는 type:script 개발 node.js 프로젝트 를 구축 하 는 환경 에 대해 간단 한 연구 와 기록 을 할 뿐이다.
    처음에는 그렇게 생각 했 지만 그 럴 수 있 을 지 궁금 했다.실제로 node.js 안정 버 전 v 6.9.1 에 서 는 ES6 의 90%를 지원 했다.따라서 ES6 개발 node.js 프로젝트 를 직접 사용 하 는 것 이 좋 습 니 다.
    미 비 한 점 은 양해 해 주시 고 나중에 천천히 보충 해 드 리 겠 습 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기