将外部css和js放在rails中的位置

where to put the external css and js in rails

本文关键字:rails 位置 放在 js 外部 css      更新时间:2023-09-26

我刚开始在rails中工作,加载cssjs等外部资源对我来说一直是个问题。读了一些地方后,我发现css应该放在app/assets/stylesheets中,js应该放在app/assets/javascripts中。完成此操作后,我在视图文件中调用了cssjs,如

<%= stylesheet_link_tag "<<path to my css>>" %> 

用于css和

<%= javascript_include_tag "<<path to my js>>"  %>

我把这条线包括在我的config/initializers/assets.rb

Rails.application.config.assets.precompile += [/.*'.js/,/.*'.css/]

但是这样做给了我一些编译错误。但我不确定这是否是加载外部资源的正确方式。为了加载cssjs,我需要更改的其他位置在哪里?在性能方面,在rails中包括外部资源的最佳做法在哪里。

资产管道

你所指的是一种叫做CCD_ 13的东西——CCD_;从属的";用于HTML的文件--css/js/images

资产管道非常简单-

资产管道提供了一个连接、缩小或压缩JavaScript和CSS资产的框架。它还增加了用其他语言和预处理器(如CoffeeScript、Sass和ERB)编写这些资产的能力。

它的功能是为您提供一种";编译";您的CSS/JS转换为压缩(缩小)文件,您可以在前端HTML中调用这些文件。最终目的是使您的";资产";尽可能小,这样你的页面加载最快。

--

在您的情况下,您需要查找Sprockets清单指令——

#app/assets/stylesheets/application.css
/*
   *= require self
   *= require_tree .
*/

以上将获取app/assets/stylesheets中的每个CSS文件,并将它们连接到一个单独的application.css文件中:

#app/views/layouts/application.html.erb
<%= stylesheet_link_tag :application %>

因此,要直接回答您的问题,您只需要将外部样式表存储在app/assets/stylesheets文件夹中。

如果你有一个";真实的";外部样式表(由Google或其他公司托管),您需要将其包含在layout中,如下所示:

#app/views/layouts/application.html.erb
<%= stylesheet_link_tag :application, "http://cdn.google.com/stylesheet.css" %>

在assests各自的文件夹中添加css和js后,您必须在application.js和application.css中需要这些文件,然后才能将这两个文件包含在html中。尝试以下代码:

application.css

//= require abc

application.js

//= require xyz

在您的html:中

<%= stylesheet_link_tag "application" %> 
<%= javascript_include_tag "application"  %>