为什么Sass或LESS可以直接使用PHP?

时间:2014-05-15 02:29:20

标签: php css sass less

所以我一直在寻找Sass和LESS的PHP项目。我一直认为CSS需要一些可编程性。遵守体面的软件工程实践(定义一次并在任何地方使用它等)。

几年前,我开始使用PHP编写CSS来生成CSS。这是一个(半人为的)片段:[myCSS.css.php]

<?php
    header('Content-Type: text/css');
    require_once 'Config.php';
    echo <<<CSS
#container        {
                width: $containerWidth$widthUnits;
                min-height: $containerHeight$heightUnits;
                height: auto !important;
                height: $containerHeight$heightUnits;
                color: $containerFG;
                background-color: $containerBG;
                border-color: $containerBorder;
                }
CSS
?>

为什么当你可以继续使用PHP并在你的代码和CSS中共享定义时,沿着Sass / LESS,Compass路径走下去?它还避免使用大量额外的工具来增加支持,维护,更新和培训的复杂性。

一个明显的反对意见是服务器上存在生成CSS输出的运行时开销。只有当.CSS.PHP文件发生变化时,才能通过让PHP代码生成并提供CSS来轻松解决这个问题 - 这是一种简单的缓存形式。

我有一种更复杂的缓存形式,其中单个CSS.PHP文件合并来自多个CSS源文件的内容,处理所有包含并将它们返回到客户端。这节省了多个HTTP GET,大大缩短了页面加载时间。如果有人感兴趣,我很乐意分享这些代码。它长约50行(代码,不包括评论)。

我可以看到你可能被迫使用Saas / LESS如果你想要或必须使用Foundation或Bootstrap或类似的东西,但我认为答案就是拥有一个像样的基于PHP的响应框架。

那么,为什么我会选择Saas或LESS呢?

1 个答案:

答案 0 :(得分:8)

可能值得你阅读separation of concerns。没有详细说明,分离风格和内容意味着它们松散耦合,可以在不影响另一个的情况下进行更改。

在您的示例中,SASS或LESS是扩展CSS的样式语言,并允许其他功能。虽然他们提供的内容可以在PHP中完成,但这意味着设计人员现在需要了解PHP才能更改页面样式。

对于个人项目,自己动手制作的PHP解决方案可能是合适的,但随着项目的发展和更多人参与其中,明确分离角色变得非常重要。

关于SASS和LESS,他们提供了定义样式的分层方法,作为一个简短的例子:

ul {
    color: green;

    >li {
        color:red;
    }
    a {
        colour:blue;
    }
}

相当于:

ul      { color:green }
ul > li { color:red   }
ul   a  { color:blue  }

它们是围绕HTML和CSS的级联层次结构设计的,其方式与PHP不同。