用 php 减少/sass

Posted

技术标签:

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

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

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

【问题讨论】:

你应该试试lessphp - leafo.net/lessphp。如果你只使用 php,那就是额外的开销。 ***.com/a/8411274/762449 php-sass 如果你使用 Laravel laravel-sass 你可以在你的 php 构建中实现 Libsass 作为动态扩展 LibSassPHP 完全支持缩进语法 (SASS) 和 SCSS 【参考方案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】:

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

少:http://leafo.net/lessphp/ SCSS:http://leafo.net/scssphp/(只有 SCSS 语法,没有基于缩进的 SASS 语法)

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

【讨论】:

+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,这个差距会立即消失***.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 个很好的理由:

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

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

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

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

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

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

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

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

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

    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,所以虽然我很喜欢它没有那么有用

以上是关于用 php 减少/sass的主要内容,如果未能解决你的问题,请参考以下文章

php PHP Minify(http://code.google.com/p/minify)后处理帮助程序类用内联数据替换小CSS图像。这减少了nu

什么是Sass?

如何减少 PHP/MySQL 的内存消耗?

076 php如何提高网页加载速度?

php - Trait

php中trait