我目前正在从事一个新项目,该项目允许用户根据自己的喜好更改网站的外观。他们可以更改背景颜色和内容,这些内容会保存在数据库中供以后使用,或者可以存储在 cookie 中。但是,我一直在使用 php 文档来模拟样式表,这样我就可以像<link rel="stylesheet" type="text/css" href="main.php?bgColor=#444"
示例一样传递变量。这样我就可以使 css 动态化,而不是过多地依赖 javascript。
但是有朋友提到使用SASS,但我真的不知道它是否适合我的项目,因为我对指南针框架了解不多。如何将动态变量传递给这个 .sass 或 .scss 文件?你只是做一个@import "php-variables";
声明并包含一个php文件吗?或者你能像我用php一样发送动态变量吗?
此外,使用 php 优于 SASS 有什么好处,反之亦然?
2 回答
这里似乎根本缺乏理解,所以我将提供一个简短的答案和一个更长的答案。
短的
您不能将动态变量发送到 Sass。可能有一些用于 PHP 的端口使其成为可能,但仅使用 Sass,这是不可行的。
更长
你可能想熟悉一下Sass 到底是什么,以及它是如何融入你的工具包的。听起来你正在使用 PHP,所以我想你会让 PHP 渲染 HTML 模板/做 DB 魔术,也许有一点 JavaScript 来做客户端脚本,你会有 CSS(普通 CSS)样式元素在您的网站上。
Sass/SCSS(以下简称 Sass)并没有取代 CSS(你永远不会看到<link type="text/sass">
),它只是为编写样式提供了不同的语法,后来编译成 CSS。
Sass 通常在您将资产发送到生产环境之前编译为 CSS,它不会在用户请求时生成。您的 Sass 文件和 HTML 文档之间没有真正的联系,因此您无法将任何变量传递给您的 Sass 文件。
@imjared 描述了为什么 SASS 不是一个合适的解决方案,我会尝试提出一个好的解决方案。
您从 PHP 脚本提供动态 CSS 的解决方案并不好,因为它不允许缓存。每个用户每次刷新页面或点击链接时都必须下载 CSS 文件。
相反,您需要做的是生成 CSS 文件,将它们保存为实际文件并提供指向它们的动态链接。
文件名可能与对应用户的名称相同(请特别注意清理文件名),然后每次用户更新样式时都会重写 CSS 文件。