【问题标题】:How to require other CoffeeScripts files in main CoffeeScript with Laravel?如何使用 Laravel 在主 CoffeeScript 中要求其他 CoffeeScripts 文件?
【发布时间】:2015-08-20 02:57:15
【问题描述】:

我有一个带有“Ruby on Rails”框架的 CoffeeScript 项目。现在我想使用“Laravel”框架而不是“Ruby on Rails”。

在“Ruby on Rails”中,有“Sprocket”资产管道管理库。使用“Sprocket”,我可以使用 #= require#= require_tree 语句在主咖啡脚本文件中导入其他咖啡脚本文件,例如

#= 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 解决这个问题?

【问题讨论】:

标签: php laravel coffeescript asset-pipeline laravel-elixir


【解决方案1】:

由于没有答案,我必须自己探索解决方案,这是一个。

Laravel-elixir 版本 (2.3.6) 中,coffeescript 具有串联功能。您必须将coffeescript 文件存储在resources/assets/coffee 目录中。然后,gulpfile.js 中的以下脚本将生成一个 app.js,它编译并连接提供的数组参数中的所有咖啡脚本。

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

因此,您不需要像在 Sprocket of Ruby on Rails 中那样在 ma​​in coffeescript 文件中包含 其他 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');

您可以要求目录中带有 *(星号)符号的所有咖啡脚本文件,例如 'models/*.coffee'

您还可以在需要目录中的所有文件之前指定首先需要的文件,通过它们的文件名,如'models/model.coffee'。 Laravel-elixir 足够智能,不会再次编译和连接该文件。

这就是我解决问题的方式。

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2019-12-04
    • 2014-06-15
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多