前端开发,不用 JavaScript 行不行?!

640?wx_fmt=gif

当前大前端环境下,JavaScript 被数百万的网页用来改进设计、验证表单、检测浏览器......那如果说前端开发中,不使用 JavaScript 到底行不行?

前端开发,不用 JavaScript 行不行?!_第1张图片

 

作者 | Matt Reyer

译者 | 姜松浩

责编 | 屠敏

出品 | CSDN(ID:CSDNNews)

以下为译文:

注:Slimvoice(https://slimvoice.co/)是我构建的一个应用程序,在该项目中,我记录如何利用尽可能少的JavaScript来开发。本文属于“一个没有JavaScript的Webapp”系列文章中的一篇。

小白Python的学习规划,我只做了5件事!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw


640?wx_fmt=png

前言

 

2014年,我在Angular 1上使用Node.js后端和MongoDB构建了Slimvoice的第一个版本(这样的方式当时风靡一时)。

2015年,我决定彻底改造用户界面并重新设计,并选择在React中重建它。事后来看,所有这些都是无用功。

在新版本中,我想证明,通过出色的设计可以提供出色的用户体验,大幅降低代码的复杂性,并且可以最大限度地提高可靠性,还能够最大限度地降低端用户的使用成本。我有一个非常自豪的前端开发经验。在这里,我将分享我在前端做出的改变,并且分享我在此过程中学到的一些无JavaScript的UI技巧。

 

640?wx_fmt=png

单页应用

 

这些年,网站臃肿问题对整个web来说没有任何改善。我厌倦了缓慢加载的不太可靠的webapp。有没有人试过在Asana中修改卡片的描述?它的速度很慢!当你输入时,用户界面会毫无理由地滞后。首先,我住在一个只有2 Mbit / s互联网连接的农村地区。使用热缓存情况下,Asana UI需要14秒才能使用。其次,你可以在下面的图片看到该应用程序由超过10MB的未压缩JavaScript组成。这说明要执行的大量代码。这怎么可以接受?

前端开发,不用 JavaScript 行不行?!_第2张图片

使用具有中等复杂程度的“渐进式Web应用程序”,你需要一组人员才能完成这样的工作。这样就会导致,最终你的代码库中会有很大一部分仅用于前端。严肃地讲,以正确的顺序加载东西是一个难题,我们为此需要投入更多的插件(参见Redux and friends)。如果你可以取消所有这类的插件会怎么样?你拥有的代码越多,你的敏捷性就越低。代码多是一种累赘,而不是一种财富。就像焦油一样。JavaScript库一直在变大,我不认为很多人正在批判性地评估它们的实际需求。人们经常以KB或MB来衡量JavaScript,就好像它只是一个下载成本。但事实并非如此。你还必须等待CPU解析/执行它。这一切都要加起来。

而精益求精。我发现了一个关于前端开发的秘密,我将和你分享。很少有人知道这一点,所以不要睁大眼睛张大嘴巴表示惊讶。如果你不使用JavaScript,你的前端不会崩溃。HTML不会抛出异常。更少的代码总是更好的。

尽情的向Elm呼喊,因为它真的是太棒了。

 

好学,高效的Python,薪资竟也这么高:

https://edu.csdn.net/topic/python115?utm_source=csdn_bw
 

640?wx_fmt=png

普通的旧HTML和CSS

 

为了Slimvoice,我想与现代JS炒作的套路相反,使应用程序完全由服务器呈现。你可能会说“啊!但是Matt!用户在使用你的应用程序时必须重新加载每一页,这一定很慢!”我想说不会。我的所有资源都被压缩和缓存的,只留下HTML在你进行交互时进行传输。我没有加载spinner。这比我长时间使用的许多PWA要快。不要相信我的话,打开你的开发工具网络面板,并将Slimvoice与一些流行的PWA进行比较。哦是的,我没有在控制台中调试的JavaScript异常。要么页面出现在你的屏幕上,要么就没有。

前端开发,不用 JavaScript 行不行?!_第3张图片

 

640?wx_fmt=png

Checkbox/Label技巧

 

当然,有些交互就会重新加载页面是不可行的。这里是我最喜欢的方式,就是向其他静态HTML页面添加交互性的技巧。我将这个用于Slimvoice中的所有下拉菜单,模态和过滤UI,所有这些都没有用到JavaScript。

  1. 创建一个

    ,其中包含一些你想要显示和隐藏的UI。

  2. 紧接着,创建一个 。这将在DOM中创建一个不可见的复选框。

  3. 无论您希望将哪个DOM节点用作切换控件,请将其包装在 标记中,其中for属性与复选框的id匹配。

  4. 使用下述CSS将其全部挂起。

#myToggledUI {
    display: none;
}
#myToggle:checked ~ #myToggledUI {
    display: block;
}

这个CSS表示应该显示紧跟在已选中的的#myToggle元素之前的#myToggledUI元素,否则将被隐藏。 〜这个运算符非常酷!这是一个完整的工作示例。

这是一个用

和一个复选框构建的模态。“取消”按钮是同一个复选框的另一个

你可能感兴趣的:(前端开发,不用 JavaScript 行不行?!)