【问题标题】:less/sass with php用 php 减少/sass
【发布时间】:2011-06-26 13:25:11
【问题描述】:

我是一名前端开发人员,最近考虑使用 SASS 或 LESS 进行 CSS 开发。

但是,我不使用 Ruby,也不想依赖激活 JavaScript 的用户。有人对使用 PHP 项目使用 SASS 或 LESS 有任何提示吗?

【问题讨论】:

标签: php sass less


【解决方案1】:

下载最新版lessphp here.

这是我如何尝试的示例:

<?php
require 'lessc.inc.php';

$less = new lessc('test.less');
file_put_contents('test.less.css', $less->parse());

?>
<html>
<head>
    <title>Less CSS</title>
    <link rel="stylesheet" href="test.less.css" type="text/css" />
</head>
<body>
    <h1>This isn't supposed to be black!</h1>
</body>
</html>

还有我的 test.less 文件:

@color : #33ddff;
.colorful(@textcolor : red){
    color : @textcolor;
}
h1{
    .colorful(@color);
}

它适用于我,它是 php!

【讨论】:

  • 是的,真正简单的解决方案,这就是我的减少之旅的开始
【解决方案2】:

你现在有我写的两个选项:

两者都有很好的记录。我鼓励您尝试一下,如果有任何问题,请告诉我。

【讨论】:

  • +1(我目前正在使用 SCSS 模块,因为 phpsass 没有文档)
  • @leafo : 你打算支持 SCSS 3.3 吗?知道我们什么时候可以期待吗?
  • @leafo 是否有与lessphp 一样工作的scssphp 版本?我喜欢 lessphp API 的 compileToCacheFileOnCommand 特性。
【解决方案3】:

安装 Ruby。安装 SASS。使用 SASS。

它输出静态文件,因此您只需像其他任何 CSS 一样上传它们作为构建/发布过程的一部分。

【讨论】:

  • 是的,ruby 在您的计算机上运行,​​并生成 CSS 文件。您的用户只是正常获取 CSS 文件。服务器上不需要 ruby​​。
  • 这在编写和测试之间造成了巨大的差距,完全破坏了工作流程。
  • @hugo_leonardo 如果你在 watch 模式下使用 sass,这个差距会立即消失stackoverflow.com/a/2647819/1820
  • @Cheekysoft 链接到的答案很棒。它很好地扩展了这个公认的答案。请阅读那个,无礼的新手!我知道,因为我自己就是一个 sass 新手。
  • 我能问一下为什么这个答案被接受了吗?问题是关于 php 中的 less/sass,但使用此解决方案需要用户安装 Ruby...我同意 - 这是实现目标的某种方式,但我不同意这是最好的。
【解决方案4】:

看看这个教程: http://net.tutsplus.com/tutorials/php/how-to-squeeze-the-most-out-of-less/

(谷歌搜索'less php'时的第4个条目)

【讨论】:

  • 是的,永远!这只是为了指出找到答案的困难。
【解决方案5】:

LESS PHP 占用大量资源...好吧,很多是相对的,但无论如何,你应该检查输出 css。 如果您使用的是 Mac,请使用 LESSapp。如果您在 Windows 上,请使用 dotLEss(实际上它是一个库,可以集成到多个 .NET 项目中,但是它有一个小型命令行编译器,它会输出一个有效的 CSS 文件)

