gpt4 book ai didi

requirejs - 从 requirejs 映射调用文本插件

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:52 27 4
gpt4 key购买 nike

我正在使用 TypeScript、Backbone 和 Mustache 编写网络应用程序。我想使用 Requirejs 进行依赖加载。

我还在使用 TypeScript 的 Web Essentials visual studio 插件,并打开了 AMD 编译选项。对于那些不熟悉的人,如果你导入外部模块,它会将你的类型脚本文件包装在 AMD 模块中。例如:

在类型脚本中,我在类型定义文件中导入以下模块。

export import Backbone = module("Backbone"); 
import mainTemplate = module("MainTemplate");

输出是这样的:

define(["require", "exports", "Backbone", "MainTemplate"], function(require, exports, __Backbone__, __mainTemplate__) {
//...code goes here ...
});

对于模板,我在类型定义文件中声明了以下内容:

declare module "MainTemplate" { }

为了支持 requirejs 插件,您需要将您的模块声明为:

declare module "text!MainTemplate.html" { }

我希望模块名称不包含插件和文件扩展名。这会让我在未来有一些灵 active 。

我在要求中有以下映射。

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”,它工作正常,但我想将扩展名保留在模块名称之外。

我用一个简单的正则表达式替换修改了文本插件,以去除插件引用和重复的扩展名。

有没有更好的方法来处理这个问题?

最佳答案

遇到了类似的问题。终于解决了。参见 TypeScript: compiling removes unreferenced imports

/// <amd-dependency path="text!templates/application.htm" />

var applicationTemplate = require('text!templates/application.htm');

关于requirejs - 从 requirejs 映射调用文本插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13906656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com