本文翻译自:

https://dev.to/olpeh/javascript-should-be-your-last-resort-5dje

在进行现代化Web前端开发时,使用着自己最爱的框架,有时候可能会情不自禁地用JavaScript解决所有的问题。很多时候这是无意识的,因为你日复一日的开发工作使用的正是JS。

这类似于亚伯拉罕·马斯洛(Abraham Maslow)在1966年描述的情况:

如果你仅有的工具是锤子,那么你就会不自禁地把所有东西都当作钉子。

——维基百科:Law of the instrument

图片来自Unsplash,作者FaustoMarqués

注意:在这篇文章中,我只谈论JS,尽管我在项目中使用的主要是TS——但最终,在编译后,都变成了JS。

实现UI时要考虑的因素

在所有情况下都使用JS的这种思维方式会产生不必要的处理负担,这些额外的JS操作都需要在最终用户的设备上运行。网站上的所有JS资源都需要通过网络浏览器下载、解析和执行。这通常是导致低端移动设备上的网站速度变慢和无响应,或使得网络速度变慢的原因。

那么我们应该如何走出思维困局:

是否可以用HTML完成?

如果不能,那么用HTML + CSS可以解决吗?

如果其他都没有效果,那么解决方案除了HTML和CSS之外,可能需要少量的JS。

这种思维方式对开发人员来说并不是一件易如反掌的事。可能你是一个关注JavaScript的前端开发人员,那么用这种方式解决大多数问题对你来说像呼吸一样自然。但是,你还得考虑你的最终用户。当涉及到Web性能时,客户端JS作为最大的问题一骑绝尘。

1. 是否可以用HTML完成?

计划和实现功能的基本结构和语义,先考虑是否可以使用纯HTML,而无需任何额外的样式和使用本机HTML元素和功能。如果需要一些其他样式或功能,则转到步骤2。

2.尝试使用HTML + CSS解决

使用CSS来应用所需的其他样式或动画,同时在脑海中谨记语义和可访问性。如果你要构建的特定UI片段中需要有一些额外的互动,则转到步骤3。

3.使用HTML + CSS + JS

添加满足要求所需的最少JS代码量。请记住,如果不用JS就可以解决问题,那么就应该不要用到JS。

完成后,向同事展示代码,让他们进行审核。这样的话,如果代码中还有些不必要的部分,那么就可以解决这些问题而不给用户增加客户端JS成本。

举个简单的例子

所举的这个例子,发生于Web前端开发中的几乎所有部分,但此处是一个简单的示例,用来证明我的观点。

假设你正在开发一个React项目,而你正在开发的功能具有一些UI部件,这些UI部件只有在一定的延迟(例如2秒)之后才可见。

使用React Hooks

如果.........

java鼠标指针锤子,写个锤子JS!它应该是你最后的选择相关推荐

  1. java鼠标指针锤子,如果用4个技能打不过他,那就用7个

    本篇攻略重制于[2020.3.25]对应版本[10.06] 内容/整理[冬雨] 封面[南烛子] 全文约2412字,阅读需7分钟 今天要给大家讲解的英雄是未来守护者杰斯.杰斯集消耗与爆发于一体,同时具备 ...

  2. java鼠标指针锤子,java线程工具走出锤子敲铁皮时代。

    长期以来,我都觉得多线程的使用是重要而又较难掌握的,要用的时候现看,下次用的时候忘记了,又要现看,这可能跟我长期从事的是Application Server中,某种固定架构下的编程,平时并不太需要自己 ...

  3. java鼠标指针锤子_深入剖析锤子onestep代码实现 - 上篇

    OneStep的四大功能 自身设置 设置(添删图标,图标排序),onestep模式进入.退出 应用切换 启动.切换应用,包括联系人图标,直达联系人对话页面 拖拽分享 拖拽图片.文字到侧边栏图标,然后分 ...

  4. JavaScript中改变鼠标指针样式的方法

    JavaScript中改变鼠标指针样式的方法 在js中我们可以通过style对象的cursor属性来设置鼠标指针的样式,例 var body = document.querySelector(&quo ...

  5. android java 指针_Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)...

    Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...

  6. swing jtable显示html,Java Swing:基于鼠标指针下的文本显示JTable中的工具提示

    我有一个JTable,其中显示一些使用html格式化的字符串数据.我需要显示鼠标指针Java Swing:基于鼠标指针下的文本显示JTable中的工具提示 在鼠标移到"线路1"和& ...

  7. java获取鼠标在屏幕中的位置 方法一_Java如何获取鼠标指针的位置?

    MouseInfo 提供获取有关鼠标信息的方法,例如鼠标指针的位置和鼠标按钮的数量.package org.nhooo.example.awt; import java.awt.*; public c ...

  8. Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)

    Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...

  9. 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    文章目录 一.鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 1.保存当前鼠标指针指向的位置 2.根据鼠标指针指向的位置以及比例重新计算图片位置 二.绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩 ...

最新文章

  1. linux存储--inode与block详解(七)
  2. 两种计算和输出n内5要么9除尽互惠
  3. JVM的监控工具之jinfo
  4. Laravel 查询某天数据 whereDate
  5. location驱动包_Zynq SDK 驱动探求(三):论一个外设驱动的全部身家·Xilinx SDK 驱动源码结构...
  6. python程序打完后怎么保存_如何保存要在之后使用的值应用程序执行()在python中退出?...
  7. 用python绘制玫瑰花的代码_python也能玩出玫瑰花!程序员的表白代码
  8. 黑客攻防技术宝典Web实战篇第2版—第9章 攻击数据存储区
  9. HYSBZ/BZOJ 1007 [HNOI2008] 水平可见直线 - 计算几何
  10. ffmpeg php centos,Centos安装ffmpeg插件
  11. 使用 Xilinx Documentation Navigator 查看官方文档
  12. html的canvas代码,HTML
  13. java 回车表示_Java 换行和回车
  14. sony a7 android,摄影 篇一:SONY A7R4利用ftp传输直传照片到安卓设备,完爆app体验
  15. git冲突产生原因_Git 常见问题 冲突原因分析及解决方案
  16. 设计方案,写了才知道有多香
  17. java excel 合并单元格
  18. Vue.component的属性
  19. postfix+dovecot+openldap+extmail+spamassassin+M...
  20. django项目支持外网访问--花生壳

热门文章

  1. ZYNQ-AXI总线简介
  2. 网络安全之几种常见的hei客攻击手段
  3. 第十一章:XGBoost (1)直接调用xgb的库
  4. Kali Linux系统开启SSH服务教程
  5. 【攻略】北京国际鲜花港
  6. DOS命令关闭 端口号
  7. python静态变量和静态方法
  8. 深入学习java非阻塞IO
  9. CentOS(Linux)下卸载Docker
  10. binlog2sql恢复mysql数据