typescript中内置方法-摆脱 JavaScript,TypeScript 成为新宠

2023-09-26 0 8,321 百度已收录

本演讲的一些内容是事实,一些是我的观点。 例如,我可能会向您展示一张图表,其中的数据表明您最喜欢的技术正在下降。 请不要对此感到惊讶,因为这只是事实的讨论。 你可以批评我的观点,并对它们感到惊讶,但除了对 npm 感兴趣之外,我不是任何技术的利益相关者,而且我列出的事实是公正的。

当我提到“最受欢迎”、“最受欢迎”等说法时,我并不是说它是“最好的”。 两者的含义不同,不能等同。 最流行的技术不一定是最好的技术,我也不知道如何定义“最好”和“最好”。 但对于技术来说,拥有很多用户本身就是一个优势:如果很多人使用你的技术,那么就会有很多人寻找并修复它的 bug,写很多教程,也会有很多人回答问题在 Stack Overflow 上找到它。 ,ETC。 流行的工具通常会让您的工作变得更轻松。

JavaScript 开发者肖像

我们是谁? 事实上,我们 JavaScript 开发人员与其他人没有什么不同。 如果你看一下统计数据,你会发现我们和其他软件开发人员有相似的年龄分布、地域分布、工具和配置文件。 因为虽然JavaScript开发者是软件开发行业的主流群体。

如今,全球有 1100 万 JavaScript 开发人员,他们使用的开源软件比任何其他语言社区都多。 npm 存储库是当今最大的开源存储库,几乎在每个指标上都是第二大存储库的两倍以上。 所有其他存储库加起来都小于 npm。

在GitHub上,JavaScript在所有语言中拥有最多的代码行数和其他指标,并且这个位置已经保持了三年。

Stack Overflow 对 80,000 人的调查还显示,JavaScript 是最流行的编程语言,68% 的开发人员使用 JavaScript。 JavaScript 也是过去所有语言中开发人员数量最多的。 事实证明:

JavaScript 是当今世界上最流行的编程语言,也是历史上最流行的编程语言。

随着 JavaScript 的不断发展,我们发现 JavaScript 社区也在发生变化。 根据npm过去两年的调查,我们发现JavaScript开发者的经验越来越丰富,编写JavaScript代码的时间也越来越长。 以npm的使用为例。 近两年,npm 用户中“新人”(使用2年以上)的比例不断增加,而老手的比例则不断减少。

此外,2014 年,许多 npm 用户都是 JavaScript 老手。当时,JavaScript 开发人员比 npm 用户多得多; 但现在 99% 的 JavaScript 开发者都在使用 npm,刚接触 JavaScript 的新人也会开始使用 npm。 换句话说,npm 的用户数据现在相当于 JavaScript 开发者的整体概况。

随着 JavaScript 开发者社区的不断扩大,JavaScript 社区的焦点也在发生变化。 根据去年的 npm 分析数据,JavaScript 老手更注重良好实践; 他们做了更多的测试,使用更多的 linter 和包,更加关注安全性等等。整个社区正在变得更加成熟,开发人员也越来越关注这些问题。

一年来,越来越多的开发者开始关注开源模块的安全风险。 npm 还减少了一些验证和测量方法,以保护发布者帐户并标记恶意包。 但恶意软件包并不是最常见的威胁。 各类意外漏洞较为常见。 因此npm去年推出了npmaudit命令,通过升级包版本来查找和修补应用程序中的安全漏洞。 仅过去一个月,npm 就执行了 3.35 亿次安全检查。 不过,相比于安全问题,大家更关注的是性能问题,是后者的三倍。

同样令人惊讶的是,成熟的 JavaScript 开发人员越来越关注他们使用的软件的许可证。 我个人并不关心许可证。 58% 的开发者表示,软件许可证是他们考虑开源软件的原因之一,55% 的开发者表示,他们的公司严格禁止他们使用某些许可证。

