当前位置: 首页 > 科技观察

我的JavaScript工具链,改变了我的JavaScript的6个工具

时间:2023-03-21 23:15:22 科技观察

开始使用JavaScript,我对软件的整个理解都改变了。在给出我当前的工具链之前,我有一个建议:在没有任何强加限制的情况下练习你想掌握的语言。之后,找一份适合自己喜好的工作,否则,你可能会觉得很累。痛苦是因为你会使用错误的工具,永远无法发挥你的潜力。1.TypeScript主页上的TypeScript介绍:TypeScript是JavaScript的类型化超集,可以编译成纯JavaScript。是什么让我在每个项目中都使用TypeScript?(1)编译错误在编译时发现错误是好事,愚蠢的错误,莫名其妙的运行时错误,来不及出现的错误。对这个职业的热爱减少了,但TypeScript再次带来了欢乐。(2)类型表现力和合规性、意图和一致性、设计和力量,类型需要时间来掌握,但是,孩子们,它们是值得的。Every,Single,Time,我非常想念那些类型。TypeScript既兼容面向对象类型,也兼容函数式类型,这点非常好。当你有类型时,你可以为试图理解和使用你的代码的人节省很多时间,你可以在不看手册的情况下发现如何使用整个库,并且由于类型限制,你可以确信事情将被使用,因为它们应该被使用。TypeScript中的类型已经取得了长足的进步,但今天的类型系统已经为前端带来了强大的功能。没有类型系统感觉就像试图用脚跑赛车。它给人一种JavaScript所缺乏的工程化感觉,我使用类型来设计和实施正确的接口使用,我花在编写类型上的每一个小时都能让我安全地度过几天(好吧,这主要是我的意见)。(3)减少我的挫败感使用TypeScript,我每小时的错误和对它们感到沮丧的机会都大大减少了,仅此部分就值得了。TypeScript也在变得更好,迅速采用新的ECMAScript功能。所以,我放弃了使用纯JavaScript编码,TypeScript拥有JavaScript的所有优点。2.VisualStudioCode这不是一个IDE,而是一个文本编辑器,最好的前端文本编辑器,从他们的主页介绍:CodeEditing。重新定义。自由的。建立在开源之上。哪里都能跑。为什么选择VSCode?(1)RunsEverywhere,Everywhere是真的,我已经在我需要使用的每个操作系统上可靠地使用了VSCode,它速度很快,而且到处都有很多好处,不用担心平台支持。(2)IntelliSense它在JavaScript中非常好用,但在TypeScript中它就像神一样,快速,可靠,并且在编译之前捕获错误!我认为这是VSCode最好的特性之一。我认为这是VSCode最好的功能之一,就像多了一双眼睛。(3)缓解我的挫败感那时,Sublime中的每个插件都很慢,而且没有IntelliSense。VSCode速度很快,发布的速度越快,说实话,这么好的软件竟然免费,我也很意外。一切都按预期工作,它有我能想到的所有功能,那些不应该是核心的,都是扩展,说实话,它值得掌握。最后,用一句话来形容我的VSCode代码体验:我无怨无悔。3.React来自他们主页的介绍:AJavaScriptlibraryforbuildinguserinterfaces如前所述,我从AngularJS开始,这个功能齐全的强大前端框架,但转向React对我来说是不可避免的,这是原因。(1)Notaframework是的,它不是框架,它是我最喜欢的东西之一,我通常写小程序,不需要很多框架,在一些帮助下我可以构建小的UI。(2)拥抱函数式编程React最大的卖点就是拥抱函数式编程,符合我对JavaScript的新认识。React在简单性方面付出了很多努力,我很欣赏这一点;React用最少的语法表达了复杂的概念,像useState和高阶组件这样的东西就是一个例子,说明拥有正确的抽象比拥有一个要容易得多。堆积你可能最终会错误使用的工具要好得多。(3)全部加起来+TypeScript我不使用Svelte或Vue的原因是我不喜欢模板,我喜欢类型。在模板文件中,你没有TypeScript,你没有JavaScript,你有模板脚本,一些帮助你做事的特殊标签,没有类型,有不同的推理。我确实喜欢React的整体特性。也就是我用JSS代替CSS,不用HTML+JS,我用TSX,TypeScript里的所有CSS,HTML,JS都在一个文件里,我喜欢,IntelliSense万物皆可,编译错误,打字,无需上下文切换。在我看来,小组件是CSS+HTML+JS的混合体,将它们全部合并到TypeScript中对我来说是有益的。它有什么更好的地方?它的性能和每个新版本都在不断改进,更多的JSS被移植到静态CSS中,更多的TSX被优化等等,所以你可以用它来编程,随着时间的推移,移植器的输出会越来越好。在我工作过的公司里,我们在小程序中编写高级概念,而不是低级的东西,我相信大多数时候公司不会付钱给程序员来优化东西,他们想要可用的、准确的、可靠的和快的软件。4.RamdaRamda是一个实用的JavaScript函数式编程库。(1)代码复用性我抱怨上面的代码重复了,大部分代码都是一些小的实用函数,当我成功拥有一个文件夹后,如果我开始另一个项目,我必须重写它们,所以我一直在寻找一个好的实用程序库。现在,当我抽象函数时,我几乎没有想过让它们更可重用,因为所有通用的可重用函数都在Ramda中,它有一个非常强大的函数优先接口。(2)纯函数、无副作用和不可变一个实用程序应该包含纯函数,这意味着这些函数需要:没有副作用,并且将数据视为不可变的。这些东西与实用程序库不一致,哎呀,甚至在JavaScript内置数组函数中也不一致,不相信我吗?看这个:原生数组的sort方法改变了原始数据,Ramda的sort方法没有。(3)Transducers/DescribeTransducersfactually:Transducers消除了组合多个数组函数的性能损失。我觉得图片胜于文字,转换器很难理解:Ramda充满了转换器函数,这意味着性能非常好,你可以堆叠多个filter、map和其他21个函数,它只会迭代数组并应用函数一次,而不是N次。(4)缺点Ramda很棒,但所有好的东西都是有代价的……如果你正在考虑TypeScript。Ramda的类型、类型推断和类型解析的复杂度非常高;除此之外,主要贡献者对TypeScript根本不感兴趣。他们似乎是一群了不起的开发人员,他们在没有TypeScript的情况下驯服了JavaScript,并且对将这个令人惊叹的库移植到TypeScript的兴趣为零。尽管如此,Ramda仍然是我曾经有幸使用过的最完善的实用程序库之一,它让我在驯服JavaScript的过程中感动了很多。5.FP-TS虽然Ramda是一个很好的解决方案,但只要我们留在JavaScript领域,一旦我完全采用TypeScript,它就会变得......使用起来很尴尬,类型推断也不是很好,所以我寻找考虑到TypeScript的其他解决方案,或者最好是用TypeScript编写的。幸运的是,我从他们的主页上找到了fp-ts,一个库的奇迹:TypeScript中的类型化函数式编程。fp-ts为开发人员提供了TypeScript中类型化函数语言的流行模式和坚实的抽象。老实说,fp-ts是一个杰作,它为TypeScript带来了很多好处,并且以一种不引人注目的方式,它的类型也完全是惯用的。为什么我100%的项目都使用fp-ts?(1)流水线(Pipe)我有意回避说Ramda的流水线,因为类型分析是从左到右的特性,fp-ts版本更多的是...TypeScript和IntelliSensePhrase。这是没有管道的代码:在main中我需要使用中间变量来分配中间结果,而在main2中从右到左读取执行顺序很尴尬。有了管道,我们就不需要中间变量了,所有的数据都是流动的,但是TypeScript在使用Ramda的管道的时候大部分时候会报错,因为输入的值放在最后,所以无法推导出输入的是什么第一个函数,依此类推,因为TypeScript从左到右推断。而Ramda的流水线要起作用,推理应该是从左到右和从右到左,Ramda的流水线类似于Haskell、OCalm和F#等函数式语言中类型推理系统中常见的一个特性,但在TypeScript,尽管在JavaScript中根本不是问题。现在看看管道的fp-ts版本:不同之处在于fp-ts将管道的输入放在第一位,使TypeScript的推理很愉快。在JavaScript领域,Ramdas的方法是100%有效的惯用代码,但TypeScript缺乏从右到左的推理使其“无效”或通常难以使??用,所以我通常倾向于使用fp-ts版本的管道,而不是拉姆达。6.XState先介绍一下XState,这个本该取代Redux的库。介绍主页:现代网络的JavaScript和TypeScript有限状态机和状态转换。很长一段时间以来,我的Redux存储中缺少一些东西,我试图制作一些小的中间件来帮助我驯服Redux,但感觉……不完整。直到我找到XState。为什么我在100%的React项目中使用XState?我的问题是Redux是一半,不知不觉中我在每个React组件中做小状态机,将Redux用于扩展状态(或无限状态),一旦我发现XState,所有设计问题都会遇到有价值的竞争者。应该显示一个按钮吗?启用?显示文本A还是B?所有这些“领域”的规范,无非是几个状态,有限的,预先指定的;如果明确写入此类状态,则读取和更新组件是一种乐趣。使用AngularJS和模板,我的状态由一堆交织在一起的变量组成,不可读,使用React和Redux,所有数据都在一个地方,但状态没有任何表示,对数据的解释,但是XState,我的状态其实是明确的。