2013-03-21 98 views
2

我正在使用CakePHP构建我的网站(如果有的话)。我有一个TON元素/模块,每个都有自己的文件和相当复杂的CSS(在某些情况下)。SASS和/或LESS - 我可以随时创建动态CSS文件吗?

目前CSS是在一个巨大的单一的CSS文件,但为了理智(以及下面提到的细节),我希望能够将CSS保留在它自己的文件中 - 例如css/modules/rotator.css。但是对于普通的CSS,这会调用CSS文件的TON。

于是,我开始寻找到SASS或每个推荐LESS。但是 - 似乎这些应该被编译然后上传。但在我的情况下,每个页面都可以通过CMS进行编辑,因此一页可能有10分钟的模块,然后在CMS更改后可能有20或5等。如果不打算使用它,我不想为每个模块编译CSS。

有没有方法可以让我有一吨的CSS文件,所有的编译对飞?

附注:我也想允许用户自行编辑CSS的网页和/或模块,那么这将默认CSSS后加载。 SASS和/或LESS可能吗?

我不需要一个完整的演练(虽然那会很棒),但到目前为止,我的搜索已经返回了与Ruby on Rails相关的东西(从未使用过)或者每个CSS上的通用教程语言。

欢迎任何其他建议。我是一个完整的SASS/LESS noob。如何用更少的I动态(服务器端)合并多个CSS文件

澄清的问题吗? (甚至一个链接到一个资源,将让我在正确的轨道是很多!)

+0

你能更具体地描述你的目标吗?听起来你想使用LESS/SASS来输出每个模块的文件,这是可能的,但是需要你管理每个编辑过的课程中包含哪些文件。当你说你不想要一个巨大的文件,你的意思是源CSS或输出?是SASS/LESS可以将50个小scss/less文件编译成一个大css文件或多个文件,但您需要对其进行配置。我的建议是:减少跑步次数,尝试一些东西 - 问题会变得更加清晰,并可能自行排除。 ;) – 2013-03-25 16:28:37

+0

另请参阅:http://stackoverflow.com/q/12274628/1455709 – Patrick 2014-01-21 07:08:54

回答

1

假设'对飞“的页面加载”的意思,这可能比发送多个文件更慢。我建议每当模块保存时重新编译样式表。

+0

这可能是我想要做的,但 - 如何?即使在正确的方向上的一个点将是非常有帮助的。谢谢! – Dave 2013-03-25 17:48:37

6

如果你想减少CSS文件的数量&你有一个巨大的CSS文件,所有的组件CSS,只是链接到它的所有页面&请确保你正确设置缓存头。

他们将加载文件一次,并在任何地方使用它。一个陷阱是初始页面加载时间;如果这不是问题,请使用此解决方案。如果这是一个问题,考虑将编译的CSS文件分解为几个主要的块(default.css,authoring.css,components.css,例如。)。

不要刻意试图使一个自定义的CSS为每个组件集合,你实际上将迫使用户重新下载以不同的方式重组了相同的CSS搬起石头砸自己的脚。

+0

我明白了,但我认为LESS/SASS会让我保持我的CSS文件不仅仅是一个巨大的文件。即使我将它结合在后端上,每个模块都有一个文件会更好,然后将它们合并为一个文件。 – Dave 2013-03-24 14:15:11

+0

“我不想调用一堆CSS文件。” - “我不想要一个巨大的CSS文件。”选一个。 – 2013-03-25 16:19:44

+0

你错过了我的引用。我不想要一个CSS文件进行开发,因为这是一个绝对的PAIN来维护。但是,我希望能够将所有模块CSS文件(以及其他CSS文件)合并到一个(或几个)大型CSS文件中供前端用户使用。 – Dave 2013-03-25 17:44:56

0

仅需要必要模块的问题应通过CMS解决。它与SASS或LESS无关。

如果您的CMS了解当前页面具有哪些模块,请不要运行SASS/LESS编译(除非实现缓存,否则这将非常缓慢,这不是一项简单的任务)。相反,请调整CMS的逻辑,使其包含每个模块的CSS文件。

高级CMS如Drupal不仅会自动提取必要的CSS文件,还会将它们组合成一个文件并压缩它。

如果您的CSS不知道当前页面有哪些模块(例如,“模块”只是保存在帖子主体中的HTML代码),那么您无法做任何事情。

UPD:作为红杉麦克道尔说,在他的回答,让用户下载一个大的CSS文件一次比让他们下载一些包含重复的代码较小CSS文件更好。所有这些较小的CSS文件的累计大小将会比完整的CSS文件的大小更大。

+0

我假设我可以有很多很多css文件,然后使用SASS或LESS来组合它们,并将它保存为一个缓存文件 - y/n? – Dave 2013-03-23 19:43:13

+0

是的,SASS和LESS都可以。但是你仍然需要调整你的CMS逻辑,使其包含必要的CSS文件。但红杉mcdowell是正确的,这种方法是错误的。假设您有一些价值100KB的常见CSS代码和5个20KB的模块。这使得一个200KB的累积CSS文件。如果你创建了单独的文件,你将会有一些尺寸在120到200KB之间的文件。访问不同页面的用户将被迫下载每个页面,导致大约1MB的CSS而不是200KB(它被下载一次并缓存在浏览器中)。 – 2013-03-23 19:59:44

相关问题