哪些许可证不受欢迎? 其中有GPL和AGPL,但更多的公司会严格禁止员工使用许可证不明的开源软件; 因为如果公司想要处理牌照的法律问题,就必须聘请法律顾问。 当软件许可证不明确时,这部分费用会更多,所以如果你想开源你的软件,请将许可证放在显眼的位置,然后选择一个你熟悉的许可证。

尽管 JavaScript 是 2019 年最流行的编程语言,但四分之一的开发人员仍然不将其作为主要语言。 换句话说,他们只使用 JavaScript,因为它太流行了,他们不得不使用它。 这群开发者中,最常用的主要语言包括TypeScript、Python、Java等。

另一方面,有趣的是,12% 的 JavaScript 开发人员只使用这一种语言,而不使用其他语言。

JavaScript 被用在什么地方?

我们还会在哪里编写 JavaScript 代码? 答案几乎存在于你能想到的每一个领域。 首先我们看一下你们在 JSConf 上讨论的关于后端和前端的流行度指标:我们可以看到,多年来这两个领域的流行度基本保持不变,但近年来后端的流行度有所提高。后端已经占据上风。

97% 的 JavaScript 开发人员正在为浏览器编写 JavaScript 代码typescript中内置方法,77% 的开发人员正在为服务器编写 JavaScript。 可见Node.js仍然是社区的主流解决方案。 这里还有另外两个大惊喜:首先,46% 的开发者正在使用 JavaScript 来编写原生应用程序——我不是在谈论渐进式 Web 应用程序,或者设备主屏幕上 Web 应用程序的简化小部件,但它是一个严肃的原生应用程序PC或手机应用程序; 此外,13%的开发者正在编写嵌入式应用程序,用于可穿戴设备、智能家电等领域。

让我们深入研究一些细节。

第一个问题是,当开发者为浏览器编译应用程序时,他们应该针对移动设备还是桌面设备? 答案是绝大多数人都会使用这两个平台; 虽然很多人都喊着联通优先等口号,但毕竟只有2%的开发者只为联通平台开发Web应用; 相比之下typescript中内置方法,27% 的开发者根本不考虑移动设备,这是可以理解的——因为有很多 Web 应用程序可能永远不会在手机上运行。

我们来看一下原生应用的情况。 46%的JavaScript开发者正在编写原生应用程序,其中移动端已经占据主流——35%的开发者正在编写原生移动应用程序,26%的开发者正在编写原生桌面应用程序。

但是我们使用什么工具来编写本机应用程序呢? 这里出现了一个问题。 大家都知道,用 JavaScript 编写桌面应用程序主要使用 Electron。 然而,26% 的开发人员编写原生桌面应用程序,但只有 21% 使用 Electron。 换句话说,5% 的开发人员正在使用其他工具来编写本机桌面应用程序,那么他们使用的是哪些工具呢? 我想不通! 而且,Electron过去的使用率仍然是24%,表明人们对它的兴趣还在下降。

我们再看一下热量表。 数据显示,2017年后Electron的受欢迎程度迅速下降,到底发生了什么? 我更糊涂了。

以下是移动开发者的情况。 我设法检测了一系列框架的流行程度,但我不会详细介绍如何检测。 绿线是所有原生框架的总流行度。 可以看到,原生开发仍然很流行,但相关框架却越来越碎片化。 最流行的框架是 React Native,其次是 Cordova - 后者曾经是唯一的选择,但不再那么流行。 根据数据推算,约有 19% 的开发者使用 React Native,包括 Cordova 在内,总数约为 35%。

最后,我们看一下服务器端应用的现状。 我们在哪里部署 JavaScript? 不出所料,Docker和Kubernetes仍然是主要舞台,它们是我们部署JavaScript的主要目标; Heroku 和 Netlify 等平台也表现良好; 令人惊讶的是,VM 并没有我们想象的那么流行。 。 此外,有三分之一的开发者选择了Serverless部署,这表明Serverless不再是一项新兴技术,它无疑已经成为一种主流解决方案。