【讨论】:

    【解决方案6】:

    作为我工作的一部分,我确实使用 sass 和 php。

    您可以尝试PhamlP,因为这是我使用的。 PhamlPHamlSassPHP 的端口。

    您可以让 sass 解析器在每次页面加载时运行,或者您可以让它缓存它生成的 css

    Here is the same question question being asked.如果您想查看更多选项

    【讨论】:

      【解决方案7】:

      您可以为此使用 PhpLessDemandBridge:https://github.com/andyhausmann/PhpLessDemandBridge

      您可以简单地在模板中使用它,例如:

      <link rel="stylesheet" type="text/css" media="all"  href="css/engine/css.php?file=bootstrap.less" />
      

      引擎可以通过配置文件进行配置,您可以在其中定义较少文件和缓存文件的路径。

      通过定义“css.php?file=bootstrap.less”,您将引擎指向引导文件,该文件会导入其他更少的文件,例如Twitter Bootstrap 之类的。

      我将它用于 Magento、TYPO3 CMS 等等。

      在第一行中,我包含了 Twitter Bootstrap 所需的部分 - 之后我包含了我自己的主题和覆盖。

      【讨论】:

        【解决方案8】:

        如果您正在使用 WordPress,您绝对应该查看WP LESS。 I 你需要做的就是用wp_register_stylewp_enqueue_style 甚至add_editor_style 指定一个.less 文件,它会为你编译你的LESS 代码为CSS 代码。它还缓存生成的 CSS,因此您无需在每次页面加载时都进行 LESS 编译的开销。

        【讨论】:

          【解决方案9】:

          现在有另一个更少的编译器可用:less.php

          【讨论】:

            【解决方案10】:

            我在几个项目中有http://leafo.net/scssphp/。它对我很有效,这就是我所做的。

            将 scssphp 安装到 lib/scssphp/

            在 .htaccess 中

            #Sass Parser: anything /css/FILENAME.css -> FILENAME.scss
            RewriteRule ^css/(.*).css?$ style.php/$1.scss [NC,L]
            

            在根文件夹中,我有 style.php:

            <?php
                require "lib/scssphp/scss.inc.php";
                $scss = new scssc();
                $scss->setFormatter("scss_formatter");
                $server = new scss_server("ui", null, $scss);
                $server->serve();       
            ?>
            

            在我的 HTML 中,我使用:

            <link rel="stylesheet" href="/css/style.css">
            

            在 /ui 中有我的实际 SCSS 代码文件:/ui/style.scss

            一切正常。 SCSSPHP 只是检查文件是否需要重新编译并透明地执行,否则发送缓存的版本。

            【讨论】:

              【解决方案11】:

              为什么不直接使用 PHP 本身来动态生成 CSS?以下是 10 个很好的理由:

              1. LESS 提供了 1 种笨拙、不熟悉的循环形式 - 而 PHP 提供了 4 种熟悉的原生循环形式(do、while、for、foreach)。

              2. LESS 提供 1 种笨拙、不熟悉的变量形式 - 而 PHP 提供 6 到 12 种熟悉的原生数据结构:变量、数组、关联数组/哈希表、数组数组/多维数组、对象和数据库记录套。并且标准 PHP 库还提供了堆、栈、队列、映射、双向链表和固定数组。

              3. LESS 不提供条件 - 而 PHP 提供 4 种熟悉的原生条件形式:if-then、if-then-else、case/switch 和三元运算符。

              4. LESS 提供了 1 种笨拙、不熟悉的包含文件(导入)的形式 - 而 PHP 提供了 2 种熟悉的原生形式:include 和 require。

              5. LESS 提供了各种笨拙、不熟悉的 CSS 结构形式 - 而 PHP 提供熟悉的、原生的、面向对象的代码结构形式。

              6. LESS 本质上需要学习一门新的编程语言,并随着时间的推移而不断变化,而 PHP 则利用了您现有的知识。

              7. LESS 会降低代码的可读性和一致性 - 而在 PHP 中预处理 CSS 会保持代码的一致性并使其更具可读性。

              8. LESS 需要采取额外的“编译”/预处理步骤,并且需要维护 CSS 文件的多个版本 - 而 PHP 可以从单个源动态动态生成 CSS(如果您不是关心性能)或者它可以像 LESS 预处理器一样生成最终的“编译”/预处理版本(如果您关心性能)。

              9. LESS 需要下载和安装第三方预处理器 - 而 PHP 已经提供了该功能。

              10. LESS 只能用于 CSS - 而 PHP 可用于动态生成 CSS、HTML、JavaScript、jQuery 等。

              像 LESS 和 SASS 这样的 CSS 预处理器可能是绝望的前端开发人员的救星,因为他们无法使用 PHP 等后端工具。但是对于 PHP 开发人员来说,这些会适得其反,而且功能也不那么强大。以我的拙见,这似乎是流行语狂热和附加狂热疯了。 PHP 旨在提供 LESS 的所有功能以及更多功能。

              【讨论】:

              • 我自己就是一名 PHP 程序员。我更喜欢 SCSS 而不是 LESS,因为 SCSS 比 LESS 更像一种普通的编程语言。我更喜欢 SCSS 而不是 PHP 来生成简单的 CSS,因为将 PHP 标记放入 CSS 代码会造成无法阅读的混乱。另一方面,我不喜欢许多设计选择可能是核心开发团队......就像他们打算打破他们的 @import 声明的向后兼容性一样。这让我想编写自己的预处理器语言……如果我能找到时间的话。
              • 读代码比写代码难。您可能会争辩说 PHP 在制作复杂样式表方面要强大得多,但是,正如 @JohnSlegers 所说,这将是一个难以理解的混乱和维护的噩梦。
              • 1.我必须与非编码器/前端开发人员 2 共享我的代码。我希望我的 (S)CSS 源代码尽可能类似于 CSS - 我在编辑 SCSS 时没有时间考虑 PHP。 3.我们使用的主要框架无论如何都是用SCSS编写的。
              • 当您使 CSS 文件动态化时,您必须处理 mimetypes 和缓存管理。不用了。
              • 无法使用纯 php 自定义 bootstrap 和 fontawesome,所以虽然我很喜欢它没有那么有用
              猜你喜欢
              • 2017-08-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多