很多开发者一年来通过Basecamp写了很多JavaScript,但是并没有用它来创建现代意义上的“JavaScript应用程序”。所有的应用程序都以服务器端呈现的HTML为核心,然后添加一些JavaScript来使其看起来更棒。
当然,并不是说单页JavaScript应用程序的激增没有什么好处。主要的是更快,更流畅的接口让整页快速刷新。我们希望所有应用程序用客户端渲染重写所有东西,或者在移动设备上完全原生。
这个愿望可以得到一种解决方案:Turbolinks和Stimulus。
Turbolinks从GitHub上一种叫做pjax的方法开始,基本概念保持不变。整页刷新通常感觉慢,因为浏览器必须处理从服务器发送的一堆HTML。浏览器很快,而且在大多数情况下,HTML有效载荷往往比JSON有效载荷更大(特别是使用gzip),原因是CSS和JavaScript必须重新初始化并重新应用到页面。无论文件本身是否被缓存,如果你有相当多的CSS和JavaScript,这可能会很慢。
为了避免这种重新初始化,Turbolinks像单页面应用程序一样保持一个持续的过程,它拦截链接并通过Ajax加载新页面,服务器仍然返回完整的HTML文档。
单凭这一策略就可以使大多数应用程序中的操作变得快速(如果能够在100-200ms内返回服务器响应,这对于高速缓存来说是非常可能的)。
Stimulus计划将最佳模式汇集到一个适度的小型框架中,围绕着三个主要概念:控制,目标和动作属性。
Stimulus是一个谦虚但雄心壮志的JavaScript框架。它并不试图接管整个前端-事实上,它根本不关心HTML渲染。相反,它的设计是为了让HTML有足够多的行为。Stimulus不会自动创建HTML,而是将其附加到现有HTML文档。Stimulus与Turbolinks配对可以最小的努力为快速,引人注目的应用提供完整的解决方案。
它是如何工作的呢?用控制器,目标和动作属性来丰富HTML:
代码示范
然后写一个兼容控制器。Stimulus使其自动生效:
代码示范
Stimulus可以不断刷新页面,只要属性出现或消失,就会踢入页面。 它适用于DOM的任何更新,无论是整页加载,Turbolinks页面更改还是Ajax请求,Stimulus可以管理整个生命周期。
开发者可以根据Stimulus手册花费五分钟的时间写下一个控制器。
安装Stimulus
Stimulus与webpack资产包装器集成,以自动从应用程序中的文件夹加载控制器文件。
开发者也可以使用Stimulus与其他资产包装系统。而且,如果不需要构建步骤,只需在页面上放置一个标记,就可以轻松完成业务。
感兴趣的用户可以自行在Github上搜索,欢迎交流使用体验!
IT168文库APP
最专业的IT技术交流分享平台!扫码安装,与众多技术同好交流!
IT168文库中国最专业的IT文档分享平台,拥有百万活跃的IT技术精英!我们致力于有效帮助IT人士提升职业素养。
领取专属 10元无门槛券
私享最新 技术干货