w3ctech

JS已死,拥抱CSS

放弃(Goodbye)JavaScript:安利(Introducing)CSS API Client

Goodbye JavaScript: Introducing our CSS API Client

Algolia团队内部,我们也会经常致力于(如何突破)搜索领域技术壁垒的研究。另外对于我们来说,今天是个很重要的日子,因为它见证了我们第十一个API Client(CSS API Client)的诞生。

CSS这门语言真的是太神奇啦。为啥酱紫说呢?(因为)只要你写CSS的时间有些年头,那么你也就能够在数日之内(in a matter of days)用CSS设计出具有简约风格的网站啦。

再后来,我们看到越来越多有关于JavaScript职责的讨论。一方认为,从使用的角度来看,CSS和JavaScript有着不同的用途,所以我们应该在各自代码段里面使用它们,从而达到更清晰的职责分离目的。另一方觉得,任何一方(指的是CSS以及JavaScript)必须依赖另外一方才能正常工作,而且在JavaScript代码中我们应该使用inline的方式来引入CSS。

Algolia团队内部,我们已经决定拿出我们应有的态度(take a stance)来彻底地(once and for all)终止这永无休止的争论。最后,我们得出的结论是:他们双方持有的观点均不正确,而且(正是由于)CSS的强大魔力以至于你(实际上)不需要写任何JavaScript代码。

没错:我们下定决心摆脱JavaScript啦。

JavaScript: 1993-2017

JavaScript: 1993-2017 JavaScript: 1993-2017

Algolia CSS API Client

The power of Algolia distilled into a single .css file

你看吧,我就说JavaScript这门语言很强大吧。在某一时刻,我们甚至考虑用JavaScript来重写我们整个引擎。正是由于JavaScript拥有异步的特点,所以(异步的)JavaScript执行速度明显(by definition)会很快

不幸的是,JavaScript这门语言(对于我们来说)还不够成熟。虽说每年都会有新的JavaScript版本出来,这也(恰恰)说明JavaScript是多么的不稳定。从另一方面来说,(W3C)自从1998年发布CSS3 release版本以后,就再也没有发布(针对CSS3)新的release版本。我们认为,上述事情都在释放一个信号:(现在的)CSS技术成熟且稳定。

CSS: 优势在于(它的)简单易用性(superiority through simplicity)

CSS这门语言没有可以媲美任何其它编程语言的特性,也没有其它编程语言所标配的特性,例如没有控制流程的if语句,没有循环(for while),函数以及正则。正因为CSS这门语言很纯粹,所以你才能够写出简洁的CSS选择器,例如#class.id:not(:checked) + a blink:nth-child(2n+1),(也正是因为CSS选择器的简洁特性),所以咱们才能一眼看出(作者的)意图。

我们已经提前曝光了自己的搜索引擎(ps:该搜索引擎完全是通过CSS实现的),所以你完全可以把玩一下

划重点啦(Seriously),(上面所提到的)search engine不但真实存在,而且具有以下特性:

  • 在用户输错的情况下,能够进行智能搜索(typo-tolerant)

  • 能够处理针对同义(关键)词的搜索(handles synonyms)

  • 能够对搜索到的结果高亮显示(highlighting)

  • 能够对搜索到的结果进行二次加工(faceting)

  • 更多......

try it live!

为你的浏览器创建真实离线搜索(的用户体验)

这个CSS API Client做的最好的一点:在断网的情况下也能够搜索。所以对服务器来讲,根本不存在发送请求这一说,所有的事情都会在浏览器端处理。这也就意味着,一旦你下载了最初的CSS文件,你也就可以在拔掉🔌的情况下完成(对关键词的)搜索啦。这也是我们称之为离线搜索的原因啦!

如果不用API来规范用户的搜索行为,那么也就意味着你所有的操作都将(变得)不可控。举个🌰,在搜索结果都是100条的情况下,你可以(用上述搜索引擎)搜索一整天,而且上述操作不会花你一分钱。所有的请求都会在浏览器端处理,这也就意味着,你可以充分利用电脑8核CPU的优势啦。另外我们已经关闭了2/3的数据中心啦,多亏了CSS搜索引擎,才让我们能够以更短的时间实现(页面)载入。

推荐你用CSS API Client来规范(用户的搜索行为)

俗话说得好:“完成CSS API Client的最好情况,不在于你给API Client增加了多少功能,而是在于你给API Client增加了多少合适的功能”。所以,我们移除了很多特性。

为了减少潜在因素,你也没有必要实时备份( instantly replicated)全球各地的数据,因为这些数据已经保存在你的浏览器中;我可以保证,这是目前为止获取数据最快的途径。

在使用Algolia的过程中,最让我们引以为傲的是,我们为所有的API client提供详细的文档说明以及丰富的代码案例。另外我们将会移除其它类型的API client,因为我们清楚的知道,大家对其它类型的API client的需求不会强于对 CSS API client。

我们对自己的CSS API Client非常有信心,体现在以下几点:

  • CSS API Client肯定会完美运行

  • 在我们继续维护CSS API Client的时候,在任何时间、任何部位,CSS API Client不会出bug

这些都在表明,我们团队是多么的有担当。

最后,告诉大家一个悲伤的故事:由于大家(几乎)不怎么使用Analytics API,我们决定移除Analytics以及移除服务所支持的SLA协议。虽说,做出这个决定很困难;不过,当我们在进行利弊权衡的时候,你会发现,移除所有没用的特性势在必行。取而代之的是,我们增加了对flexbox的支持。

下一步:让CSS之火可以燎原

完整的实践经历将会为你打开新世界的大门。我们已经开始着手为CSS搜索引擎添加机器学习管道处理(Machine Learning processing pipeline)模块,敬请期待。

w3ctech微信

扫码关注w3ctech微信公众号

共收到0条回复