2014-01-26 4 views
0

현재 YUI 압축기를 사용하여 모든 JavaScript 파일을 연결하고 압축합니다. 그러나 여러 가지 이유로 Require.js를 사용하기 시작했습니다.외부 연결 도구와 함께 Require.js 사용

개발 중에 파일이 연결되지 않으므로 Require.js에 기본값 require(filepath)define(modulename)을 사용할 수 있습니다. 하지만 생산에서 YUI가 모든 파일을 압축하므로 내 requires에있는 모든 파일 경로가 무효화된다는 사실을 어떻게 처리합니까?

main.jsmodule1.js이 필요하다고 가정 해 봅시다. 여기에 내가하고 싶은 작업은 다음과 같습니다

개발

require('path-to-module1')... // main.js 
define('module1', function()})... // module1.js 

생산

require('module1')... // main.js. here though, module1 and main.js are combined. 
define('module1')... // yeah, still same file. 

답변

1

그것은 사용하는 것이 가장 좋습니다 및 AMD 최적화, 예를 들어 r.js를 들어, 파일을 연결 할 수 있습니다. 그런 다음 r.js를 사용하여 축소하거나 YUI-comressor를 사용하여 축소 할 수 있습니다.

r.js 최적화 프로그램에 대한 자세한 내용은 여기 http://requirejs.org/docs/optimization.html을 참조하십시오.

Require.js를 사용하는 방법과이를 최적화하는 방법에 대한 좋은 예제 프로젝트는 https://github.com/volojs/create-template입니다. 해당 repo를 복제 한 후 node tools/r.js -o tools/build.js을 실행하면 최적화 프로그램이 작동하는지 확인할 수 있습니다. www의 모든 js 파일을 단일 파일로 결합합니다.

마지막으로, 당신은

define('module1', [], function() {}); 

항상과 같이 익명의 모듈을 사용

처럼 모듈을, 이름을해서는 안 :

define(["jquery"], function ($) {}); 

또는

define(function (require) { var $ = require("jquery"); }); 

AMD 최적화 이름을 사용하여 모듈을 하나의 파일에 모두 저장할 수 있지만 걱정하지 않아도됩니다.

희망이 도움이됩니다.

+0

답변 해 주셔서 감사합니다. 나는 약간 불분명했다. 당신은 압축을 위해 YUI를 계속 사용할 수 있다고 언급합니다 (연결 및 축소로 해석합니다). 그게 정확히 내가하고 싶은 일이고, 나의 질문은 그것을하는 방법입니다. –

+1

연결을 위해서는 r.js (또는 다른 AMD 옵티 마이저를 사용해야하지만 r.js는 require.js와 가장 잘 어울립니다). minification - YUI, Closure, Uglify2 등을 사용할 수 있습니다. – Karolis

+0

YUI-compressor는 require() 호출에 대한 모든 파일을 분석하고 모든 의존성을 찾는 방법을 모릅니다. 따라서 할 수 없습니다. 연결. – Karolis