为什么我的资产没有按照我希望的方式加载 - 开发模式。 rails 4.2
Why are my assets not loaded the way I want them to be - development mode. rails 4.2
我不确定 rails 4.2 中是否有从 4.1 更改而来的设置,或者我只是疯了。但这是我的 application.js 文件:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap
//= require react
//= require react_ujs
//= require backbone
//= require app
//= require app/helpers/core.js
//= require app/collections/aisis_writer_user
//= require app/routers/aisis_writer_panel
//= require app/views/aisis_writer_panel
它清楚地说明了应该如何加载我的资源。这些文件中有几个在顶部有自己的 require 语句。现在在开发模式下,从我的角度来看,我没有得到一个巨大的资产串联文件,而是每个资产都作为脚本标签加载到页面的 header 中。按照我说的顺序就好了
<script src="/assets/jquery.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery_ujs.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/turbolinks.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/intervals.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/reset_intervals.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/routers/aisis_writer_panel.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/collections/aisis_writer_user.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/core.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/views/aisis_writer_panel.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/polling.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/bootstrap.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/react.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/react_ujs.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/backbone.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/application.js?body=1" data-turbolinks-track="true"></script>
这根本不是我指定要订购的东西的方式,因此我得到:
uncaught ReferenceError: App is not defined
aisis_writer_user.js:1 Uncaught ReferenceError: Backbone is not defined
aisis_writer_panel.js:1 Uncaught ReferenceError: Backbone is not defined
backbone.js:219 Uncaught TypeError: Cannot read property 'each' of undefined
按照我订购东西的方式,这些错误不应该出现,或者至少不是全部出现。
所以我的问题是:为什么资产管道在我告诉它以特定方式加载文件时忽略我?
Why is the asset pipeline ignoring me when I tell it to load files in a specific way?
不是,它完全按照您的要求进行操作。 您 忽略了 require
语句中间的大 require_tree .
。
require_tree .
的全部要点是它递归地包含它在您给它的目录中找到的所有文件。你给它 .
,这样你就可以将 app/assets/javascripts
目录中的每个 .js
或 .coffee
文件转储到你的清单中,无论是什么它们恰好是从磁盘读取的顺序。
如果您不想要该行为,则需要删除该行。
我不确定 rails 4.2 中是否有从 4.1 更改而来的设置,或者我只是疯了。但这是我的 application.js 文件:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap
//= require react
//= require react_ujs
//= require backbone
//= require app
//= require app/helpers/core.js
//= require app/collections/aisis_writer_user
//= require app/routers/aisis_writer_panel
//= require app/views/aisis_writer_panel
它清楚地说明了应该如何加载我的资源。这些文件中有几个在顶部有自己的 require 语句。现在在开发模式下,从我的角度来看,我没有得到一个巨大的资产串联文件,而是每个资产都作为脚本标签加载到页面的 header 中。按照我说的顺序就好了
<script src="/assets/jquery.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery_ujs.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/turbolinks.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/intervals.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/reset_intervals.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/routers/aisis_writer_panel.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/collections/aisis_writer_user.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/core.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/views/aisis_writer_panel.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/app/helpers/polling.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/bootstrap.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/react.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/react_ujs.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/backbone.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/application.js?body=1" data-turbolinks-track="true"></script>
这根本不是我指定要订购的东西的方式,因此我得到:
uncaught ReferenceError: App is not defined
aisis_writer_user.js:1 Uncaught ReferenceError: Backbone is not defined
aisis_writer_panel.js:1 Uncaught ReferenceError: Backbone is not defined
backbone.js:219 Uncaught TypeError: Cannot read property 'each' of undefined
按照我订购东西的方式,这些错误不应该出现,或者至少不是全部出现。
所以我的问题是:为什么资产管道在我告诉它以特定方式加载文件时忽略我?
Why is the asset pipeline ignoring me when I tell it to load files in a specific way?
不是,它完全按照您的要求进行操作。 您 忽略了 require
语句中间的大 require_tree .
。
require_tree .
的全部要点是它递归地包含它在您给它的目录中找到的所有文件。你给它 .
,这样你就可以将 app/assets/javascripts
目录中的每个 .js
或 .coffee
文件转储到你的清单中,无论是什么它们恰好是从磁盘读取的顺序。
如果您不想要该行为,则需要删除该行。