Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 键入脚本为什么以及何时需要requirejs_Visual Studio 2012_Requirejs_Typescript - Fatal编程技术网

Visual studio 2012 键入脚本为什么以及何时需要requirejs

Visual studio 2012 键入脚本为什么以及何时需要requirejs,visual-studio-2012,requirejs,typescript,Visual Studio 2012,Requirejs,Typescript,这是一个关于为什么以及何时需要使用Typescript的一般性问题。 我以前做过一些关于requireJs的工作,并且在部署之前总是使用r.js构建脚本。 据我所知,合并所有js文件(模块)的构建脚本是为了降低http请求的数量,当然也提供了一种模块化代码的方法 我的问题是:既然typescript已经提供了一种将代码分成模块的简单方法,为什么不合并 生成的js文件,而不是使用requirejs处理模块的额外步骤? 如果在更大的项目上工作,我理解不应该一次加载所有的js,但我认为仍然会以某种方式

这是一个关于为什么以及何时需要使用Typescript的一般性问题。 我以前做过一些关于requireJs的工作,并且在部署之前总是使用r.js构建脚本。 据我所知,合并所有js文件(模块)的构建脚本是为了降低http请求的数量,当然也提供了一种模块化代码的方法

我的问题是:既然typescript已经提供了一种将代码分成模块的简单方法,为什么不合并 生成的js文件,而不是使用requirejs处理模块的额外步骤? 如果在更大的项目上工作,我理解不应该一次加载所有的js,但我认为仍然会以某种方式捆绑模块

编辑:更具体地说:
为什么要使用requireJs来管理我的模块,而不仅仅是使用typescript内部模块,据我所知,这些模块也可以在运行时加载。基于amd和requirejs的内部模块与外部模块。

对于您描述的用例,您不需要requirejs,因为您不需要手动合并生成的js文件。typescript编译器可以为您完成这项工作。您可以为
tsc
命令指定
--out file.js
选项。这将编译所有的.ts文件并生成一个JavaScript输出文件。这允许您使用Typescript
module
关键字将代码拆分为单独的.ts文件中的模块,并将它们合并以优化部署


您可以更改从TypeScript导出到AMD的模块格式。加载这些模块需要RequireJS。此外,还有一些用于RequireJS的插件,除了加载模块外,还可以执行其他功能,例如异步加载文本文件

如果在页面加载期间只加载一个JS文件,则不需要RequireJS。
如果您有多个js文件,并且希望在脚本运行时加载它们,而不是在index.html中加载,那么确实需要requireJS。这些将异步加载,并且仅加载一次。需要脚本后的代码仅在加载所需脚本后执行。 当您不确定用户是否需要模块时,这对于延迟加载尤其有用。

另一个好处是在每个模块中定义了模块依赖关系,因为需要其他模块工作的每个模块都可以包含相应的“require”语句。

在浏览器中选择使用RequireJS运行TypeScript程序的唯一原因是如果您有数百个模块,但是页面可能只需要两三个就可以执行其操作。我们这里谈论的是严肃的大型程序,而不是轻量级应用程序或网页上的其他时髦东西

在一个非常大的应用程序中使用RequireJS意味着您只加载您真正需要的脚本,而不是为了以防万一而加载所有脚本

举个例子,假设您将MicrosoftOffice编写为一个TypeScript程序,您可以使用RequireJS根据需要加载所需的内容。因此,首先,您需要加载浏览文件所需的内容,然后当选择一个文件时,它会导致加载该模块(可能是Word)及其依赖项。这可能意味着你只下载了10%的程序在几个小块

模块加载程序

TypeScript没有自己的模块加载器。它将TypeScript编译为JavaScript,将模块导入语句转换为CommonJS或AMD样式的代码。异步模块定义(AMD)是RequireJS使用的模块格式。CommonJS模块由NodeJ使用。无论您使用的是TypeScript还是JavaScript,都需要依靠这些模块加载器

TypeScript只是将其转换为:

import myModule = module('mymodule');

根据第10.4节的规定,将
require
define
语句转换为

谢谢-我确实知道要与编译器一起使用的--out参数。这是使用flashdevelop的默认设置,它还支持typescript。但大多数教程,包括pluralsight,从未解释过为什么需要requireJS。因此,任何关于何时需要requirejs的示例或用例,基本上就是我要寻找的再次感谢您可以更改从TypeScript导出到AMD的模块格式。加载这些模块需要RequireJS。此外,RequireJS还有一些插件,除了加载模块之外,它们还可以做一些额外的工作,例如异步加载文本文件。为什么您会认为这两种插件都是必需的呢?比如,谁让你两者都用的?如果有什么问题的话,似乎是在乞讨。如果你使用requirejs只是为了制作一个小型的uberjs,那么很明显这是多余的。我很感激你的回答——谢谢。我知道requireJs正在帮助我们解决这个问题,这就是为什么人们会在普通js中使用像requireJs这样的模块加载器。但我认为您还没有回答我的问题,为什么要使用requireJs来管理我的模块,而不仅仅是使用typescript内部模块,据我所知,这些模块也可以在运行时加载。@ddennis我已经添加了一个关于这一点的注释。本质上,TypeScript没有内置的模块加载器,但它同时支持CommonJS和AMD模块加载器。@Sohnee requirejs如何使用具有多个菜单的应用程序,每个菜单都有自己的ts文件和依赖项,单击菜单应该只加载所需的文件。有什么我可以学习的资源吗。你在回答中提到的同一个例子。我读过关于requirejs的文章,但是这些例子都是一些小应用程序,只是为了演示。谢谢-我的问题不太多关于requirejs,这是一个已经使用过并且理解的问题。我已经编辑了这个问题,并试图更具体一些。