什么是typescript AMD模块?ASP MVC4 web应用程序需要它吗



我开始使用Web Essentials,我看到有一个选项"使用AMD模块"。我正在为ASP MVC4应用程序使用typescript。有人能解释一下AMD模块是什么吗关于这是我应该知道的事情吗?

AMD是格式化和加载模块化JavaScript的一种方法。请参见此处:http://addyosmani.com/writing-modular-js/尤其是在这里:http://requirejs.org/docs/whyamd.html

引用后一个来源:

AMD格式来自于想要一个比今天的"编写一堆具有隐式依赖关系的脚本标记你必须手动订购"和一些易于使用的东西直接在浏览器中。

本质上,AMD允许您根据需要加载JavaScript模块,并提供封装其内容的格式,这样全局命名空间就不会受到污染。

在TypeScript中,当你发现AMD编译器开关设置为"on"时,你可以导出这样的模块:

export module pe.components {
export class Component {  // 'export' makes this visible outside the module
}
class FriendComponent { // no 'export' so this is only visible inside the module.
}
}

在另一个文件中,你像这样导入这个模块:

import c = module('relative-path-to-file/pe.components');

然后像这样使用:

var component:Component = new c.pe.components.Component();//有效,因为组件已导出

但不是这个:

var friend:FriendComponent = new c.pe.components.FriendComponent();//不应该工作*,因为未导出FriendComponent。

(*有一个错误使未导出的接口在其声明模块之外可见。我认为这在TS 0.8.1中已经修复)。

至于你问题的第二部分,这实在太宽泛了。如果您的体系结构要求您加载新功能(例如,单页应用程序中的插件或小程序),那么是的,AMD模块和RequireJS等加载框架可能是不错的选择。另一方面,如果您提前知道用户将需要的所有功能,那么您最好彻底缩小脚本并提前将其作为单个文件加载。

我认为您使用MVC的事实与此无关:问题是您的客户端体系结构是否需要异步、模块化的方法。

最新更新