Sprockets4を使ってRailsアプリケーションのJavaScriptをBabelで書く
sprockets-es6 を使う方法(http://magazine.rubyist.net/?0050-ECMAScript2015 )ではなくて
sprockets-railsの4系を使ってみたかったので試した記録です。
とはいえまだ開発中なので
Add support for Sprockets 4.x. by Andreis13 · Pull Request #259 · rails/sprockets-rails
のブランチを使いました。
アプリケーションを用意します。Railsは5系を使いました。
$ git clone https://github.com/rails/rails
$ ./rails/railties/exe/rails -v
Rails 5.0.0.alpha
$ ./rails/railties/exe/rails new myapp
Gemfileを書き換えます
source 'https://rubygems.org'
gem 'babel-transpiler'
gem 'sprockets', git: 'https://github.com/rails/sprockets.git'
gem 'sprockets-rails', git: 'https://github.com/Andreis13/sprockets-rails.git', branch: 'sprockets-4'
gem 'arel', git: 'https://github.com/rails/arel.git'
gem 'rails', git: 'https://github.com/rails/rails.git'
sass-rails はこれからRails5対応するのかな? 有効にしていると依存関係の都合でまだ使えないので無効にします。
ついでに予期せぬ事態が起きそうなので turbolinks も外します(というより途中動かない原因がよくわからなくて試しに外してみました)。
# gem 'sass-rails', '~> 5.0'
# gem 'turbolinks'
適当にページ作ってみます
./bin/rails generate scaffold book title:text
app/assets/javascripts/
以下に *.es6
という名前でES6(2015)のコードを書きます。
なんでもよかったので前述のるびま記事のコードを一部拝借しました。
'use strict';
class Character {
constructor(x, y) {
this.x = x;
this.y = y;
this.health_ = 100;
}
attack(character) {
this.x += 10;
character.x -= 10;
character.health_ -= 10;
}
get health() {
return this.health_;
}
}
モジュールのロードはES6式ではなくSprockets式で……
//= require character
let c1 = new Character(0, 0);
let c2 = new Character(0, 0);
c1.attack(c2);
console.log('C1: ', c1);
console.log('C2: ', c2);
rails s
して ‘http://localhost:3000/books‘ を開きます
動いていそう。
(books-source*.es6
の中身はなぜか空?)
動かした過程でいろいろいじったのを記憶をもとにメモ
Rails.application.config.assets.precompile += %w( application.css )
Rails.application.config.assets.precompile += %w( application.js )
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>
Author And Source
この問題について(Sprockets4を使ってRailsアプリケーションのJavaScriptをBabelで書く), 我々は、より多くの情報をここで見つけました https://qiita.com/laiso/items/c07d0d3dc12777e9f076著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .