首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【TypeScript 演化史 — 第十二章】ES5ES3 的生成器和迭代支持及 –checkJS选项下 .js 文件中的错误

现在将index.ts文件编译成index.js。当以 ES3 或 ES5 为目标时,TypeScript 编译器将为上述代码生成一个基于索引的for循环的代码: var text = "Booh!"...在较好的的项目配置中,咱们会使用诸如 webpack 之类的绑定器将所有模块捆绑在一起。如果 webpack 不止一次地包含一个帮助函数,那么它生成的包就会不必要地大。...当指定时,--importHelpers 会告诉TypeScript 编译器从tslib导入所有帮助函数。像 webpack 这样的捆绑器可以只内联一次 npm 包,从而避免代码重复。...从 JS迁移到 TypeScript 一旦对整个代码库进行了类型检查,从 JS (和.js文件)迁移到 TypeScript (和.ts文件)就容易多了。...使用白名单或黑名单方法,咱们可以很快的移到,同时准备迁移到完全静态类型的代码库(由TypeScript提供支持)。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【TypeScript 演化史 -- 12】ES5ES3 的生成器和迭代支持及 --checkJS选项下 .js 文件中的错误

    现在将index.ts文件编译成index.js。当以 ES3 或 ES5 为目标时,TypeScript 编译器将为上述代码生成一个基于索引的for循环的代码: var text = "Booh!...在较好的的项目配置中,咱们会使用诸如 webpack 之类的绑定器将所有模块捆绑在一起。如果 webpack 不止一次地包含一个帮助函数,那么它生成的包就会不必要地大。...当指定时,--importHelpers 会告诉TypeScript 编译器从tslib导入所有帮助函数。像 webpack 这样的捆绑器可以只内联一次 npm 包,从而避免代码重复。...从 JS迁移到 TypeScript 一旦对整个代码库进行了类型检查,从 JS (和.js文件)迁移到 TypeScript (和.ts文件)就容易多了。...使用白名单或黑名单方法,咱们可以很快的移到,同时准备迁移到完全静态类型的代码库(由TypeScript提供支持)。

    1.1K20

    轻量级工具Vite到底牛在哪, 一文全知道

    背景与工作方式 在过去Webpack、Rollup 等构建工具作为主场明星时,我们的代码都是基于ES Module 规范去写的。...捆绑生产时,Vite附带了一个预配置的构建命令,该命令可以立即进行许多性能优化。...当我们把文件重命名并添加一些TypeScript特定的语法后,所有文件都可以更好的进行编译。 使用CSS时,有人会将其重命名为CSSstyle.scss,并添加一些特定于Sass的语法。...在这里,测试者尝试导入了一个100kB的JavaScript库,并添加了2万行CSS,将文件类型更改为TypeScript和Sass,强制Vite分别使用TypeScript和Sass编译器进行编译。...之后还会花更多的时间在修复错误上,改善捆绑软件能够优化并缩短其构建时间。 相比之下,Vite能轻而易举地做到。测试者尝试设置了四个堆栈,并且几乎立即对其进行了一些自定义设置。

    4.1K40

    前端构建系统浅析

    由于ESM的导入和导出是静态定义的,因此更容易优化和进行树摇。 目前常用的转译器有Babel、SWC和TypeScript Compiler。...与当时流行的Browserify不同,Webpack开创了“加载器”这一概念,通过导入转换源文件,使Webpack能够协调整个构建流程。...摇树依赖于对源文件的静态分析,因此当静态分析变得更加困难时,摇树的效率会受到影响。两个主要因素影响摇树的效率: 模块系统: ES6模块具有静态导入和导出,而CommonJS模块具有动态导入和导出。...尽管如此,将静态资源捆绑在JavaScript文件中会增加bundle大小,最好将静态资源分离。 代码压缩 代码压缩主要是解决文件过大的问题。压缩工具可以在不改变代码功能的情况下,减少文件的大小。...然而,现代工具的功能较少,有时与库不兼容,因此旧代码库往往难以轻松切换到它们。 服务器端渲染(SSR)在Next.js兴起后变得更受欢迎。SSR对前端构建系统没有引入任何根本性的不同。

    14410

    巧用 exports 和 typeVersions 提升 npm 包用户使用体验

    但是如果想实现更精细化的导出控制就无法满足 当我们一个库本身同时包含运行时和编译时的导出时,如果我们导出的模块在编译时(node 环境)包含副作用,如果运行时模块也从同一入口导出就会出现问题 // 例如编译时入口存在以下编译时副作用...此时最好的办法是将这个库的运行时和编译时从两个入口进行导出,这样子就不存在某一方影响到另一方。...如果找到了对应的模块文件,则直接返回该路径;否则抛出错误 通过相关上述代码我们可以知道 对于解析es导入,webpack会尝试读取exports字段的导出,依次读取import和node字段。.../foo';时,Webpack在解析模块请求时会直接将 ..../foo.js 当作完整路径来处理,而不进行路径的拼接和解析 对于解析cjs导入,webpack会尝试读取exports字段的导出,依次读取require和node字段。

    58710

    如何避免 JavaScript 模块化中的函数未定义陷阱

    但是,当将普通 JavaScript 文件转换为模块时,我们可能会发现一些函数突然“消失”了,即浏览器控制台报错提示函数未定义。...is not defined 这个问题通常发生在我们将现有项目改为模块化时,因为模块与普通脚本在作用域和导出机制上有本质的区别。...这个错误让我们意识到,模块化的行为与普通脚本存在显著差异,尤其在涉及全局作用域的情况下。接下来,我们将尝试深入分析这个问题的根源。 3....分析问题 原因分析:探讨 ES 模块的作用域和导出机制 在了解为什么 pageLoad 函数在模块化后未定义之前,我们需要先理解 ES 模块 与普通脚本之间的核心区别。...在模块化 JavaScript 项目时,除了常见的函数未定义问题,还可能面临事件监听、外部库加载、依赖管理等挑战。

    12610

    Webpack 开发中间件模块热拔插(HMR)

    多个月以来,我和多个Github上的社区贡献者一起建立支持库、包,我们最终的目的是希望完成这样一个作为起点的模板,也就是基于把Typescript代码和Angular2宿主在ASP.NET Core项目中...快速构建:对于开发来说,你不需要再等待再每次更改之后,webpack去重新解析第三方代码,因为第三方类库将会独立到另外的一个bundle中,另外,超快速的构建包含了所有的map文件便于调试,再发布版本的文件中却将直接输出压缩版本...Webpack集成 当前系统里的代码使用typescript编写,这就是说你需要在运行它之前先构建它,就像你使用SASS一样,需要在使用之前编码,甚至捆绑和压缩它。...目前最兴盛的modern javascript构建系统是Webpack,它类似Grunt和Gulp,但是在2017的今天(原文中是2016),Webpack是最流行的typescript编译、捆绑和压缩工具...,我们在template中使用它的几个非常酷的功能: Webpack 开发中间件 通常来说,一旦你改变任何一个Typescript文件,你都需要去运行webpack来重新生成javascript文件,但是

    3.3K60

    使用Typescript和ES模块发布Node模块

    本文旨在解决所有这些问题,并为你提供一个设置,使你可以放心地编写和共享TypeScript库,并为包装的使用者提供轻松的体验。 ?...发布模块时我喜欢做的事情是发布两个版本: 带有ES模块的现代版本,以便捆绑工具可以巧妙地将未使用的代码tree–shake ,因此支持ES模块的浏览器只需导入文件 使用CommonJS模块的版本(如果在...Node中工作,你将习惯使用 require 代码),因此较早的构建工具和Node.js环境可以轻松运行该代码 稍后我们将介绍如何使用不同的选项捆绑两次,但是现在,让我们将TypeScript配置为输出...我发现在调整我的TypeScript配置时,最适合我的方法是调整、编译、检查输出,然后再调整。不要害怕尝试这些设置,看看它们如何影响最终结果。...TypeScript编译时不会将任何文件合并在一起,而是将每个模块转换成对应的JavaScript。 让我们看一下输出的三个文件: ?

    2.7K20

    轻量迅捷时代,Vite 与Webpack 谁赢谁输

    基于Webpack包的工作流 当我们保存文件时,整个JavaScript包将由Webpack重建,即使启用了HMR,我们进行修改可能也需要10秒钟才能在浏览器呈现。...Vite的核心思想很简单:当浏览器请求时,使用ES模块进行转换并提供一段应用程序代码。 开始开发后,Vite将首先将JavaScript模块分为两类:依赖模块和应用程序模块。...应用程序模块是为应用程序编写的模块,通常涉及特定于库的扩展,如:jsx / vue 或 scss文件。...React 的起始页与Create React App的默认模板非常相似,只是稍作修改: 此外Vite preview用于在本地对应用进行预览,还支持许多官方模板,包括vanilla JavaScript...和TypeScript。

    91720

    从零搭建基于react与ts的组件库(一)项目搭建与封装antd组件

    整体需求 react组件库,取名r-ui,能够导出r-ui.umd.js和r-ui.umd.css。 代码使用typescript进行开发。 样式使用less进行开发。...开发与打包工具选型 使用webpack作为打包工具 老牌而又经典的打包工具,广泛的使用,丰富的插件生态以及各种易得的样例。...接收css样式代码进行处理,并分离导出组件库样式文件。...(顺带一提,babel 内部使用的解析类库叫做 babylon,并非 babel 自行开发) 举个简单的例子,当我们定义或者调用方法时,最后一个参数之后是不允许增加逗号的,如 callFoo(param1...此时,可以直接使用浏览器打开index.html查看效果: 处理样式(less编译与css导出) 依赖引入 根据上述内容,我们已经搭建了基础的项目结构,但是目前来说我们还需要处理我们的less样式

    1K31

    我们如何使用 Webpack 将启动时间减少 80%

    这是有道理的,因为每当进程重新启动时,整个源代码都必须从零开始转换为 Javascript,而且没有任何缓存;这与我们在集群模式下部署服务器时遇到的较大延迟一致。...进入 webpack webpack 是一个传统的 JavaScript 模块打包器,创建的目的是通过有效地将前端应用分割成块,快速地将其传送到用户的浏览器。...我们努力了几次让 webpack 与 TypeORM 一起工作,主要是因为 TypeORM 顽固的设定。...例如,数据库迁移文件必须在类名末尾包含时间戳,这意味着源文件不能缩小,导入 / 导出名称不能被篡改。但经过几次尝试,我们成功了。果然,通过 webpack 及其插件处理,每个文件都简化了构建过程。...创建和导出配置文件 webpack 的配置非常简单,只需在你的项目根目录(通常是 package.json 所在的文件夹)中创建一个 webpack.config.js 文件,然后导出 webpack

    1.3K20

    新一代构建工具的比较

    无论我们使用 webpack、 Rollup 还是 Parcel 作为开发服务器,这个工具都将我们的整个代码库与源代码和一个 node _ modules 文件夹捆绑在一起,通过 Babel、 TypeScript...或 PostCSS 等构建过程运行,然后将捆绑的代码推送到我们的浏览器。...CSS-in-js 库的支持 所有这些工具都可以将打字稿编译成 JavaScript,但即使存在类型错误也可以这样做。...在大型代码库中,esbuild 和节点捆绑器之间的速度差异会被乘以,这将是最有用的。当 esbuild 达到1.0时,它将在大型生产站点中非常有用,并将为团队节省大量等待构建完成的时间。...通过优化构建步骤 TypeScript 和静态 HTML 呈现,wmr 提供了发布中小型应用程序所需的一切。它的小尺寸也非常适合快速尝试一个库或演示一个想法。

    2.3K20

    TypeScript在前端项目的渐进式采用策略

    npm install --save-dev typescript ts-loader webpack webpack-cliwebpack.config.js配置文件const path = require.../dist", // ...}现在,你可以在命令行中运行以下命令来启动构建流程:npx webpack这将使用Webpack和ts-loader将TypeScript源代码编译为JavaScript,...利用类型定义如果项目中使用到了第三方库,确保安装对应的类型定义包,如@types/lodash。对于没有官方类型定义的库,可以尝试社区提供的定义或自己编写声明文件。...通常,这个文件应放在与库的JavaScript文件相同的位置,或者放在types或@types目录下。...将app.js重命名为app.ts。这一步标志着该模块正式进入TypeScript环境。打开app.ts,开始逐步为变量、函数参数、返回值等添加类型注解。

    11110
    领券