Tôi đang viết một ứng dụng web bằng cách sử dụng TypeScript, Backbone và Mustache. Tôi muốn sử dụng Requirejs để tải phụ thuộc.Gọi trình cắm văn bản từ ánh xạ requirejs
Tôi cũng đang sử dụng plugin phòng thu trực quan của Web Essentials cho TypeScript với tùy chọn biên dịch AMD được bật. Đối với những người không quen thuộc với điều này, nó sẽ bọc tập tin kịch bản kiểu của bạn trong một mô-đun AMD nếu bạn nhập các mô-đun bên ngoài. Ví dụ:
Trong loại tập lệnh, tôi nhập các mô-đun sau vào tệp định nghĩa loại.
export import Backbone = module("Backbone");
import mainTemplate = module("MainTemplate");
Đầu ra là một cái gì đó như:
define(["require", "exports", "Backbone", "MainTemplate"], function(require, exports, __Backbone__, __mainTemplate__) {
//...code goes here ...
});
Đối với mẫu, tôi đã tuyên bố sau đây trong một tập tin kiểu định nghĩa:
declare module "MainTemplate" { }
Để hỗ trợ requirejs plugins, bạn cần khai báo mô-đun của mình là:
declare module "text!MainTemplate.html" { }
Tôi muốn giữ tên mô-đun không có plugin và phần mở rộng tệp. Điều này sẽ khiến tôi có sự linh hoạt trong tương lai.
Tôi có ánh xạ sau theo yêu cầu.
require.config({
map: {
"MyModule": {
"MainTemplate": "text!MainTemplate.html"
}
}
}
Điều này sẽ gọi thành công plugin văn bản, plugin tải sai url. Chọn lọc mã nguồn cho plugin văn bản, tôi thấy rằng đoạn mã sau là thủ phạm.
load: function (name, req, onLoad, config) {
...
url = req.toUrl(nonStripName),
//returns "scripts/**text!**MainTemplate.html**.html**"
...
}
Nếu tôi đặt tên cho mô-đun, 'MainTemplate.html' nó hoạt động tốt nhưng tôi muốn giữ phần mở rộng ra khỏi tên module.
Tôi đã sửa đổi plugin văn bản bằng thay thế regex đơn giản để loại bỏ tham chiếu plugin và tiện ích trùng lặp.
Có cách nào tốt hơn để xử lý việc này không?
Đây là giải pháp thay thế tốt, hy vọng họ sẽ hỗ trợ cú pháp mô-đun này trong tương lai. – thomaux