我是打字稿的新手,需要js。我已经看到了几种在typescript中导入模块的方法。但我不清楚以下代码在做什么..
1./// <reference path="foo.ts" />
2.import {utils} from "./util";
3.require(["bar"],function(bar){
//use module here
});
4.define(["bar"],function(bar){
//use module here
});
5.requirejs(["bar"],function(bar){
//use module here
});
他们彼此如何不同。请帮忙。
答案 0 :(得分:1)
RequireJS是一个在JS拥有加载模块的官方语法之前就已存在的库。 RequireJS模块使用define
调用,传入依赖项和在加载所有依赖项时运行的函数来定义。 require
调用启动了加载过程,通常在应用程序的最开始处找到。
import
/ export
是加载JavaScript模块的标准语法。去年,语法标准化为iirc。模块解析不是标准化的,目前也不是由任何浏览器实现的。但是这种语法被不同的工具用来“编译”JS。
我无法解释很多TypeScript。该文章应该为您提供所需的一切。
///指令是该组中最常见的。它充当文件之间的依赖声明。
答案 1 :(得分:0)
要真正理解这一点,您应该查看JavaScript中模块的历史记录。该语言在最新版本中仅支持官方模块,并非所有浏览器都支持此功能。这是一些好文章的列表。
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html https://addyosmani.com/writing-modular-js/
要回答您的问题,第一种类型用于内部模块(现在重命名为名称空间)。如果你有多个源文件,你可以使用它们,但是它们会被编译成一个文件(使用outFile编译器选项)。
第二种类型是新的ES6标准模块语法。您可以在源代码中使用它,但是,现在,它将被编译为AMD或CommonJS或SystemJS语法(遵循ES6标准)。
其余的是AMD模块语法,define
用于定义将导出一些代码的模块。 require
用于导入代码将使用的模块。您无法使用require
导出任何代码,因此通常只对主脚本文件使用一次。
使用当前版本的TypeScript,您不会使用AMD或CommonJS语法,您将使用标准的ES6模块语法,然后您的编译器会根据您的module
属性将其编译为正确的模块类型。 tsconfig.json
档案。