我们来看看温度计。 我选择了 Serverless、微服务和 Docker 来进行比较。 Docker自2015年开始流行,但最近它的流行度开始减弱; Serverless 的受欢迎程度仍在快速上升。

我们使用什么工具?

在进入这个主题之前,我首先要介绍一个名为“npm 库份额”的指标。 这个指标非常好用,但是也很容易引起误解,所以我想先详细解释一下。

上面是 npm 库的每周下载量图表。 我们现在每周的下载量为 120 亿次,比过去减少了 250 倍。 从下载量来看,所有内容的热度都在上升。 例如,在下面的流行后端框架的下载图表中,您可以看到它们的绝对增长速度非常快。 即使是最小众的软件包也在不断吸引新的用户,因为很多人一开始面对如此大的库时不知道从哪里开始,所以只是挑选一些小众的软件包并下载它们。

用绝对下载量作为指标是行不通的,所以我们转而使用不同软件的相对份额来判断其受欢迎程度,就像 JSConf 热度计一样,也就是所谓的“npm 库份额”指标。 这样就很清楚发生了什么——有些技术正在衰退,有些技术持平,有些正在下降,等等。但这里要记住的一件事是,份额的增加并不意味着绝对受欢迎程度的下降,它只是意味着它的发展并没有那么快。 该图表上的稳定意味着下降 250 倍,份额下降意味着增长率超过 250 倍,反之亦然。

我们来谈谈这个框架。 2019年后端框架领域的总结很简单,那就是React占据了主导地位。 React 的下载量是第二受欢迎框架的四倍多,比以往任何时候都更受欢迎。 部分原因是 React 不仅仅是一个后端框架。 事实上,它不是一个后端框架;而是一个后端框架。 React 只是一个组件模型,可以在 Web 应用程序、React Native 应用程序和桌面应用程序中使用。

我们来看看开发商的现场考察。 根据我们的调查,63% 的 JavaScript 开发人员表示他们正在使用 React。 但“使用”这个词仍然很模糊,所以我们问了一些更具体的问题。 57% 的开发人员自己编写 React 代码,6% 使用其他人编写的代码。 请注意,在剩下的开发人员中,15% 表示他们正在考虑使用 React。 因此,尽管 React 现在如此流行,但它仍然有一些下降的潜力。 不过,从npm库份额来看,React的增速已经放缓,未来如何发展还有待观察。

进一步挖掘,在 57% 自己编写 React 的开发人员中,49%(即所有开发人员的 28%)使用 React 作为他们的主要工具。 计算“有时使用”React 的其他开发人员意味着几乎一半的 JavaScript 开发人员经常使用 React。

我们来谈谈其他框架。 去年我自己就犯了一个尴尬的错误,因为我将 Angular 的第一版和第二版视为同一个框架的两个版本。 结果被别人纠正说他们完全不一样。 Angular 的第一个版本现在称为 AngularJS,而新版本的 Angular 和旧版本是两个不同的东西,这确实令人困惑。

AngularJS 的库份额自 2016 年以来仍在下降,Angular 的新版本自 2017 年以来也在下降。但请记住,这只是相对份额。 从绝对值来看,它们都在高速下降,并赢得了大量新用户。

总体而言,Angular 非常受欢迎。 37% 的 npm 用户表示他们正在使用 Angular,20% 正在使用 AngularJS,29% 正在使用新版本。 这意味着Angular用户总数至少为300万。

另一个框架是Vue,它是除了React之外唯一一个高速衰退的框架。 其图书馆份额在过去两年中翻了一番,这意味着绝对下载量下降了 10 倍以上。 我们的调查数据还显示,如今有 27% 的用户在使用 Vue,用户数量几乎接近 Angular。

我们从热量表上看一下几帧的情况。 2009 年,每个人都在谈论 Dojo 和 jQuery,但现在几乎没有人提及; 2015 年之后,Angular 的流行度将不再; React 仍在下降,这与库共享数据一致。

