AngularJS - 自定义指令 - CSS单独文件?

时间:2015-09-24 15:48:34

标签: javascript angularjs

我正在制作自定义指令Student.eager_load(:student_record).where("student_records.class_course_id = ?", params[:class_course_id]).order('student_records.start_date asc').last

我应该在自己的文件中为此隔离CSS吗?

如果需要主应用程序中的CSS与其他页面共享,该怎么办?

4 个答案:

答案 0 :(得分:2)

看一下LESS和SASS css编译器。

我像这样构建我的应用程序。

/app
   /directives
       /fooWidget
           fooWidget.scss
           fooWidget.js
           fooWidget.html
   /directives.scss
/app.scss
/app.js

答案 1 :(得分:1)

如果您打算在某个地方发布它,那么您肯定想要隔离CS​​S。

如果这只是供内部使用,那么这是一个偏好问题,但我认为大多数开发人员更愿意,如果它是分开的。

单独文件中的CSS仍然可以从其他地方定义的CSS继承。最终,您可能最终会使用Gulp来缩小和组合所有CSS。

答案 2 :(得分:1)

我不认为这是必要的。如果要在指令中添加模板,那么将css保存到外部文件不会造成任何伤害,因为在解析DOM时指令会被加载。为元素编写的样式将相应地从外部样式表加载。

希望有所帮助。

答案 3 :(得分:0)

将隔离CSS文件用于指令是一种很好的做法。您可以使用指令的结构,如下所示:

   /clockWidget
       clockWidget.css
       clockWidget.js
       clockWidget.html

对于自己的指令css,你可以创建一个包装所有html的css类,并使用该类只影响指令html。

例如,创建footer-widget css类并为该指令的html元素指定该类。

在clockWidget.css中:

span .footer-widget{
  background-color: red;
}

然后在你的HTML中:

    <div class="footer-widget">
      <span>I'm The footer</span>
    </div>

这样css类将包装所有的html,只影响指令html。并且您可以毫无问题地使用主应用程序css。