Vue JSとWebpackを使用したレール用の単一ファイルコンポーネントとSSR
この宝石を再度構築する場合、HTTPリクエストとインフラオーバーヘッドを導入するのではなく、同じサーバー上のVueコンポーネントをレンダリングするためにMini_racerのようなものを使用するでしょう。誰かがまだこの宝石を使用していて、その仕事をしたい場合は、レンダラークラスを変更することで比較的簡単にする必要があります。
VuePortは、WebpackとVue.jsを使用して単一ファイル、サーバーとクライアントにレンダリングされたリアクティブコンポーネント、Railsビューとのシームレスな統合を有効にすることにより、RailsアプリにUI開発に対する最新のコンポーネントアプローチを提供します。
物事のその側の詳細については、単一のファイルコンポーネントのVue.jsドキュメントをご覧ください。
VuePortはWebPackrails Gemに豚を貯めて、Railsを使用してWebpackセットアップを取得してください。詳細については、確認してください。
ここ。
この行をアプリケーションのGemfileに追加します。
gem 'vueport'そして実行してください:
$ bundle
または、自分でインストールします:
$ gem install vueport
次に、実行します
rails generate vueport:install開始するために必要なすべてをブートストラップするには(これにより、WebPackRailsと、VuePortが必要とするすべてのものをインストールします)。
アプリを実行するには、実行してください
bundle exec foreman start -f Procfile.devWebpack devサーバーとRailsアプリを起動します!
展開プロセスの一部として、 npm run compile (またはyarn run compile )を実行してください。これにより、クライアントサイドバンドルの生産バージョンがコンパイルされ、使用するノードJSアプリのサーバーサイドバンドルをコンパイルします。
生産では、HTTPリクエストを基本的なNodeJSサーバーに送信して、コンテンツをレンダリングします。 Railsアプリとノードサーバーを同時に実行するには、 Procfile使用します。
コンポーネントをレンダリングするために、アプリケーションをvueportヘルパーにラップします。例: application.html.erb :
< body >
<%= vueport do %>
<%= render partial : 'shared/nav' %>
<%= yield %>
<% end %>
</ body >また、単一の引数を受け入れることもできます。例えば:
< body >
<%= vueport yield %>
</ body >Webpack Railsヘルパーをレイアウトに追加して、JavaScriptとCSSを含めます(詳細については、WebPackrails Readmeを参照してください)。
VuePortヘルパーの後にJSエントリポイントを配置してください!
例えば:
< head >
<%= stylesheet_link_tag * webpack_asset_paths ( 'application' , extension : 'css' ) %>
</ head >
< body >
<%= vueport do %>
<%= render partial : 'shared/nav' %>
<%= yield %>
<% end %>
<%= javascript_include_tag * webpack_asset_paths ( "application" , extension : 'js' ) %>
</ body >箱から出して、Vueportはコンポーネントがアプリ/コンポーネントに住むことを期待し、アセットをパブリック/ウェブパックにコンパイルします。これらを変更するには、webpack config( config/webpack.config.jsおよびconfig/webpack.server.js )とVue Gemアプリケーションconfigの両方を変更する必要があります。これを行うには、イニシャルイザーで:
Vueport . configure do | config |
config [ :server_port ] = 3001
endその構成に関する情報については、WebPackRails GEMをご覧ください。
VuePortが提供するのは、効果的に3つのアプリケーションです。
これらは、複雑なパイプラインを避けるために完全に個別に生産用に構築できるようにセットアップされています。たとえば、Dockerを完全に個別に使用してこれらの3つのアプリケーションを実行できます。
WebpackがRailsと統合された方法の詳細については、Webpack Rails Readmeのこのセクションをご覧ください。
サーバーサイドレンダリングを有効にするために、VUEサーバーレンダラーを使用して各リクエストでページのコンテンツをレンダリングする簡単なnodeJSアプリを作成しました。クライアントサイドの再水和を有効にするために、クライアントサイドVUEインスタンスのテンプレートに元のビューコンテンツを添付して、ピックアップします。
SSRは生産でのみ有効になります。
多くの最新のUIライブラリを使用した私の経験、およびそれらをRailsアプリ(特にReactおよびVue JS)と統合することを特に導き、Vue JSはレール用のコンポーネントを構築する際にライブラリをより開かれており、「バッテリーを含む」ライブラリが含まれているようです。
私はスパのために定期的にReactを使用し、その機能哲学を愛していますが、レールのフロントエンドに収まるコンポーネントを作成するために、Vueは私に最も複雑ではないようであり、Ruby開発者が推論するのが最も簡単であるようです。
vue.jsおよびReact Collaborative比較については、これをチェックしてください。
エラーCould not load compiled manifest from /app/public/webpack/manifest.jsonた
Buildプロセスの一部としてnpm run compile実行する必要がありますJSバンドルを生成する必要があります(このエラーはWebパックレールによって生成されます)
リポジトリをチェックアウトした後、 bin/setupを実行して依存関係をインストールします。次に、 rake specを実行してテストを実行します。また、実験を可能にするインタラクティブなプロンプトのbin/consoleを実行することもできます。
この宝石をローカルマシンにインストールするには、 bundle exec rake install実行します。新しいバージョンをリリースするには、 version.rbのバージョン番号を更新してから、バージョンbundle exec rake release gitタグを作成し、gitコミットとタグをプッシュし、 .gemファイルをRubygems.orgにプッシュします。
バグレポートとプルリクエストは、https://github.com/samtgarson/vueportのGithubで大歓迎です。このプロジェクトは、コラボレーションのための安全で居心地の良いスペースであることを目的としており、貢献者は貢献者の契約行動規範を遵守することが期待されています。
宝石は、MITライセンスの条件の下でオープンソースとして利用できます。