上面没有提到的一件事是 Web 组件。 由于 Web 组件位于浏览器外部,因此没有人去 npm 下载它们,因此我们无法跟踪其使用数据。 此外,尽管Web组件并不是很流行,但JavaScript现状调查报告显示,只有不到百分之一的开发人员正在使用Web组件。 我并不是有意忽视 Web 组件,Web 组件的用户告诉我,它的受欢迎程度远远超出了我的想象,但我可能是在吹牛。

说完后端框架,就该说说前端的故事了。

后端框架已经经历了一场革命。 以前,我们讨论前端框架时,主要讨论Sales、Amber、Happy等话题; 这些框架仍然存在并稳定增长。 但现在大家都在写丰富的后端应用,上面提到的静态框架已经不能满足新的需求了。

于是,前端框架爱好者意识到需要使用预渲染 HTML 来提高性能,于是给这些解决方案起了个响亮的名字“服务器端渲染(SSR)”。 然后你发明了一些轮子(服务器、路由等)来解决这个需求,也就是说你重新发明了一堆前端轮子,以便开发者可以使用熟悉的框架来构建完整的服务器。

不知道大家怎么看待这件事。 对我来说,我真的很喜欢将组件推送到现有框架中的想法,而不必处理服务和解析等令人头疼的问题。 这是一个好主意 - 但这个想法很熟悉,不是吗? 是 PHP 吗? 如果未来三天有人告诉我可以将我的 React 组件FTP到服务器上,那么一个循环就彻底完成了!

但要注意的是,如今这些 SSR 框架的份额仍然很小。 与 Express 相比,Express 本身曾经占据了 npm 库的 1.5%,现在仍然占有很大的份额。 相比之下,其他帧与图片底部的水平线对齐。

除去Express之外,具体看剩下的这一小部分,你会发现很多有趣的东西。 其中最受欢迎的是 Gatsby,它使用 React 并提供了一整套工具将其连接到前端部署。 请注意,目前有 8% 的开发人员正在使用 Gatsby。 相比之下,上文提到的Amber和Happy的使用率都在4%左右,远低于如今的盖茨比。 盖茨比的影响力本来就相当大,而且正在迅速衰落。

下面三个框架的名字非常相似。 首先是NextJavaScript,使用率达到9%,大家都很看重; 然后是 NuxtJavaScript,它与 NextJavaScript 非常相似,但前者使用 Vue; 最后,NestJavaScript 使用 Angular,使用率应该是 2%,而且增长速度非常健康。

热量表数据呢? 这很难做到。 “Next”这个词太常见了,当人们使用这个词时,通常不会指这个框架; “Nest”这个词的意思是嵌套,它们通常不是指 NestJavaScript 框架。 所以温度计只能看这些年直线上升的盖茨比!

GraphQL 与当今扮演前端框架角色的后端框架密切相关,它是构建支持此类内容的 API 的流行新方式。 正如您所看到的,核心 GraphQL 库和两个最受欢迎的客户端都在快速下降,调查数据证实了这些趋势。 22% 的受访者正在使用 GraphQL,49% 的受访者表示他们正在考虑使用它。 这个数字已经足够大了,2019年肯定会是GraphQL之年。

最后一组趋势数据是关于“逃离 JavaScript”的趋势。 如上所述,有些开发人员并不将 JavaScript 视为自己的主要语言,尤其是使用 Java、C#、C++ 等类型语言的开发人员。 TypeScript 目前在这些趋势中占据主导地位,去年有 46% 的受访者使用它,但今年这一比例下降至 63%。

“使用”是什么意思? 事实上,15% 的开发人员只用 TypeScript 编写东西。 这主要是因为 Angular(Angular 是用 TypeScript 编写的),所以 Angular 用户被手动等同于 TypeScript 用户。 事实上,React 和 Amber 也有 TypeScript,只是 Vue 与之无关。

