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

对于整体情况,您可以选择:捆绑器WebpackBrowserifyRollup。通过这些解决方案,每次修改代码后,都会使用所有 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认同)