我想在CSS中使用变量,因此我正在考虑为此目的使用SASS或LESS。
但是,我的问题是,我将在共享主机上而不是在具有命令行访问权限的专用主机上部署项目。
我也不喜欢用户必须使用Javascript在其浏览器中编译CSS文件的想法。(如果他们禁用了Java脚本怎么办?)
处理这种情况的最佳方法是什么?最后,我是否将不得不使用普通的旧CSS?我希望不是...
这可能会有所帮助-我出于相同目的正在探索中 http://www.dev-metal.com/compile-sass-to-css-with-pure-php-automatically/
它是您通过网络启动的脚本,然后继续无限期运行以查找过时的scss文件。
更新:效果很好,但是主机似乎正在将脚本视为失控并杀死了它。因此,我编辑了php-sass-watcher.php以注释掉循环,并添加了echo "Finished compiling " . date(DateTime::RSS);
。然后在月食中打开Web浏览器视图,并在每次更改时都运行URL,类似于在命令行上运行编译器。
两种选择:
1)LESS / SASS预处理器(推荐)
OP没有提到可用的服务器端处理能力,可以在此处缩小选择范围,但是您需要的是服务器端的LESS / SASS,理想情况下还可以最小化并缓存生成的CSS。
如果您有可用的PHP,则可以使用lessphp; 较早的项目是github.com/Incenteev/lessphp,但不要使用该项目已停滞的状态,而应使用github.com/oyejorge/less.php,该项目提供了很多功能,并且有据可查。
对于SASS,有github.com/richthegeek/phpsass
2)LESS.js SASS.js(+)
看一看客户端使用一节中的less.js页面,简单而不是生产解决方案。
SASS JS的实现更加棘手,似乎已经进行了无数次尝试,我无法保证,但是这个项目看起来很活跃:medialize / sass.js
+注意:这对于实时环境来说是一个糟糕的解决方案,因为浏览器必须下载完整的LESS / SASS文件,进行编译和渲染;大多数现代浏览器都可以处理它,但是效率很低。仅在您的开发环境中使用或用于模型。
大多数共享主机都不允许您将自定义gems安装到默认目录,因为它通常位于用户主文件夹之外,因此也位于用户可写目录之外。
我必须在共享主机(1and1主机)上执行-[这些说明]-,在共享主机上安装自定义gem。您需要对共享托管服务器的外壳程序访问权以执行必要的步骤。您还需要确保更新正在运行的命令,以处理最新版本的RubyGems(在撰写本文时为2.0.3)。
完成初始设置后,只需运行gem install sass
命令即可。然后转到存储CSS文件的目录,然后运行sass --watch
以开始使用SASS生成CSS文件。
首先,CSS预处理器是一种开发工具,可让您轻松管理CSS文件-它们不在浏览器中运行。
其次,在共享或专用主机上运行预处理器的唯一区别是您是否能够首先安装预处理器。
修改我的旧答案:一些CSS预处理程序确实可以在浏览器中运行。例如,Lesscss将请求并编译较少的工作表到CSS并实时更新它们。这是非常宝贵的开发助手,但绝对不是您想要在生产环境中执行的操作。
尽管不是SASS或LESS,但CSS-Crush具有所有标准的预处理器功能。在没有任何服务器端安装的情况下,我已经在共享主机上的自己的项目中广泛使用了它。
唯一的要求是PHP,这是任何体面主机提供的。
你有矛盾。
如果您希望完全控制自己的站点,则应该拥有自己的专用或虚拟服务器。这样,您就可以安装和运行所需的任何东西。
如果不允许您在共享主机上安装和运行自定义软件,则无法即时编译SASS。您必须先编译SASS,然后才能将代码上传到服务器。
如果您对在本地编译SASS的必要性不满意,可以使用Capistrano或您的IDE 这样的部署技术将其自动化。部署工具的选择在很大程度上取决于您的开发和托管环境。
另一个选择是在客户端的浏览器中本地编译LESS。参见http://lesscss.org/#usage。但出于两个原因,我不建议这样做:
在开发计算机上编译Sass or Less,然后将编译后的,缩小的CSS推送到服务器。
Tintin81,只需在Google中键入php sass / less编译器并使用第一个结果,例如scssphp或lessphp
http://leafo.net/scssphp/
http://leafo.net/lessphp/
它将通过缓存等将您的scss文件编译为css。易于实现,并且源scss文件随项目保留。它可以在线或在您的本地环境上工作。
我不敢相信这里给出了多少愚蠢无助的答案,而不是简单的问题答案。