我现在大约要花七八年的时间来为网络构建动态前端。从数字艺术钱包到游戏(1、2)和合成器,我已经看到了这一切。多年来,由于我的创作过程发生了翻天覆地的变化,今天,我想分享一下2021年我如何开发Web应用程序。
我仍然记得几年前与同事有关使用babel的辩论。在前端开发世界中,转堆已成为一回事,因此我们最终将构建物混为一谈以使用ES6。当时的争论是,有一天,我们可以将应用程序的目录结构推送到Web服务器上,并且由于所有浏览器随后都支持增强的ES6功能,因此我们的应用程序可以正常工作!没有构建过程。哇!那一定是在2015年左右。当我现在看这些旧应用程序的源代码时,我们的技术远景最终没有变成现实。
现在,我尝试将构建过程减至最少。当我需要编写演示应用程序时,我特别喜欢使用< script type =" text / babel">。我喜欢精确的方法,没有构建工具的途径。太。当我必须设置实际的应用程序时,我避免使用webpack和汇总。我主要对配置它们的无数方法感到沮丧。一些小事情总会被破坏,这会导致数小时的调试外来代码的麻烦。真令人沮丧。使用preact的无构建路径,最终可能会出现类似上面的情况:
< script type =" module"> //实际上,您不需要预先构建过程。从' https://unpkg.com/preact?module&#39 ;;导入{h,Component,render) const app = h(' h1',null,' Hello World!');渲染(app,document.body); < / script>
当必须使用构建工具时,我倾向于使用预先配置好的包裹或微型捆绑包。特别是,包裹非常好,因为它仅使用HTML文件作为其入口点。对我来说,这是有希望的,因为它假定了正确的目录结构和正确连接的文件,因此也许有一天我可以在没有该构建步骤的情况下将我的应用程序推入网络。
出于与上述相同的原因,我还尝试避免转码。这不是因为我不喜欢ESNext功能,而是因为我想最大程度地降低卡在转译器上的风险。因此,我尝试避免使用babel。我也不使用Typescript。对我来说,JavaScript足够高效。此外,对于React风格的项目,没有编译器意味着我停止使用JSX。相反,我发现了一个名为htm的出色库,该库使用JavaScript的模板字符串。它具有与JSX相似的语法,但是它没有违反ECMAScript标准,因此不需要转换。
如果我不舒服或不喜欢倾斜,我什至避免改变工作方式。例如,我从不切换反应钩子。我认为,我最初从iOS Objective-C编程中学到的生命周期方法是编写前端组件的漂亮比喻。而且我的网站也没有任何问题'性能。如果我开始遇到问题,我会进行切换。但是我不知道。即将到来的框架也是如此。角V2?苗条吗太酷了,但是当我已经能够熟练使用所使用的框架时,为什么还要重新学习一个框架呢?
当我开始前端开发时,测试很复杂。只有少数前端开发人员的同事正确地测试了他们的应用程序。我最终做了很多手工测试。这是令人沮丧的,没有生产力。但是,多年来,测试前端已经有了显着改善。这些工具不仅得到了显着增强。
作为前端开发人员,我们现在也想出了如何正确编写前端测试的方法。最后,我们能够区分功能代码和表示代码。对于功能代码,我们现在编写单元测试。对于演示代码,我们使用基于快照的测试和集成测试。我对适用于集成测试的cypress之类的工具感到很满意。我也喜欢ava进行单元测试。
我曾经渴望构建功能广泛的软件:功能越多越好。我不再了。取而代之的是,我尝试开发对我的用户来说效果很好的软件。我追求品质。因此,我尝试测量自己的建筑尺寸。我在交付应用程序时要格外小心,这意味着我打开了压缩和缓存。我关心优化图片等静态资产。而且我喜欢使用PageSpeed Insights或lighthouse之类的工具来检查我的应用程序。
从经验中,我了解到我几乎不会陷入算法问题。相反,我有动力学习新知识并在此过程中脱颖而出。但是,我发现自己经常花很多时间调试其他人的代码。主要是我通过npm包含的第三方库。曾经,我认为使用npm软件包是JavaScript开发人员的超能力。现在,我知道这也可能是他们的诅咒。
现在,我不再喜欢收集第三方代码,而是喜欢关注Peter Hintjens'。编写好的代码的原则。我使用自己的作品。意思是,我敢于自己编写看似复杂的代码。我仍然不会投放自己的加密货币或编写日期库,但我敢于实现协议的一部分或构建算法。这并不是说我放弃了每个npm软件包,然后去npm-keto-diet。不,相反,我对依赖项采取了更加谨慎的方法,仅在我真正需要它们时才包括它们。
我试图通过将技术远景留在办公室门口来做到这一点,以便现在我可以专注于解决眼前的问题。我尽量不再担心将来会发生什么,因为我将其视为猜测。如果我有过去的经验,我会用它来决定。对于未知的领土,我会逐步谨慎地移动。
我从十几岁开始就建立网站。如果我开源并维护了一些我经常需要的代码,那么现在我将变得更有效率。不幸的是,我是近视的。出乎意料的是,我没有想到29岁仍会使用JavaScript😂
我不再主要围绕言论自由,公平或某些政治等某些美德来构建开源。对于我来说,它们仍然是重要的优点,但我了解到我也可以使用开源来构建个人工具集。
从代码库中提取库使我可以从用户的角度考虑它。这意味着我能够着重考虑一段代码的界面。此外,同伴的压力很大。我不会向世界释放狗屎。当我的项目公开时,它将具有适当的自述文件和一些文档。并且将要进行测试。既然每个人都能看到它,那么我不妨创造一些令我感到自豪的东西。
因此,对我来说,为开源做出贡献就是建立高质量的软件。担心无法通过该特定代码获利已经变得不再那么重要了。 sindresohrus启发了我将开放源代码包视为个人工具箱。
那是我不完整的原则清单。我敢肯定,不仅限于这些。无论如何,我仍然发现其中一些观点颇具争议。我确信他们不会为每个人工作,因为我们所有的情况都不尽相同。但是我以自由职业者的身份独自工作,发现这些原则有助于我对自己正在做的事情感到满意。因此,我渴望与大家分享。
我很想听听别人的想法,看看他们是否走了相似的道路。请伸出手!另外,别忘了订阅我的新闻通讯!