不要自己推出

2026-05-23 1 阅读 adunk
不要自己动手……作者:Susam Pal,2026 年 5 月 23 日 这将是对现代网页设计实践的咆哮。但在此之前,让我先从密码学领域的一个熟悉的原理开始。在软件开发人员中,尤其是在安全敏感系统上工作的开发人员中,有一条众所周知的格言:不要使用自己的加密货币。这并不意味着任何人都不能编写加密代码。必须有人这么做。这意味着,对于保护用户敏感数据的普通生产软件,我们不应该依赖未经更广泛的软件开发社区审查的私有、未经审查的实现。我们应该尽可能使用已建立的、经过审查的软件包或工具。幸运的是,现在标准的行业惯例是避免使用自己的加密货币,而是使用经过同行评审并经受时间考验的加密算法和包。大约二十年前,情况并非如此。在我职业生涯的早期,我见过几个有缺陷的本土 RC4 实现,其中存在诸如不正确的初始化向量、可预测的密钥流以及明文部分泄漏为密文等问题,使用户的敏感数据面临风险。但如今,主要的电子商务网站或银行通常不会在其网络服务中使用本土加密技术。事实上,在支付、医疗保健和个人数据处理等受监管领域,这样做可能违反强加密技术的要求,并可能导致巨额经济处罚。网站设计显然不是密码学。滚动条损坏与加密方案损坏不是同一类故障。但我希望网站设计也有类似的格言。我认为,网站的许多方面,开发人员不应该推出自己的 X,尤其是当 X 是浏览器已经做得很好并且用户每天都依赖的东西时。这里我列出了这样的X。不要滚动你自己的页面滚动。不要滚动自己的链接导航。不要滚动您自己的文本选择。不要滚动自己的上下文菜单。不要自行复制和粘贴。不要滚动您自己的密码字段。不要推出自己的日期选择器。当然,在某些有效的场景中,您可能需要推出自己的 X。但在这里,我想重点讨论您不应该推出自己的 X 的情况,以及这样做如何会导致更糟糕的用户体验,至少根据我的经验。我并不是说任何人都不应该自己建造任何东西。作为一个自己进行大量创造性计算并时不时开发有趣工具的人,我非常支持开发自己的东西。但是,当谈到为人们需要用来完成工作的严肃网站开发用户界面功能时,我希望软件开发社区在决定网站中加入哪些奇特功能以及排除哪些功能时更加保守。请记住,我不是用户体验方面的专家。远非如此。因此,我在这里所说的任何内容都不应被视为建议。但我是网络用户,作为用户,我发现一些现代网页设计模式令人沮丧。这篇文章是一位网络用户的感叹,而不是设计指南。在我上面提到的所有事情中,最让我困扰的是网站上的自定义滚动行为。我已经习惯了页面滚动对鼠标、触摸板或键盘输入的响应方式。当您使用自己的实现覆盖网络浏览器的默认滚动行为时,它会“破坏”我的页面。现在,当我滚动时,页面移动得太慢或太快。键盘滚动可能有效,也可能无效。你把我如此熟悉以至于我什至没有考虑过的东西,变成了我现在不得不思考的不熟悉的东西。自定义链接导航是我的另一个烦恼。 Web 浏览器已经可以很好地处理链接。你可以说这就是网络浏览器存在的全部原因。以下链接是他们的面包和黄油。您根本不必扰乱这种行为。如果您认为有必要,请重新考虑您想要实现的目标以及它是否真的如此重要以至于会破坏正常的链接导航。我在这里发现的最严重的罪犯是 GitHub。当您单击 GitHub 上的链接(例如文件链接或问题链接)时,它会触发用 JavaScript 实现的大量功能,为您处理链接单击。如果您不相信我,请使用 Firefox 或 Chrome 访问 GitHub 上您最喜欢的项目,输入 F12 打开浏览器的开发人员工具,然后转到“调试器”或“源”选项卡,在右侧边栏上找到“事件监听器断点”,展开“鼠标”并选择“单击”。然后单击 GitHub 上的链接,看看会发生什么。我确信我不是唯一一个注意到 GitHub 上点击的链接有时需要很长时间才能加载的人。讽刺的是,在新选项卡中打开链接通常比等待 GitHub 的 JavaScript 代码处理新选项卡中的导航要快。