Ruby on Rails で Vue.js を使う方法

参考:

Vue.jsとRailsでTODOアプリのチュートリアルみたいなものを作ってみた – Qiita

Vue.jsとRailsでTODOアプリのチュートリアルみたいなものを作ってみた【2018.03.24】 – RE:ENGINES

Rails 5.1 + Vue.js で開発を行う – part1 環境構築 – Qiita

Rails と Vue.js の設計覚書 – Qiita

動画付き Rails 5.1で作るVue.jsアプリケーション ~Herokuデプロイからシステムテストまで~ – Qiita

Ruby on Rails で API を叩いてVue.js で表示するまで – indies.band – Medium

RailsにVue.jsを小さく導入する | count0.org

Rails5.1, Vue.jsで動かしてみる – もふもふ技術部

Rails と Vue.js でWebサービスの環境を作ってみた – Qiita

Rails5.1+Vueで何か作る前の基礎勉強 – Qiita

Webpackerを使ったRailsでのJavaScript開発 – クックパッド開発者ブログ

Vue.js入門その4〜TODOアプリにサーバーサイドを追加してみる〜 – RE:ENGINES

Vue.js on Ruby on Rails (slides) | joker1007

Using Rails and Vue JS, Part 1 | Engine Yard

Vue.js Components in Rails Views (Example) – GoRails

Vue.js

  • モダンブラウザをサポート
  • IE は 9 以降をサポート(IE 8 以下はサポートしていない)

参考:

vuejs/vue: A progressive, incrementally-adoptable JavaScript framework for building UI on the web – GitHub

Webpacker

Requirements

  • Ruby 2.2+
  • Rails 4.2+
  • Node.js 6.0.0+
  • Yarn 0.25.2+

参考:

rails/webpacker: Use Webpack to manage app-like JavaScript modules in Rails – GitHub

新しいプロジェクトを作成する

$ rails new my_app --webpack=vue

既存のプロジェクトに追加する

Gemfile に gem を追加する

gem "webpacker", "~> 3.5"

bundler を実行する

$ bundle install

webpacker のインストール

$ rails webpacker:install

Vue.js のインストール

$ rails webpacker:install:vue

webpack-dev-server を実行する

$ bin/webpack-dev-server

vuejs-rails

参考:

adambutler/vuejs-rails: A simple asset-pipeline wrapper for Vue.js by Evan You – GitHub

タグをビューで生成する

プロパティを to_json でエスケープする

<%= content_tag :div,
  id: "hello-vue",
  data: {
    message: "Hello!",
    name: "David"
  }.to_json do %>
<% end %>

Vue インスタンスを生成する際に JSON.parse で読み込んで JavaScript の変数に代入する

document.addEventListener('DOMContentLoaded', () => {
  // Get the properties BEFORE the app is instantiated
  const node = document.getElementById('hello-vue')
  const props = JSON.parse(node.getAttribute('data'))

  // Render component with props
  new Vue({
    render: h => h(App, { props })
  }).$mount('#hello-vue');
})

参考:

webpacker/props.md at 3-x-stable · rails/webpacker – GitHub

csrfToken

rails-ujs パッケージを追加する

$ yarn add rails-ujs

リクエストヘッダーに CSRF トークンをセットする(axios の場合)

import { csrfToken } from 'rails-ujs'

axios.defaults.headers.common['X-CSRF-Token'] = csrfToken()

参考:

Vue.jsとRailsの最適な融合を考える – メドピア開発者ブログ

extractCSS

参考:

Rails 5.1, webpack4, webpackerによるvue.jsの導入時にvue-loaderのcssに関するpluginがエラーを起こす対処 – Qiita

ESLint

参考:

Rails + webpacker + Vue.jsプロジェクトにESLintを導入 – Qiita

Tips

参考:

Vue.jsとRailsの最適な融合を考える – メドピア開発者ブログ

Tagged:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です