【发布时间】:2015-04-24 00:26:09
【问题描述】:
我们正在使用引导程序 v3.3.4。
我们的结构将所有引导程序的 LESS 源文件保存在一个单独的文件夹中,以便于升级。
在我们编译为styles.css 的主要styles.less 文件中,我们只是@import 所有依赖项,包括bootstrap.less。
@import "bootstrap/bootstrap.less"; // bootstrap source
@import "variables.less"; // our custom variables
@import "mixins.less"; // our custom mixins
@import "main.less"; // all of our custom css/less styles
我们自定义的variables.less 文件导入bootstrap 的variables.less 文件,我们自定义的mixins.less 文件导入bootstrap 的mixins.less 文件。
这意味着在我们的主 styles.less 中,bootstrap 的 variables.less 和 mixins.less 被导入了两次。 (一次在bootstrap/bootstrap.less 一次在我们的自定义mixins.less/variables.less 中)
我们这样做的原因是因为我们有其他单独的 css 文件,我们只包含在一些页面中以及 styles.css,并且这些文件是从它们自己的 less 文件编译而来的,它们依赖于两者bootstrap 的自定义变量/mixins 和我们的自定义变量/mixins,这意味着它们需要在这些 less 文件中导入。
因此,这样做要容易得多:
@import "variables.less"; // our custom variables that also @import bootstrap's variables
@import "mixins.less"; // our custom variables that also @import bootstrap's variables
并且不必担心单独导入所有依赖项(引导程序和我们的),因为我们的版本会导入引导程序版本。
如果我们尝试消除重复导入,它看起来像:
@import "bootstrap/variables.less";
@import "bootstrap/mixins.less";
@import "variables.less";
@import "mixins.less";
我们不仅要导入两倍多的文件,而且还要担心顺序,因为引导文件必须先出现。
我的问题是 A) 这样做会不会因为重复导入而导致问题,B) 即使它不一定会导致问题,这是否违反任何最佳实践,以及 C) 有没有更好的方法来解决这个问题?
【问题讨论】:
-
"这意味着在我们的主
styles.less中,...被导入了两次。" "the default behaviour" 的 import 语句。 -
@seven-phases-max 是的,以下答案之一为我清除了这一点。所以现在我只是想知道我的方法是否违反了任何最佳实践,以及是否有更好的方法来做到这一点。
-
好吧,我个人认为 B 没有违反任何“最佳实践”(您在大多数框架中看到的只是历史上强制的“传统”和“遗留”,因为某些框架的开发其中一些始于石器时代,然后更多年轻的框架只是盲目地复制旧框架的方法。
-
所以我会这样说:“如果您的任何 '...component.less' 也应该自行编译成相应的 '...component.css' ,它没有任何问题 可以导入所有必需的导入...如果这些组件也被编译为“一体式”样式表的一部分,则可以复制导入”(但是相反的方法也绝对没问题,因此确切的选择完全取决于特定的用例)。但我不想写答案,因为这样的 B 问题在这里非常偏离主题(“主要基于意见”),而且它更像是博客文章的主题。
-
@seven-phases-max 我知道有不止一种“正确”的做事方式,但也有完全错误的做事方式。我的 B 问题是关于主题的,因为如果我所做的事情违反了任何标准的最佳实践,那么无论任何人对正确做法的个人意见如何,都可能被认为是错误的。
标签: twitter-bootstrap twitter-bootstrap-3 less