2016年打字稿工作流程

Dan*_*iel 5 workflow webstorm typescript typescript1.8

我是Web开发的新手。我一直想尝试用Typescript开发一个简单的客户端项目(在这种情况下,是一个游戏,但是这个问题也适用于其他项目)。没有服务器技术,只有在浏览器中运行的技术。

我启动了Webstorm,并设法建立了一个简单的Typescript项目并在数分钟内工作。

但是,当我尝试为较大的项目设置某种结构和合理的工作流程时,我开始遇到似乎疯狂的工具,管理器,构建系统,而每种工具都处于各种折旧状态。

我正在寻找一种简单可靠的方法:

  • 使用多个文件而无需手动添加脚本标签
  • 使用外部类型定义和javascript库并以明智的方式加载它们

对于我自己的代码,似乎es6模块是我最好的选择,但是出于某种原因,看来我仍然需要使用第三方模块加载器?它们似乎种类繁多-commonjs,requirejs,systemjs,webpack。此外,尽管许多来源都建议使用es6,但大多数浏览器仍未完全支持es6,这意味着我也需要进行编译。另外,在某些地方有一个使用gulp / grunt的构建过程,我什至不知道我是否需要使用!

我完全不确定要为外部模块做什么。我尝试过Bower,但似乎仍然需要为所有外部库手动添加标签(这不是一个大问题,但我敢肯定有更好的方法!)

这确实是我正在经历的所有事情的总体感觉-当然,有一种更好的做事方法。但是,在无数的过时信息中徘徊意味着我无法找到任何可靠的信息。

因此-前端专家-您对一个完整的新手有何建议,以作为当今Typescript(甚至Javascript)开发的良好工作流程?

Pal*_*leo 4

\n

我正在寻找一种简单可靠的方法:

\n\n
    \n
  • 使用多个文件,无需手动包含脚本标签
  • \n
  • 使用外部类型定义和 JavaScript 库并以合理的方式加载它们
  • \n
\n
\n\n

最简单的方法:只使用 Webpack。

\n\n

对于整体情况,您可以选择:捆绑器Webpack、Browserify、Rollup。通过这些解决方案,每次修改代码后,都会使用所有 JS 代码重新构建一个包。或者使用 JSPM 进行捆绑的异步加载器SystemJS(这里是一个教程),或者RequireJS。

\n\n

请注意,在 TypeScript 代码中使用 ES6 语法import/时export,加载器的选择并不意味着 TypeScript 代码中存在重大差异。借助 TSmodule选项,相同的代码可以编译为不同的格式。

\n\n
\n

对于我自己的代码,似乎 es6 模块是我最好的选择,但由于某种原因,我似乎仍然需要使用第三方模块加载器?

\n
\n\n

你说得对。

\n\n

阅读Mozilla 的文章:

\n\n
\n

import实际上是做什么的?

\n\n

你会相信\xe2\x80\xa6什么都没有吗?[...]

\n\n

ES6 将模块加载的细节完全留给实现。

\n
\n\n

还有一个未完成的编程 API。另请参阅Axel Rauschmayer 博士的书:

\n\n
\n

模块加载器 API 正在开发中

\n\n

正如您在JavaScript Loader Standard 存储库中看到的,模块加载器 API 仍在开发中。

\n
\n\n

关于捆绑的必要性,我推荐这篇文章。

\n\n

但今天,借助 TypeScript 和加载器,您将能够在大型前端项目中轻松使用标准import语法。export

\n\n

...

\n\n
\n

另外,尽管许多来源推荐使用 es6,但大多数浏览器仍然没有完全支持它,这意味着我还需要进行转译。

\n
\n\n

仍然需要了解目标浏览器的差异。但对于可以进行多填充的新 API,es6-shim可以与应用程序的代码一起打包。

\n

  • 我认为建议某人使用 webpack(它是一个捆绑器),而人们实际上需要模块加载器,这有点误导。使用像 SystemJs 这样的 UMD 比 webpack 更好,webpack 的唯一目的是将模块捆绑作为优先事项,这有时可能会阻碍 AMD 延迟加载的优势。它可以做一些不必要的事情。当然,您可以使用 webpack 做一些事情,但如果捆绑不是您想要的优先事项,那就不要这样做。 (2认同)