2013-07-23 4 views
3

필요로 사용하여 자바 스크립트 컴파일 서버 측 캐싱, 나는,커피 스크립트 + nodejs는 : 나는 "커피 my_server.coffee"를 통해 노드 웹 서버를 실행하는거야

require './my_library.coffee' 

내 코드베이스를 통해 의존성이 매우 큰로드 그리고 그것은 내 서버가 시작하는 데 상당한 시간이 걸리기 시작했다. 나는 coffeescript 컴파일로 인한 것이라고 생각한다. 전체 내용을 자바 스크립트로 변환하면 훨씬 빨리로드된다.

컴파일 된 자바 스크립트를 캐싱하는 가장 고통스러운 방법은 무엇입니까? 서버를 다시 시작하면 마지막으로 시작한 이후로 편집 한 파일 만 컴파일됩니다. 이상적으로 그것은 완전히 투명 할 것입니다 ... 나는 방금 coffeescript를 요구하는 것을 계속하고 그것은 뒷장에 숨어 있습니다.

다른 방법으로 "node my_server.js"를 실행할 수 있으며 편집 할 때마다 coffeescript를 다시 컴파일하는 내 디렉토리에 watcher가있을 수 있습니다.하지만이 아이디어는 정말 좋아하지 않습니다. js 파일은 내 gitignore를 더 복잡하게 만들고 감시자 기능을 관리해야 함을 의미합니다. 내 케이크를 가지고 (커피 실행 파일을 실행하고 커피 파일을 필요로하는) ​​내 케이크를 먹고 너무 빨리 먹을 수있는 방법이 있습니까?

+0

파일 확장자없이'require './my_library''를 수행하면 .js, .coffee 및 .json 파일을 찾습니다. 파일 확장명을 생략하는 것이 좋습니다. 'require '에 전달 된 경로가 모듈을 캐시하는 데 사용되는 키이므로 런타임시 모듈 캐싱에도 도움이됩니다. –

+0

감사합니다. 의미가 있습니다. – josh

답변

2

음. ".js 파일 묶음으로 디렉토리를 어수선하게"하고 싶지 않다면, 나는 당신이 SOL이라고 생각합니다. .js 파일을 디스크에 저장하지 않으면 매번 .copy를 javascript로 컴파일해야합니다. 내 지식에 대한 coffee 명령은 .js.coffee 파일 사이에 mtime을 비교하지 않지만 이론적으로는 가능합니다.이 경우 파일을 그대로두면 상황에 도움이됩니다. 환경 설정을 감안할 때, 내가 제안 할 수있는 유일한 방법은 다음과 같습니다

  • 실행 node build/app.js 대신 커피
  • 무시하여 응용 프로그램을 시작 별도의 build 하위 디렉토리 트리
  • 에 모든 .coffee 파일을 빌드 감시자 에서 build 디렉토리 당신의 .gitignore

당신은 비록 coffee를 통해 일을 실행에 포기해야합니다. 다른 사람들에게 더 좋은 제안이 있는지보기를 호기심. 내 프로젝트는 시작 시간 문제로 어려움을 겪지 않습니다. SSD 및 소규모 프로젝트를 통해 이러한 상황을 간결하게 유지하고 성가신 일이 아닙니다.

+0

나는이 모든 것에 거의 동의합니다. coffeescript에 대한 나의 경험은 크게 [grunt] (http://gruntjs.com/)과 짝을 이루었습니다. [coffeescript plugin] (https://github.com/gruntjs/grunt-contrib- 커피)을 사용하면 자바 스크립트에 대한 컴파일 (및 연결)을 매우 쉽게 자동화 할 수 있습니다. 또한 컴파일 된 코드를 테스트하는 데 매우 도움이되는 것으로 나타났습니다. 버전 제어에서 이러한 컴파일 된 파일을 무시하면 repo가 ​​복잡해집니다. – max