【问题标题】:In an angular 9 app, what should be more preferred; global styles or component level styles在 Angular 9 应用程序中,应该更喜欢什么;全局样式或组件级样式
【发布时间】:2020-10-07 04:33:09
【问题描述】:

我们有两个选项可以在 Angular 9 应用程序中保留样式; styles.css 中的全局样式或组件 css 文件中的单个组件级样式。 如果从性能的角度来看项目; 什么应该是首选方式? 我们应该将所有样式保存在一个全局 style.css 文件中,还是将每个组件相关的样式保存在其 component.css 文件中?

【问题讨论】:

    标签: css angular angular9


    【解决方案1】:

    要回答这个问题,我们必须参考Angular official doc.

    通过使用组件样式,您将拥有更好的模块化设计。

    Angular 可以将组件样式与组件捆绑在一起,从而实现 more 模块化设计比常规样式表。

    但是,如果在多个组件之间有一些共同的样式,最好有一个共享的 css,例如如果你使用.SCSSLESSSASS、...等预处理器,你可以有一些_var.scss来定义通用样式,比如base color fonts, ... 然后 @import 在其他组件样式中,或者只是在样式部分中注册全局样式文件,默认情况下,预先配置了全局 styles.css 文件。

    因此,使用组件样式可为您的应用提供范围限制视图封装。此范围限制是样式模块化功能:

    • 您可以使用最有意义的 CSS 类名和选择器 在每个组件的上下文中。
    • 类名和选择器是组件本地的,不会与应用程序中其他地方使用的类和选择器发生冲突。
    • 在其他地方的样式更改 应用程序不会影响组件的样式。
    • 您可以将 每个组件的 CSS 代码与 Typescript 和 HTML 代码 组件,这导致了一个整洁的项目结构。
    • 您可以 无需搜索即可更改或删除组件 CSS 代码 整个应用程序来查找代码的其他用途。

    【讨论】:

      【解决方案2】:

      有几种方法可以将全局(应用程序范围的样式)样式添加到 Angular 应用程序。样式可以内联添加,在 index.html 中导入或通过 angular-cli.json 添加。 angular 允许我们在单个组件中添加组件特定的样式,这将覆盖全局样式。

      【讨论】:

        【解决方案3】:

        我认为性能上没有太大(如果有的话)显着差异。全局或组件样式的区别在于这些样式的范围和代码库的可维护性。通常,将所有内容保留在组件中是个好主意,因为它们的范围仅限于自己,并且不会意外地覆盖其他任何地方的其他相同样式。全局样式应该主要用于主题、实用程序、助手等。

        此外,如果出于某种原因您需要这样做,您还可以选择使组件样式全局化。

        【讨论】:

          【解决方案4】:

          定义全局样式/首选方式的步骤

          1. 在css文件夹中创建_base.scss文件(先创建css文件夹)。
          2. 在 _base.scss 文件中导入其他帮助 scss 文件
          3. 在style.scss文件中添加_base scss文件的入口(style.scss在我们创建文件夹时可用)。

          【讨论】:

            猜你喜欢
            • 2021-03-06
            • 2021-12-18
            • 2021-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多