【问题标题】:Accessing shared styles from an Angular2 NgModule从 Angular2 NgModule 访问共享样式
【发布时间】:2016-11-10 23:12:32
【问题描述】:

我有一个 Angular2 项目(由 angular-cli 生成)。在项目中,我有一个主模块和一个子模块。子模块代表了一个定义明确的概念,因此很适合将其作为(可能可重用的)NgModule

子模块封装了不同的组件,只向外暴露了一个组件。这一切都很好,它运行良好,因此模块可以重复使用。

但是,该模块确实有一个全局依赖项,这会阻止它成为完全解耦、可重用的模块。 scss 文件使用@import 访问公共scss 文件。通用的scss 文件在模块之外。

因此,具体来说,模块内的scss 样式文件使用相对路径引用模块外的scss 文件,如下所示:

@import './../../../assets/styles/common-props';

我不想将scss 文件复制到模块中。使用常见的scss 文件的最佳方法是什么,以便模块变得易于重用?有最佳做法吗?

【问题讨论】:

  • 你能发布一些代码吗?我想看看你想做什么。
  • @JohnBaird 添加代码

标签: angular module sass reusability angular-cli


【解决方案1】:

不确定这里是否真的有最佳实践。这完全取决于您要如何导入和管理外部 SCSS 资源。

  1. 如果您希望通过 Homebrew 或 NPM 更新来更新 SCSS 资源,则可以从其源目录导入它。
  2. 如果您想手动控制 SCSS 资源的升级路径,只需将文件移动到您的 SCSS 层次结构中并导入即可。

一般来说,我更喜欢方法 #2。

我有一个名为“libs”的目录,我将外部 SCSS / CSS 文件组织到该目录中,然后简单地从该文件夹结构中导入。

在某些极端情况下我使用 #1,但它们很少见。

【讨论】:

  • 在场景 2 中,您是否不必将 SCSS 文件的相对路径硬编码到模块中,使其不可用于其他项目?
  • 在场景 1 中,您是说我可以从 scss 文件中制作一个节点模块并将其发布到我们内部的 npm 服务器吗?
  • 我不确定我是否在回答你的问题,也许我没有完全理解。可能包括您的整个 SCSS 结构,并展示您希望如何将这些外部 SCSS 资源包含到您的主导入文件中?
猜你喜欢
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多