2

「Ruby on Rails」フレームワークを使用したCoffeeScriptプロジェクトが1つあります。「Ruby on Rails」の代わりに「Laravel」フレームワークを使用したいと考えています。

「Ruby on Rails」には、アセットパイプライン管理ライブラリ「Sprocket」があります。「Sprocket」を使用すると、メインのcoffeescriptファイルに#= requireまたは#= require_treeステートメントなどで他のcoffeescriptファイルをインポートできます

#= require views/view
#= require_tree ./views

#= require_tree ./templates

init = ->
  document.removeEventListener 'DOMContentLoaded', init, false

  if document.body
    app.init()
  else
    setTimeout(init, 42)

これら#= require#= require_treeステートメントに対応するLaravelの対応物は何ですか? Elixir でこの問題を解決する他の方法はありますか?

4

1 に答える 1

3

答えがないので、私は自分で解決策を探る必要があり、これがその解決策です。

バージョン (2.3.6)ではLaravel-elixir、 の連結機能がありcoffeescriptます。coffeescriptファイルをresources/assets/coffeeディレクトリに保存する必要があります。次に、次のスクリプトは、指定された配列パラメーター内のすべての coffeescripts をコンパイルして連結gulpfile.jsする単一のスクリプトを生成します。app.js

elixir(function(mix) {
   mix.coffee(['app.coffee', 'collection.coffee']);
});

そのため、Ruby on Rails の Sprocket のように、メインの coffeescriptファイルに他の coffeescript ファイルを含める必要はありません。

coffeescriptただし、複数のディレクトリにあるすべてのファイルを要求する方法については、まだ 1 つの問題があります。これらの coffeescript ファイルも、依存関係が壊れないように整理する必要があります。必須にするために、各 coffeescript ファイル名を記述するのは面倒です。次のスクリプトは、この問題を完全に解決できます。

mix.coffee([
    'lib/license.coffee',
    'lib/*.coffee',

    'app/app.coffee',
    'app/config.coffee',
    'app/*.coffee',

    'collections/collection.coffee',
    'collections/*.coffee',

    'models/model.coffee',
    'models/*.coffee',

    'views/view.coffee',
    'views/*.coffee',

    'templates/*.coffee',

    'application.coffee'
]);

mix.scripts(null, 'public/js/vendor.js', 'resources/assets/coffee/vendor');

そのような*(アスタリスク)記号を使用して、ディレクトリ内のすべてのcoffeescriptファイルを要求できます'models/*.coffee'

ディレクトリ内のすべてのファイルを必要とする前に、最初に必要なファイルをそのようなファイル名で指定することもできます'models/model.coffee'。Laravel-elixir は、そのファイルを再度コンパイルして連結しないほどインテリジェントです。

それが私の質問の問題をどのように解決したかです。

于 2015-06-17T09:19:14.967 に答える