2014년 9월 26일 금요일

requirejs + angularjs 에서 requirejs 걷어내기와 grunt 적용하기

requirejs 걷어내는 이유


  • requirejs에서 제공하는 r.js를 사용하여 minify, gzip, versioning을 하면 오래 걸린다. 800초 정도. (1 core CPU, 2GB Memory).
  • concatenation이 안 된다. 이 부분은 우리 소스 구현 방식 때문인지 play!framework에서 제공된 r.js가 안 해주는지 아님 몰라서 못 하는 건지 모르지만 현재 안 되고 있다.
  • angularjs 개념도 어려운데 requirejs까지 넣었더니 이해를 못 하는 부분이 너무 많다. 이해하는데 시간도 부족하고 angualrjs만으로도 충분히 프로젝트를 진행시킬 수 있다는 판단이 들며 특히나 requirejs가 해주는 부분이 미약하다. 외부 library의 의존성 정도 유지 보수 하는 정도. 이것 또한 angularjs가 충분히 할 수 있다고 판단되어진다.

작업내용

index.scalar.html에 해당 js 파일을 모두 include 시킨다. 





여기서 /assets/admin/js/admin.js를 삭제하고 /assets/admin/js/app.js에 chucar.admin 모듈을 다음과 같이 선언해주고 그 모듈에 모든 서비스 관련 directives, services, controllers 등을 추가한다.












Grunt를 적용하는 이유

  • requirejs를 걷어 냄으로써 대신 minify, concatenation, gzip를 해주는 스크립트이다.

작업내용

node.js 설치

grunt 설치
$ npm install -g grunt-cli
$ npm install grunt --save-dev
$ npm init
--> 이 때 name을 js나 node로 넣지 말랜다. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field.
Gruntfile.js 파일 생성

grunt-contrib-uglify, grunt-contrib-concat 은 없기 때문에 다음과 같이 설치
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-concat --save-dev