那么有多少编写 TypeScript 的用户将其作为主要语言呢? 52%。 另外 34% 的用户经常写作。 这意味着 36% 的 npm 用户经常编写 TypeScript。 多么令人震惊的事实——三分之一的 JavaScript 开发者再也不想使用 JavaScript! 顺便说一句,TypeScript 的功能之一是一些类型化的描述文件,这些文件托管在 npm 库中。 上次看这方面的数据,有2.5%的下载量是类型描述文件,主要是VS Code自动下载的。 感谢谷歌。

逃避 JavaScript 的另一个趋势是 WebAssembly。 它可以以接近本机的速度运行 Web 应用程序。 除了性能之外,它还使人们能够直接在 Web 上使用用其他语言编写的现成代码。 我认为最好的功能之一是您可以编译模块并将它们发布到 npm 库,然后将它们无缝安装到您的应用程序中。

统计数据显示,WebAssembly 仍处于早期发展阶段,只有 3% 的用户使用它,即 30 万开发者; npm 库中只有 0.6% 是 wasm 软件包,但这些软件包非常出色。 值得注意的是,54%的开发者正在考虑使用WebAssembly,表明其发展潜力非常大。

为什么 JavaScript 是最流行的编程语言

在本次会议中,我想回答的第一个问题是为什么 JavaScript 是最流行的编程语言?

首先,我们说JavaScript是“最流行的”。 不要认为它是“设计最好”的编程语言。 JavaScript 如此流行的原因之一是 npm 库的存在。 有人做了一项研究来找出人们为什么选择某种编程语言。 是因为它的特点吗? 表现? 还是他的老板强迫他使用的? 第一个答案是这种语言有很多开源库。 如果一种语言有许多可以帮助您完成工作的库,那么开发人员将更有可能使用它。

人们不断向我发送这张图片,展示了为什么 JavaScript 具有如此惊人的魔力 - 这张图片相当不错,因为每当有人向 npm 添加包时,JavaScript 的陷阱就会更深,吸引更多的开发者并将他们紧紧地绑在这里。 开发者越多,陷阱就越强。

这种情况也催生了一个新现象,那就是出现了很多“不情愿的 JavaScript 开发者”。 过去这样的人很少,但现在至少有四分之一的 JavaScript 开发者属于这些类别。 他们不喜欢编写 JavaScript,他们讨厌 JavaScript,他们必须编写 JavaScript,因为他们别无选择。 这对于其他 JavaScript 开发人员来说并不是一个好消息,因为讨厌 JavaScript 的开发人员无法编写出好的 JavaScript 代码。

事实上,这些事情以前就发生过。 几年前,Ruby 开发人员发现自己陷入了 JavaScript 的世界。 他们讨厌它,在各种调查中表达了他们的不满,并试图发明 CopyScript 来解决这个问题。 结果,Ruby 开发者的声音被考虑在内,JavaScript 现在拥有了很多我们以前在 Ruby 中使用的相同功能。 TypeScript 采用了类似的方法。 前面提到,很多主要使用类型化语言,尤其是Java、C#等的开发者都非常怀念类型,而TypeScript让他们重新拥抱类型,这对他们来说是非常欣喜的。

此外,在我们的调查中,17% 对 WebAssembly 感兴趣的用户表示,他们对 WebAssembly 感兴趣是因为他们不再想编写 JavaScript。 WebAssembly 让人们不再需要编写 JavaScript,这解放了许多不情愿的 JavaScript 开发者。 这并不是什么坏消息,因为首先不是每个人都会这样做,其次人们在编写 WebAssembly 时,想要共享代码时自然会想到 npm 库。 如果他们继续使用 npm,他们可以让 JavaScript 变得更加强大,这是非常令人兴奋的。

让我们看看 React 的情况。 为什么它如此受欢迎? 部分原因是它不是一个完整的Web框架,没有诸如路由和数据模型之类的东西。 React 只是一个组件模型,它创建了真正可重用的优秀组件。 例如,这个颜色选择器和日期选择器就是很好的反例。

