译者|李锐审稿人|孙书娟Javascript(JS)可以充当HTML和CSS之间的粘合剂,使页面更具动态性和交互性,但Web编程在历史上的发展是不同的。在客户端渲染和其他类似技术出现之后,使用JS创建Web应用程序变得更加困难。什么是HTMX?Htmx是一个库,允许用户使用简单的标记创建现代且功能强大的用户界面。得益于它,可以直接从HTML元素执行AJAX请求、触发CSS转换、调用WebSocket和服务器发送的事件。SSR应用Htmx的使用促使人们逐渐放弃客户端渲染(CSR),转而使用服务器端渲染(SSR)。服务器端渲染(SSR)被认为是最后的手段,仅在需要快速提升性能时才使用。但是,服务器端渲染(SSR)可以构建应用程序的整个用户界面。Htmx不需要任何额外的JS包来运行,并且独立于框架和语言。因此,它可以与任何服务器平台一起使用,如NodeExpress、RAILS、Django、Phoenix、Laravel等。在服务器上重用组件Htmx允许用户使用更熟悉的库重用服务器端用户界面(UI)元素;例如,用于Node的Pug或用于RAILS和Django的模板库。它有助于使HTML变得复杂和动态。这是RentalsListing,这是一个使用Express.js和HTML构建的演示应用程序。它对统计和动态场景使用相同的部分:HTMLul.resultseachrentalinrentalsliarticle.rentalbutton.image(type="button",_="onclicktoggle.largethenif#view-caption.textContent==='ViewLarger'然后将#view-caption.textContent设置为'ViewSmaller'否则将#view-caption.textContent设置为'ViewLarger'")img(src=rental.attributes.image,alt='Animageof'+rental.attributes.title)small#view-captionViewLarger.detailsh3a(href='/rentals/'+rental.id)#{rental.attributes.title}.detail.owner跨度所有者:|#{rental.attributes.owner}.detail.typespan类型:|#{rental.attributes.category}.detail.locationspan位置:|#{rental.attributes.city}.detail.bedrooms跨度卧室:|#{rental.attributes.bedrooms}.mapimg(alt='Amapof'+rental.attributes.title,src=rental.mapbox,width="150",height="150")在首页的列表中,Pug库中的include用于显示一些内容:HTMLextendslayoutblockcontent.jumbo.righth2欢迎来到超租!p我们希望您能在住宿的地方找到您想要的东西。a.button(href="/about")关于我们.rentalslabelspan你想住在哪里?input.light(type="text",name="search",hx-post="/search",hx-trigger="keyupchangeddelay:500ms",hx-target=".results",hx-indicator=".htmx-indicator")includeincludes/rental-list.pug可以在用户每次在网站上搜索出租物业时使用相同的部分填充搜索结果结果看起来像这样:.toLowerCase();const_title=r.attributes.title.toLowerCase();return_title.includes(_search);});consttemplate=pug.compileFile('views/includes/rental-list.pug');constmarkup=template({rentals:results});res.send(markup);});服务器端路由客户端路由有其自身的一系列问题。例如,基于散列的路由和基于URL的路由之间总是存在两难选择。由于InternetExplorer11等较旧的浏览器不支持HistoryAPI,因此几乎总是首选在URL中使用片段ID的基于哈希的路由。大多数JS框架都实现了自己的客户端路由逻辑。同时,所有框架都使用自己的浏览器API,比如window.history。这会导致应用程序中出现大量样板代码。更少的JS代码Htmx的主要优点是编写并发送到浏览器的JS代码量。与超脚本一起,该库允许用户创建丰富的交互式应用程序,而无需使用JS中的客户端代码:HTML
