저는 TypeScript, Backbone 및 Mustache를 사용하여 웹 응용 프로그램을 작성하고 있습니다. 의존성로드에 Requirejs를 사용하고 싶습니다.requirejs 매핑에서 텍스트 플러그인을 호출하십시오.
또한 AMD 컴파일 옵션이 켜져있는 TypeScript 용 Web Essentials 비주얼 스튜디오 플러그인을 사용하고 있습니다. 익숙하지 않은 사용자는 외부 모듈을 가져 오면 유형 스크립트 파일을 AMD 모듈로 래핑합니다. 예 :
유형 스크립트에서 유형 정의 파일에 다음 모듈을 가져옵니다. ,
declare module "MainTemplate" { }
requirejs 플러그인을 지원하기 위해 다음 유형 정의 파일에 다음과 같은 템플릿의
define(["require", "exports", "Backbone", "MainTemplate"], function(require, exports, __Backbone__, __mainTemplate__) {
//...code goes here ...
});
, 내가 선언했습니다
export import Backbone = module("Backbone");
import mainTemplate = module("MainTemplate");
출력은 뭔가처럼 모듈을 다음과 같이 선언해야합니다.
declare module "text!MainTemplate.html" { }
모듈 이름을 플러그인 및 파일 확장자로부터 자유롭게 유지하고 싶습니다. 이것은 나에게 미래의 융통성을 부여 할 것이다.
필자는 다음과 같은 매핑이 필요합니다.
require.config({
map: {
"MyModule": {
"MainTemplate": "text!MainTemplate.html"
}
}
}
이것은 성공적으로 텍스트 플러그인을 호출하지만, 플러그인은 잘못된 URL을로드합니다. 텍스트 플러그인의 소스 코드를 살펴본 결과, 다음 코드가 범인임을 알게되었습니다.
load: function (name, req, onLoad, config) {
...
url = req.toUrl(nonStripName),
//returns "scripts/**text!**MainTemplate.html**.html**"
...
}
모듈의 이름을 'MainTemplate.html'이라고하면 잘 작동하지만 확장명은 모듈 이름에서 제외하고 싶습니다.
나는 플러그인 레퍼런스와 복제 확장을 제거하기 위해 간단한 정규 표현식으로 텍스트 플러그인을 수정했다.
더 나은 방법이 있나요?
이것은 적절한 해결책이며 앞으로도이 모듈 구문을 지원할 수 있기를 바랍니다. – thomaux