Hasty Briefsbeta

双语

Building optimistic UI in Rails (and learn custom elements)

5 months ago
  • #javascript
  • #rails
  • #web-components
  • 自定义元素允许通过JavaScript定义具有行为的HTML标签,类似Hotwire的<turbo-frame>和<turbo-stream>
  • 自定义元素是Web Components的一部分,与Shadow DOM和模板并列,但可以独立使用
  • 创建自定义元素需定义继承HTMLElement的类,通过customElements.define()注册,然后在HTML中使用新标签
  • connectedCallback和disconnectedCallback等生命周期回调与Stimulus的connect/disconnect方法对应
  • 通过attributeChangedCallback和observedAttributes可实现属性变化的响应式处理
  • is属性可扩展内置元素,但Safari不支持,因此更推荐使用自主型自定义元素
  • 与Stimulus相比,自定义元素在生命周期处理、元素选择、状态管理和事件处理上更接近原生JavaScript方式
  • 简单的计数器示例演示点击增值功能,展示自定义元素基础用法
  • 乐观表单示例在提交时立即更新UI,若服务器失败则回滚,提升用户体验
  • 自定义元素具有可复用性,可在应用任意位置使用,并能与Rails和Turbo Streams无缝集成