`
暮雨风吹
  • 浏览: 16846 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

使用turbolinks实现局部页面刷新

 
阅读更多
turbolinks安装和使用:
  1. Addgem 'turbolinks'to your Gemfile.
  2. Runbundle install.
  3. Add//= require turbolinksto your Javascript manifest file (usually found atapp/assets/javascripts/application.js). If your manifest requires both turbolinks and jQuery, make sure turbolinks is listedafterjQuery.
  4. Restart your server and you're now using turbolinks!
  5. rails4.0默认引入turbolinks的,不需要你的配置。
  6. 使用scaffold生成person的crud
    class CreatePeople < ActiveRecord::Migration
      def change
        create_table :people do |t|
          t.string :name
          t.string :sex
          t.integer :age
          t.string :phone
          t.text :address
    
          t.timestamps
        end
      end
    end

  7. 修改people_controller
    def person_params
          params.require(:person).permit(:name, :age, :sex, :phone, :address)
        end
  8. 修改index.html.erb
    <h1>Listing people</h1>
    
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>性别</th>
          <th>年龄</th>
          <th>电话</th>
          <th>地址</th>
        </tr>
      </thead>
    
      <tbody>
        <% @people.each do |person| %>
          <tr>
            <td><%= person.name %></td>
            <td><%= person.sex %></td>
            <td><%= person.age %></td>
            <td><%= person.phone %></td>
            <td><%= person.address %></td>
            <td><%= link_to 'Show', person %></td>
            <td><%= link_to 'Edit', edit_person_path(person) %></td>
            <td><%= link_to 'Destroy', person, method: :delete, data: { confirm: 'Are you sure?' } %></td>
          </tr>
        <% end %>
      </tbody>
    </table>
    
    <br>
    
    <%= link_to 'New Person', new_person_path %>
    <br><br>
    <%= link_to 'testTurbolinds', '/people/1' %> <br>
    <%= link_to 'testTurbolinds', '/people/2' %> <br>
    <%= link_to 'NoUseTurbolinds', '/people/3','data-no-turbolink'=>true %> <br>
  9. 修改show.html.erb
    <p id="notice"><%= notice %></p>
    
    
    <p>
      <strong>Title:</strong>
      <%= @person.name %>
    </p>
    
    <p>
      <strong>Title:</strong>
      <%= @person.name %>
    </p>
    
    <p>
      <strong>Title:</strong>
      <%= @person.sex %>
    </p>
    
    <p>
      <strong>Title:</strong>
      <%= @person.age %>
    </p>
    
    <p>
      <strong>Title:</strong>
      <%= @person.phone %>
    </p>
    
    <p>
      <strong>Title:</strong>
      <%= @person.address %>
    </p>
    
    
    <%= link_to 'Edit', edit_person_path(@person) %> |
    <%= link_to 'Back', people_path %>
  10. 修改_form.html.erb
    <%= form_for(@person) do |f| %>
      <% if @person.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@person.errors.count, "error") %> prohibited this person from being saved:</h2>
    
          <ul>
          <% @person.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
          <% end %>
          </ul>
        </div>
      <% end %>
    
        <div class="field">
          <%= f.label :name %><br>
          <%= f.text_field :name %>
        </div>
        <div class="field">
          <%= f.label :sex %><br>
          <%= f.text_field :sex %>
        </div>
        <div class="field">
          <%= f.label :age %><br>
          <%= f.text_field :age %>
        </div>
        <div class="field">
          <%= f.label :phone %><br>
          <%= f.text_field :phone %>
        </div>
        <div class="field">
          <%= f.label :address %><br>
          <%= f.text_area :address %>
        </div>
    
      <div class="actions">
        <%= f.submit %>
      </div>
    <% end %>
  11. 如果application.js中报错cannot resolve symbol 'turbolinks' 不要理会
  12. 修改routes
    resources :people
    
      # The priority is based upon order of creation: first created -> highest priority.
      # See how all your routes lay out with "rake routes".
    
      # You can have the root of your site routed with "root"
      root 'people#index'
  13. localhost:3000访问
  14. 前两个使用turbolinks链接访问只加载title和body,最后一个没有使用turbolinks的吧全部的css,js都加载了
  15. 网络监控
  16. 第一个链接的请求
  17. 第二个链接的请求
  18. 第三个链接的请求
  19. 我们可以从github上turbolinks文档上看到

Turbolinks makes following links in your web application faster. Instead of letting the browser recompile the JavaScript and CSS between each page change, it keeps the current page instance alive and replaces only the body and the title in the head. Think CGI vs persistent process.

This is similar topjax, but instead of worrying about what element on the page to replace, and tailoring the server-side response to fit, we replace the entire body. This means that you get the bulk of the speed benefits from pjax (no recompiling of the JavaScript or CSS) without having to tailor the server-side response. It just works.

Do note that this of course means that you'll have a long-running, persistent session with maintained state. That's what's making it so fast. But it also means that you may have to pay additional care not to leak memory or otherwise bloat that long-running state. That should rarely be a problem unless you're doing something really funky, but you do have to be aware of it. Your memory leaking sins will not be swept away automatically by the cleansing page change any more.



分享到:
评论

相关推荐

    Laravel开发-turbolinks

    表单提交可以通过 `data-turbolinks-track="reload"` 属性来指示 Turbolinks 完全刷新页面,而不是仅更新部分内容。如果遇到无法正常工作的链接,Turbolinks 提供的 `data-turbolinks="false"` 属性可以帮助你排除...

    前端项目-turbolinks.zip

    Turbolinks是一种JavaScript库,它的核心目标是通过改变传统页面刷新的方式,显著提升用户在Web应用中的导航速度,从而提供更为流畅的用户体验。 Turbolinks工作原理主要基于HTML5的History API和PushState功能。它...

    前端项目-jquery.turbolinks.zip

    总的来说,`jquery.turbolinks`插件为使用Turbolinks的前端项目提供了一种优雅的解决方案,解决了因页面部分替换导致的JavaScript事件丢失问题,使得开发者能够更加专注于应用的功能实现,而不必过于担忧Turbolinks...

    Laravel开发-turbolinks-laravel

    在Laravel框架中,Turbolinks是一个非常有用的库,它源自Ruby on Rails社区,但已经被移植到...然而,在实际项目中,需根据应用需求和现有技术栈来评估是否适合使用Turbolinks,以确保最佳的开发体验和最终用户效果。

    turbolinks-animate:使用Turbolinks为应用提供丰富和自适应的动画

    Turbolinks动画 一种已经死机的简单而强大的方法,已经在使用Turbolinks:trade_mark:向您的应用程序中添加丰富和自适应的动画。扩展名目录释放去做贡献语义版本控制 用法 职能// Shows the initialized ...

    vue-turbolinks:修复Turbolinks缓存的Vue mixin

    Turbolinks旨在通过在后台加载新页面来提升传统的请求-呈现周期,并且此适配器使在以这种方式呈现的页面上使用Vue组件成为可能。 如果您决定使用单页应用程序,那么您已经拥有所需的一切。 :sign_of_the_horns: 要...

    turbolinks:Turbolinks使浏览Web应用程序更快

    当您跟踪链接时,Turbolinks会自动获取页面,交换其&lt;body&gt;并合并其&lt;head&gt; ,所有这些都不会导致加载整个页面的成本。 特征 自动优化导航。 无需注释链接或指定页面的哪些部分应更改。 无需服务器端...

    Python库 | Flask-Turbolinks-0.1.1.tar.gz

    它的主要目的是通过改变页面的`&lt;body&gt;`部分而不是整个页面来实现快速的页面导航,从而减少网络请求,提高页面加载速度。当用户点击链接时,Turbolinks仅下载所需的新内容,并将其替换到当前页面的`&lt;body&gt;`中,保留了...

    TurbolinksBundle:Symfony项目的Turbolinks实现

    Helthe Turbolinks捆绑包 HeltheTurbolinksBundle将与Symfony应用程序集成在一起。...使用命令行 $ composer require ' helthe/turbolinks-bundle=~1.3 ' 步骤2:在内核中注册捆绑软件 &lt;?php // app/Ap

    发条js 调试工具下载 即用

    发条JS,又称Turbolinks,是由Ruby on Rails团队开发的一款前端性能优化库,旨在提高Web应用的页面切换速度,通过跟踪点击事件并只更新页面的必要部分,从而减少全页刷新,提升用户体验。Turbolinks的工作原理在于,...

    turbolinks-android:[已弃用]本机Android适配器,用于使用Turbolinks 5构建混合应用程序

    Turbolinks是一个JavaScript库,旨在加速Web应用程序的导航过程,通过在后台加载页面内容并仅更新已更改的部分,从而提高用户体验。它最初由Twitter开发,后来成为一个开源项目。在Android平台上,Turbolinks提供了...

    react-native-turbolinks:React Native适配器,用于使用Turbolinks 5构建混合应用程序

    React本地Turbolinks 的和于React Native的实现。yarn add react-native-webview react-native-turbolinkscd ios && pod install && cd .. # CocoaPods on iOS needs this extra step警告此组件仅适用于使用React...

    turbolinks.ex:一个即插即用的软件包,用于将Turbolinks与Elixir Web框架一起使用

    Turbolinks是一个著名的前端库,最初在Ruby on Rails社区广泛使用,它通过优化页面加载,提高了Web应用的性能,特别是对于那些依赖Ajax的单页应用(SPA)。 **描述详解:** 描述中提到“即插即用”,这意味着...

    turbolinks_render:在Rails控制器中通过Turbolink支持`render`

    turbolinks_render 在Rails控制器中使用render并通过Turbolinks处理响应。 Turbolinks开箱即用地支持 。 但是不支持render ,您必须使用。 该宝石旨在解决该问题。 我认为Turbolinks / Rails应该正式处理此问题。 ...

    turbolinks-scroll:保持Turbolinks AJAX调用之间的滚动位置

    涡轮链接滚动 在Turbolinks AJAX调用之间保持滚动位置。 基于Sedad Kosovac撰写的的代码建立import { turbolinksScrollSetup } from "turbolinks-scroll"// automatically persist scroll on click or submit// for ...

    Ajax on Rails

    Rails 5引入了Turbolinks,它通过追踪页面变更,使用Ajax加载新页面,同时保留页面状态,进一步提升了性能。而Stimulus是Rails团队推出的JavaScript库,它让开发者可以声明式地管理DOM元素的行为,与Rails的UJS...

    fastr:更快的页面-更少的刷新

    由于通常重新加载和浏览器刷新的次数较少,因此可以实现更快的用户体验。 这是Fastr背后的技术如何在上运行的演示 更快的重新加载仅适用于具有相同来源的链接。 这是Turbolinks回购中解释的内容- 在不增加客户端...

    ist的matlab代码-wp-turbolinks-5:一个小插件可以激活WordPress前端中的Turbolinks

    Turbolinks 5一个小插件,可在WordPress前端中激活Turbolinks。 您可以在我的博客上找到一个。 只是四处浏览。 您可以找到有关Turbolinks的更多信息。 特征 :high_voltage: 闪电般的快速前端 已知的问题 :lady_...

    bento:Hugo的极简主题,使用Tailwind CSS-https

    没有页面刷新支持顶部栏中的自定义链接微妙的动画安装在您的Hugo网站的文件夹中运行: $ git submodule add https://github.com/leonardofaria/bento.git themes/bento 有关更多信息,请阅读Hugo的官方。入门成功...

Global site tag (gtag.js) - Google Analytics