网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
本文将重点介绍两个前端领域的明星项目 Deno 和 Svelte,因为它们本身框代码已经从 TypeScript 迁移到 JavaScript 从而成功引起了开发者的注意。话不多说,直接开始!
什么是 TypeScript
TypeScript 是 JavaScript 的超集,其建立在 JavaScript 之上,TypeScript 使用 JavaScript 语法,并添加了额外的语法来支持类型。首先,开发者编写 TypeScript 代码,然后使用 TypeScript 编译器将 TypeScript 代码编译为纯 JavaScript 代码。
拥有纯 JavaScript 代码后,可以将其部署到 JavaScript 运行的任何环境中。需要注意的是:TypeScript 文件的扩展是 .ts ,而不是 JavaScript 文件的 .js 扩展名。
如果 JavaScript 程序没有任何语法错误,那么,它也是一个 TypeScript 程序。这意味着所有的 JavaScript 程序都是 TypeScript 程序,如果要将现有的 JavaScript 代码库迁移到 TypeScript,这非常有用。
TypeScript 是 2022 年排名增长最快的语言,并且在过去五年使用率显著增长,从 2017 年的 12% 上升到 2022 年的 34%。作为 JavaScript 的主要替代形式之一,TypeScript 非常受欢迎,尤其是在大型 JavaScript 开发人员中,这一切都得益于它的项目可扩展性、协作性和代码可维护性。
当然,有为 TypeScript 喝彩的,也有唱衰 TypeScript 的,本文将重点介绍两个前端领域的明星项目 Deno 和 Svelte,因为它们本身框代码已经从 TypeScript 迁移到 JavaScript 从而成功引起了开发者的注意。
Deno
2020 年左右,Deno 内部的代码实现从 TypeScript 成功切换到 JavaScript。主要基于以下几个原因:
- 更改文件时 TypeScript 编译时间需要几分钟,使得连续编译成为一个极其缓慢的过程
- 在创建实际 Deno 可执行文件和面向用户的 API 源文件中使用的 Typescript 结构正在造成运行时性能
- TypeScript 并没有证明有助于 Deno 代码组织,甚至适得其反。 比如:在两个位置有重复的独立 Body 类 https://github.com/denoland/deno/issues/4748
- 内部代码和运行时 TypeScript 声明必须手动保持同步,因为 TypeScript 编译器对生成 d.ts 文件没有帮助
- 需要维护两台 TS 编译器主机:一台用于内部 Deno 代码,另一台用于外部用户代码,尽管目的相同。
Deno 团队的目标是删除所有构建时 TS 类型检查和内部 Deno 代码的打包,期待将所有运行时代码移动到一个 JavaScript 文件中。 但是,Deno 仍将使用配套的 d.ts 文件来保存类型定义和文档。
值得一提的是,Deno 仅停止对内部 Deno 代码使用 TypeScript,而 Deno 用户代码仍将使用 TypeScript,因此需要进行类型检查。
虽然 TypeScript 有时被视为 JavaScript 的改进版本,但事实并非总是如此, TypeScript 语言也有先天缺陷, 比如:最重要的编译时间。
虽然小型项目在从纯 JavaScript 切换到 TypeScript 时可能不会看到编译时间的巨大峰值,但在大型项目(如复杂的 React 应用程序)中却会很明显。 鉴于 Deno 运行时的庞大规模,Deno 停止使用 TypeScript 也就不足为奇了。
开发期间类型检查的安全性在编译时确实有其成本, TypeScript 项目有大量关于如何解决和改进编译时间的文档,这并非没有原因。 最有趣的方法之一是使用项目引用,它允许开发人员将一大段 TypeScript 代码分解成更小的部分。
Svelte
Svelte 是一种构建 Web 应用程序的新方法。它是一个编译器,可以获取声明性组件并将它们转换为高效的 JavaScript,从而轻松地更新 DOM。目前 Svelte 已经通过 MIT 协议开源,在 Github 上狂揽 66.9K 的 star、3.3k 的 fork、超过 167k 的项目依赖量,代码贡献者 600+,妥妥的前端佼佼者。
然而,2023 年 3 月 20 日凌晨 3:00,Svelte 的作者 Loraine Lawson 发布了一条重磅消息:
The team is switching the underlying code from TypeScript to JavaScript. That and the update will then allow the team to incorporate “big ideas” for Svelte 5 later this year, he added.
意思就是说,Svelte 团队正在将底层代码从 TypeScript 切换到 JavaScript, Loraine Lawson 还补充说到,这一切都是为了 Svelte 5 而准备。有开发人员还专门去 Twitter 询问,发现这一切都是真实在发生的。
Loraine Lawson 感慨自己已经做了十年的开发,从来没有遇到过 JavaScript 的松散类型带来的诸多问题。 而使用 TypeScript,需要用 15 分钟编写代码,但可能需要 2 小时试图安抚静态类型的神 。这也就很容易理解,为什么 Svelte 要放弃 TypeScript 而拥抱 JavaScript 了。
本文总结
本文主要和大家介绍两个前端领域的明星项目 Deno 和 Svelte,因为它们本身框代码已经从 TypeScript 迁移到 JavaScript 从而成功引起了开发者的注意。关于Deno vs. Svelte,文章并没有过多展开,如果有兴趣,可以在我的主页继续阅读,同时文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏!
参考资料
https://docs.google.com/document/d/1_WvwHl7BXUPmoiSeD8G83JmS8ypsTPqed4Btkqkn_-4/edit
https://startfunction.com/2020/06/09/deno-will-stop-using-typescript/
https://github.com/denoland/deno/pull/6793
https://github.com/sveltejs/svelte
https://twitter.com/Rich_Harris/status/1639344836766576640
https://gomakethings.com/ditching-typescript-for-javascript/
https://blog.csdn.net/m0_61643133/article/details/127646247
猜你喜欢
- 2025-05-21 n8n — 可扩展的自动化工作流
- 2025-05-21 可以直接拿来做项目的开源框架
- 2025-05-21 LangFlow技术深度解析:可视化编排LangChain应用的新范式(2)
- 2025-05-21 项目中使用 husky 格式化代码和校验 commit 信息
- 2025-05-21 鸿蒙开发之ArkTS制作显式动画
- 2025-05-21 开发者必备路线图:从此告别技术迷茫
- 2025-05-21 鸿蒙NEXT开发-ArkTS
- 2025-05-21 阮一峰高质量免费 TypeScript 教程,适合有 JS 基础的人系统学习 TS
- 2025-05-21 前端项目自动检测更新并提示用户刷新页面
- 2025-05-21 Rust+Tauri2+React+TS剪切板管理桌面端应用开发示例
你 发表评论:
欢迎- 483℃几个Oracle空值处理函数 oracle处理null值的函数
- 478℃Oracle分析函数之Lag和Lead()使用
- 478℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 463℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 459℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 453℃【数据统计分析】详解Oracle分组函数之CUBE
- 436℃Oracle有哪些常见的函数? oracle中常用的函数
- 432℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Spring Boot跨域难题终结者:3种方案,从此告别CORS噩梦!
- 京东大佬问我,SpringBoot为什么会出现跨域问题?如何解决?
- 在 Spring Boot3 中轻松解决接口跨域访问问题
- 最常见五种跨域解决方案(常见跨域及其解决方案)
- Java Web开发中优雅应对跨域问题(java跨域问题解决办法)
- Spring Boot解决跨域最全指南:从入门到放弃?不,到根治!
- Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误
- Spring Cloud 轻松解决跨域,别再乱用了
- Github 太狠了,居然把 "master" 干掉了
- IntelliJ IDEA 调试 Java 8,实在太香了
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)