开源亮点:Ajaxify Rails —— 打造流畅无刷新的Rails应用体验
以下是使用Rails和Stimulus.js来创建一个简单的Ajaxify功能的示例代码:
# Gemfile
gem 'stimulus'
gem 'jquery-rails'
# app/assets/javascripts/application.js
//= require jquery
//= require stimulus
//= require @hotwired/turbo
//= require @hotwired/turbo-drive
//= require_tree ./controllers
# app/assets/controllers/ajaxify_controller.js
import { Controller } from '@hotwired/stimulus'
export default class extends Controller {
static targets = [ "link" ]
connect() {
this.element.addEventListener('ajax:success', (event) => this.ajaxSuccess(event))
}
ajaxSuccess(event) {
const url = new URL(event.detail.url)
history.pushState({}, '', url.pathname + url.search)
}
click(event) {
event.preventDefault()
const url = this.linkTarget.href
Turbo.visit(url)
}
}
在这个例子中,我们使用了Stimulus.js来创建一个Ajaxify控制器,它监听链接点击事件,并使用Turbo.visit函数来异步请求新内容,并通过history.pushState更新浏览器的地址栏,从而模拟全页面刷新的行为。这样可以提升应用的用户体验,使应用更接近于原生应用的感觉。
评论已关闭