React 还使用 React Hooks,这是一种处理状态的方法,您可以使用 npm 将其安装到应用程序中。 React 使用这个库为您提供了很多很酷的功能,所有这些功能都使用 Web API。 您不需要从头开始编写大量代码,并且可以轻松导出它们来为您的 React 应用程序添加色彩。

这也预示着光明的未来。 我们可以将 Web 应用程序构建到一个新的、更高的具体水平; 我们不需要过多担心服务器,我们只需要将现成的组件放在一起即可,不需要每个项目都从头开始。 您可以从头开始创建出色的应用程序。 这也将形成一个良性循环。 npm 的组件越多,吸引力就越强,社区的能力就越强。 React 将成为引领历史车轮的力量,永不停歇。 但这样的未来不一定会发生。 React 的增长正在放缓,而 Vue 的下降则很强劲。 未来我们会听到 React 是否能维持目前的状态。

React 在后端的统治地位也彻底改变了前端的面貌。 支持React应用程序的服务器端渲染框架现在比传统的前端框架更受欢迎。 我们只需要为客户端编写代码,不需要为服务器构建任何东西。 我们让服务器处理它并渲染它。 将 Web 应用程序转变为丰富的后端应用程序并将其呈现在服务器上是一个好主意吗? 我不知道。 但这种观点确实很流行、很流行。 至少有一家浏览器制造商已经开始进行有针对性的优化,以便浏览器能够更快地运行React应用程序。 去年我觉得 React 组件应该成为 WebAPI 的一部分,现在我仍然坚持这个观点。

未来展望

结合这个趋势和分析,我们可以展望JavaScript的未来。

首先可以确认的是npm Tink。 这项技术非常值得期待。

其次是组件化的趋势。 想象一下未来的 Web 世界:您可以通过组装各种组件来创建出色的应用程序,而无需了解这些组件的详细信息。 多么迷人啊。 开发 Web 应用程序看起来就像拖放各种组件一样简单。 那么有多少新人会加入这个行业呢? 这不会威胁到当今程序员的工作。 高级程序员编写组件,然后十倍于普通开发人员的数量使用它们来构建构建块。 新的表现水平、新的 Web 开发人员群体,这是一个非常令人兴奋的未来。

此外,还有 WebAssembly,它允许您将各种其他库带入 JavaScript 世界并让它们进行互操作,从而更轻松地构建应用程序和更丰富的内容。 最后是本机应用程序开发。 近一半的 JavaScript 开发人员正在开发本机应用程序。 未来,我们的应用除了运行在Web上之外,还会出现在我们的手表、鞋帽、VR头盔等设备上。 JavaScript 将变得无处不在,将所有语言吸收到一个由不断扩大的开发人员社区构建的大规模开源组件的统一世界中。 这样的未来已经可以想象。

23年来,我从来没有像现在这样自信过。 所有的JavaScript开发者都站在这个舞台的中心,在正确的时间出现在正确的地点,参与历史进程。 网络是一种神奇的力量,可以促进善恶的增长。 它是玩具,也是工具,是游乐园,也是大市场。 它给我们带来惊喜和焦虑的力量。 我们可以在网络上创造新的事物,我们也可以破坏美丽的事物。 但我相信,从长远来看,我们会选择帮助世界发展的道路。 我们都不同程度地做过有害的事,但随着时间的推移,我们的善良和孝心会更加闪耀。

我希望明天分享的内容能够帮助 JavaScript 开发者了解现状,激励你们前进,激起你们的兴趣。 感谢您的观看。

英文原文:

推荐活动

Serverless技术被认为是后端开发的未来趋势,WebAssembly离我们越来越近,跨端小程序开发越来越普遍,企业级应用的后端稳定性保障手段正在成为更成熟。 一切都告诉我们,前端技术有太多值得学习的经验。 7月12日,上海ArchSummit全球建筑师将所有有用的信息集中在一处。 扫描二维码或点击阅读原文了解详细信息。

全价期间,报名请联系票务惠惠17326843116

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 typescript typescript中内置方法-摆脱 JavaScript,TypeScript 成为新宠 https://www.wkzy.net/game/197741.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务