JavaScript-测试框架的领导者-前端-Jest (javascript指什么)
Jest是一个便捷易用的Script测试框架。最后由Meta公司团队保养。2022年5月,Meta公司正式将自己的开源名目Jest移交给OpenJSFoundation[1],这示意Jest由公司驱动变为社区驱动,有OpenJSFoundation保底,Jest将不会因公司开展要求而中止保养。
上方咱们就来学习吧。
极速上手
初始化名目
首先创立名目目录:
mkdirjest-demos&&cdjest-demosnpminit-y
而后,装置Jest依赖:
npminstall--save-devjest
第一个测试文件
创立待测试文件src/sum.js:
functionsum(a,b){returna+b;}module.exports=sum;
创立测试文件__tests__/sum.test.js:
constsum=require('../src/sum');test('adds1+2toequal3',()=>{expect(sum(1,2)).toBe(3);});
注:依照商定,测试文件以.test.js或.spec.js开头,并且放在__tests__目录中。
package.json文件中参与脚本:
{"scripts":{"test":"jest"}}
终端上口头命令npmtest,检查结果。
图片
这样咱们就成功了第一个测试文件的编写和集成。
存在的疑问
不过目前存在2个疑问:
如何处置呢?有2个打算:
不过为了失掉完整的类型审核支持,咱们选用ts-jest。上方就来学习。
性能ts-jest
ts-jest实质上就是Jesttransformer,支持你在TypeScript名目里经常使用Jest。
这部分性能咱们参照官方教程[2]。
装置必要依赖
首先装置必要依赖:
npminstall--save-devts-jestjesttypescript@types/jest
生成性能文件
而后,生成Jest性能文件——这里借助ts-jest指令来生成:
npxts-jestconfig:init
这一步会在名目根目录下创立jest.config.js文件:
/**@type{import('ts-jest').JestConfigWithTsJest}*/module.exports={preset:'ts-jest',testEnvironment:'node',};
修正文件后缀
将src/sum.js和__tests__/sum.test.js的文件后缀改成.ts,并将代码改成ESModule形式组织。
//src/sum.tsfunctionsum(a,b){returna+b;}exportdefaultsum;
//__tests__/sum.test.tsimportsumfrom"../src/sum";test("adds1+2toequal3",()=>{expect(sum(1,2)).toBe(3);});
终端上口头命令npmtest,检查结果。
图片
也成功了。不过有一条告警,倡导咱们将tsconfig.json中的esModuleinterop字段设置成true。
释出tsconfig.json
为了设置esModuleinterop字段,咱们将tsconfig.json文件监禁进去。
$npxtsx--initCreatedanewtsconfig.jsonwith:TStarget:es2016module:commonjsstrict:trueesModuleInterop:trueskipLibCheck:trueforceConsistentCasingInFileNames:true
释出的性能中蕴含esModuleInterop:true选用,因此咱们也无需修正。不过由于开启了严厉形式(strict:true),因此还要对源代码做类型注解。
//src/sum.tsfunctionsum(a:number,b:number){returna+b;}exportdefaultsum;
再次运转测试——成功!
图片
下一步
以上,咱们就学完了Jest基础经常使用和性能的部分的内容。下一步大家可以在Jest官方上依照上方的顺序自行学习。
References
[1]OpenJSFoundation:
[2]官方教程:
[3]婚配器(Matcher)的经常使用:
[4]
[5]测试异步代码:
[6]经常使用跟启动、清算关系的一些调用周期函数:
[7]学习Mock函数的经常使用:
[8]如何性能阅读器环境的测试:
前端架构浅谈
探索前端架构的艺术,前端架构师的角色如同建筑师,他们肩负着构建高效、可扩展的数字基石的重任。 作为团队的导航者,他们不仅负责技术方向的规划,还亲自操刀架构设计,制定严谨的代码规范,持续优化开发流程,同时不忘分享知识,提升团队整体实力。 在性能评估的天平上,他们精准衡量每个前端框架的分量。 加载速度如箭在弦,渲染性能关乎用户体验,内存占用则关系到系统的耐久性。 组件化与插件机制的成熟度,API设计的合理性,以及生态系统的活跃程度,都是他们考量的关键因素。 熟练运用的工具链包括HTML/CSS/JS的大前提,React、Vue、Angular等主流框架,以及Webpack、Babel、ESLint这样的开发神器。 Git的版本管理,NPM/Yarn的依赖管理,Jest等测试工具,都是他们构建项目不可或缺的伙伴。 面对兼容性挑战,他们运用检测工具,挑选兼容性库,甚至借助Polyfill和CSS Hack来解决浏览器的多样性问题。 CSS Prefix和数据加密则在保障美观与安全的交汇点上,发挥着决定性作用。 前端安全,不容忽视。 他们严把代码质量关,防范XSS、CSRF和钓鱼攻击,通过数据过滤、HTTPS、二次验证和验证码等手段,筑起一道道坚固的防护墙。 优化加载速度,他们采用CDN加速、代码压缩、合并资源,异步加载和缓存策略,力求让用户体验如丝般顺滑。 设计前端架构的黄金法则,是模块化、组件化的精妙布局,分离架构以提高可维护性,构建工具的高效运用,以及性能优化和安全设计的并行推进。 每一次的项目经验,无论是组件库的开发,还是架构体系的构建,都见证着他们在实践中的磨砺和成长,从前后端分离到界面设计,再到多端适配和安全防护,他们无处不在,力求打造最优质的用户体验。 前端架构,不仅仅是技术的堆砌,更是用户体验和安全性的深度融合,它是一个设计师的匠心独运,一个团队的集体智慧,一个持续演进的技术旅程。
2022 年将成为主导的顶级编程语言
编程语言是程序员(开发人员)用来与计算机进行通信的计算机语言。它是用任何特定语言(C、C++、Java、Python)编写的一组指令,用于执行特定任务。编程语言主要用于开发桌面应用程序、网站和移动应用程序。以下是 2022 年最流行的顶级语言。
Python 是由 Guido van Rossum 于 1980 年代后期在荷兰构建的。Python 最初是作为 Java 在行业中的竞争对手而构建的,后来逐渐流行起来。目前,Python 在研究人员和开发人员社区中都非常受欢迎。Python 在 IEEE Spectrum 的语言排名中名列前茅,得分为满分 100。此外,Python 也很受尊重,支持率高达 44.1%。
Python 几乎适用于任何事物。Django 和 Flask 可用于 Web 开发,而 Jupyter 和 Spyder 等科学工具则用于分析和研究目的。如果您喜欢自动化,Selenium 可以帮助您!该语言的灵活性使 Python 几乎可以在任何地方使用。到目前为止,这些是 Python 中比较流行的产品。Python 的巨大支持基础(仅次于 JavaScript)产生了大量使用该语言的包、框架,甚至是成熟的开源软件。
总的来说,Python 可能对数据科学和机器学习有最大的支持。虽然还有其他语言(如 R 和 MATLAB)提供竞争,但 Python 是数据科学领域的严格统治者。机器学习中使用的大多数框架和库都仅用 Python 编写,如果想要学习机器学习(或一般的数据科学),它可能是最好的语言。
JavaScript
JavaScript 在这一点上几乎是行业领导者。JavaScript 最初于 1994 年作为 Netscape Navigator(当时最好的浏览器之一)的脚本语言而构建,它迅速崛起。直到 2008 年,Google 才在为 Google Chrome 构建 V8 引擎时设计了现代 JavaScript。最初由 Netscape 构建为 Java 的竞争对手,JavaScript 现在在开发领域拥有自己的空间。JavaScript 因其流行而被广泛认为是“互联网语言”。JavaScript 在开发者社区中的支持率最高——高达 67.7%。一般来说,JavaScript 适用于任何类型的开发活动,如移动应用程序开发、Web 开发、桌面应用程序开发等。
JavaScript 有各种各样的库和框架,可以在开发过程中使用。有用于前端开发的 Angular、Vue 和 React,而 是一种用于后端开发的非常灵活的语言。Jest 和 Mocha 是两个灵活的工具,可帮助设置单元测试以检查功能是否按预期工作。当然,如果您对其中任何一个都不太满意,您可以在前端使用普通的 HTML、CSS 和 JavaScript——就这么简单!由于来自世界各地开发人员的巨大支持,JavaScript 拥有任何语言都可以夸耀的最多数量的支持包。尽管如此,人们继续构建越来越多的包,以增加使用该语言的便利性。
Java 由 James Gosling、Mike Sheridan 和 Patrick Naughton 于 1991 年构建为“Oak”语言,是第一种在全球产生重大影响的语言。虽然新的编程语言使用与 C/C++ 相同的格式,但它融入了某些新思想,使其对更多人更具吸引力。Java 运行的原则是“一次编写,随处运行”——这意味着具有不同硬件和操作系统配置的系统可以轻松运行 Java 程序。
Java 也有各种各样的库和框架,它们在底层使用 Java。Java 用于通过 Spring 和 Hibernate 进行应用程序开发。JUnit 帮助我们为 Java 项目设置单元测试。最重要的是,Java 被用于开发原生 Android 应用程序(Android SDK 本身由 Java 开发工具包或 JDK 提供支持)。Java 可能是大多数人在大学或学校的计算机编程入门课程中被介绍的语言。Java 是用于向大众教授面向对象编程的语言。
Java 在分析和研究领域也备受推崇。Java 唯一的问题是目前该语言的支持包和项目很少。很少有社区参与——这是大多数主流语言都有的。尽管如此,Java 是一种非常容易掌握和学习的语言——这在一定程度上解释了该语言的吸引力。但是,要掌握某种形式的语言确实需要一些时间。
也许人们在本文中可以期待的最令人震惊的答案之一是 C++。尽管是大多数人用来学习数据结构和算法概念的语言,但该语言本身在实际世界中却很少使用。C++ 最初由 Bjarne Stroustrup 于 1982 年创建,作为 C 编程语言的扩展,在接下来的几年中继续声名鹊起。
C++ 可用于分析、研究以及 游戏 内开发。流行的 游戏 开发引擎——虚幻引擎——使用 C++ 作为脚本语言,用于构建 游戏 时可以定义的所有功能。C++ 在软件开发中也有广泛的用途。介于面向对象方法和面向方法方法之间,C++ 可以灵活地使用它生成的软件的性质。在 TIOBE 指数中排名第 4 意味着 C++ 至今仍具有吸引力。C++也广泛用于系统软件开发,比其他语言更容易理解。在操作系统等敏感领域使用 C++ 的主要原因是 C++ 程序的编译时间非常短。
C++ 可能拥有所有语言中最大的学习社区。大多数学生会开始他们的算法课程,用 C++ 构建树、链表、堆栈、队列和许多其他数据结构。当然,只要注意细节,它就很容易上手和学习,也很容易掌握。
Typescript
TypeScript 是 JavaScript 的超集,具有与 JavaScript 几乎相同的应用程序。TypeScript 可用于 Web 开发、移动应用程序开发、桌面应用程序开发等。在 StackOverflow 的最受欢迎语言列表中,TypeScript 是第二受欢迎的语言,受到 67.1% 的开发人员的喜爱(仅次于 Rust)。
TypeScript 主要是一种用于开发的语言,因此它对科学界没有太大吸引力。但是,由于 TypeScript 的新功能,可以预期它可能会激发更大程度的研究兴趣。该语言的技能上限比 JavaScript 低得多——并且 JavaScript 的许多“难以理解”的行为已在 TypeScript 中得到简化。换句话说,您将头撞到墙上的机会略小。
新语言正在迅速崛起,新的竞争者即将挑战 JavaScript 和 Python 拥有的宝座。由谷歌(两者的名字中都有“Go”!)主要是为了推进函数式编程的事业,Golang 在短时间内建立了大量的追随者。Golang 已经成为 StackOverflow 第五大最适合学习的语言,受到 62.3% 的开发人员的喜爱。
Golang 用于多个领域,用于开发强大的软件以及用于 Web 和移动应用程序的后端。目前,Golang 甚至支持一些基本的 Web 开发。虽然它仍处于取代 JavaScript 作为网络语言的阶段,但它正在迅速成为支持下一阶段网络的语言。
Golang 比此列表中的其他语言更难学习。此外,Golang 是一种开源语言,每次重大更新都会频繁更改,因此保持更新是必要的。
Dart 是工业领域发展最快的语言之一。谷歌在语言领域的贡献显着增加,以与微软的 TypeScript 日益流行的竞争相抗衡。Dart 因其简单性而受到世界各地程序员的高度喜爱。
Dart 用于多平台应用程序开发。与 JavaScript 一样,Dart 用于构建任何人都可以使用电子设备运行的软件。目前 Dart 最著名的用途是 Flutter 框架,Flutter 是一种用于移动应用程序开发的语言。最近的谷歌趋势表明,Flutter 尽管是一个较新的框架,但比 React Native 更受欢迎,后者是业界已经建立的移动应用程序开发框架。
Dart 比 JavaScript 更容易学习,并且能够很好地简化甚至难以理解的案例。随着市场上的 TypeScript 和 Dart 的出现,程序员在选择一种他们真正想要学习的语言时会面临多种选择。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。