SCSS/Less/Sass vs <?php header("Content-type: text/css");

What are advantageous features are in SCSS/Less/Sass vs <?php header("Content-type: text/css");

我是一名 long-time PHP 开发人员,虽然我用 CSS 做了很多聪明的事情,但我从未真正深入 SCSS/Less/Sass.

在 LAMP 堆栈中工作,我从来没有从 SCSS/Less/Sass 中看到任何我无法通过让我的 "css file" 成为 .php 来做得更好的事情文件

<?php
header("Content-type: text/css");
/* Variables to be used in the following CSS heredoc */
echo <<< CSS
/* Lots of CSS code here that grabs calculated variables when I need them */
CSS;
?>

在 LAMP 堆栈中,这比安装额外的 SCSS/Less/Sass 编译器并遵循它们的语法更加通用和直接,并且它允许完整的语言发挥作用。

然而,我看到 SCSS/Less/Sass 一直在 LAMP 堆栈中使用,而 header 技术我几乎从未见过,除了我自己和少数其他人。我已经 SCSS/Less/Sass 都尝试了几次,只是对这些限制感到恼火。我错过了什么?

SCSS/Less/Sass 提供的哪些功能仅通过创建带有 css header 声明的 PHP 缺少?

(我自己发现的唯一一个是旧版本的 IE 会坚持将 .php 扩展名视为 - 而不是 - css 文件,但这很容易解决通过 one-or-two 行 .htaccess 重定向,

但是 one-time 的小不便似乎并不能抵消功能的损失?)。

Sass 可以处理的不仅仅是变量。如果您认为这是 Sass、

的 only/main 好处

really want to dig into the docs a bit more.

首先,最有用的功能之一是允许嵌套,而本机 CSS 不允许。这可以让您以合乎逻辑的方式对规则进行分组,因此:

#main {
    // some rules
}

#main .p {
    // some more rules
}

变得更清洁(更重要的是,从 logical/readability 的角度来看,更清洁):

#main {
    // some rules

    p {
        // some rules just for paragraphs
    }
}

将伪 类 与其元素进行逻辑分组也很方便:

a {
    // some rules

    &:hover {
        // some rules just for the hover
    }
}

与上述相同的方法也可以用于媒体查询。非常方便:

#foo {
    // some rules

    @media screen and (max-width: 320px) {
        // some media queried rules
    }
}

或者对于数学 PHP 本身无法处理(下面是一个明显人为设计的示例,但这种事情 可以 非常有用):

width: 1px + 1px + 1px;

颜色数学:

>> #777 + #777
#eeeeee

您必须在 PHP 中复制多种 built-in functions。根据我的经验,彩色的可能非常有用。

最后一点:我见过的大多数走 PHP-as-CSS 路线的人都没有对其进行任何类型的缓存,需要 PHP 生成CSS 每次。 Sass 编译为 static 文件,这在您的服务器上更容易。