以下是Kyle Aster
关于URL的设计为何重要的观点(2010年):
URL是通用的。它们可以在Firefox、Chrome、Safari、Internet Explorer、cURL、wget、iPhone、Android中使用,甚至可以写在便签上。它们是网络的一种通用语法,但别认为这是理所当然的。
我喜欢这个关于URL无处不在的提醒。它们不只是用来在浏览器栏里打字的。它们有很多用途:
当我回顾这些年来我遇到的优秀URL设计的案例时,我停下来想:“哇,这真的很整洁!”,以下是我想到的一些案例:
StackOverflow
是我记得遇到的第一个在计算机和人类需求之间取得良好平衡的URL。
URL遵循这样的模式:
/questions/:id/:slug
:id
是问题的唯一标识符,它不会显示任何内容。另一个?:slug
?是一个人类可读的问题释义,让你理解这个问题,而不需要真正去网站查看。
:slug
是URL中的可选参数。举例来说:
stackoverflow.com/questions/16245767
这个地址不会告诉你关于被问到的问题的任何信息,但它是一个有效的URL,允许服务器轻松地找到并提供该问题的内容。
但是StackOverflow还支持URL的:slug
部分,这使得人们可以快速理解该URL中的内容。
stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript/
如上所述,:slug
是可选的。服务器不需要查找和提供页面真正所讨论的内容,页面内容可以很容易地随着时间的推移而改变,但不会影响URL地址(我觉得这很优雅)。
当然它也可以被用来欺骗。例如这是与上面相同的URL,但它预示着完全不同的内容(不中断链接):
stackoverflow.com/questions/16245767/how-to-bake-a-cake
我记得Slack发起过一场营销活动,教育人们了解该产品。他们使用的营销活动的语言是“Slack is.”在页面以及URL中,例如
我对这种将讲故事活动的设计带到URL本身的设计非常感兴趣。
从那以后,我总是发现那些试图形成自然语言句子的URL很有趣,slack.com/is/team-communication
,而不是连接一系列层次关键字?slack.com/product/team-communication
。
这是在URL中使用句子为结构的设计。
Jessica Hische的网站在.is
域名下(显然是冰岛的)。
在她的网站上反复使用这种有趣的第三人称形式的“我是...”。例如,点击主导航中的“关于”,它会带您进入:
jessicahische.is/anoversharer
很有意思,mydomain.com/about
也很清楚,但我更喜欢描述“关于”的具体事项,并在句子结构中这样使用。
她的主要导航中的所有名词都遵循这种模式,以及她的个人作品。就像这篇关于她的一个假日烹饪包装演出文章的URL:
jessicahische.is/sofulloffancypopcorn
我一直喜欢那些URL能够很好地映射到它们的服务。例如,GitHub
/:owner/:project/compare/ref1...ref2
例如
github.com/django/django/compare/4.2.7...main
对于技术产品来说,这种在不需要看到用户界面的情况下浏览网站的能力是一种很酷的超能力。
NPM有些类似。想要查看在NPM上的react-router
吗?您无需访问NPM的主页并四处点击,也无需使用他们的搜索框。一旦您熟悉了他们的站点结构,您就知道可以使用以下方法查找一个包:
/package/:package-name
例如
npmjs.com/package/react-router
想要查找包的特定版本?
/package/:package-name/v/:semver
例如
npmjs.com/package/react-router/v/5.3.4
在使用特定产品时,这些快捷方式非常有用。在NPM的情况下,当您在查找package.json并需要查找特定版本的特定软件包的一些详细信息时,您可以通过仅仅标识您想要的版本并将详细信息输入URL栏来导航到NPM的该软件包的详细信息。
NPM的CDN,比如unpkg
,也很好地遵循这些语义。想要从已发布的包获取一个文件吗?unpkg的主页提示按如下格式获取:
unpkg.com/:package@:version/:file
在这种情况下,URL本身就是产品,这使得其设计变得更加重要。
这些是我多年来喜欢使用或看到的URL的一些例子。我相信还有其他的,但我很想知道你最喜欢的是什么?一起分享分享😉
前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。
介绍一款程序员都应该知道的软件JNPF 快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。