你是否不推荐使用基于JavaScript的LESS?

4

观看了NetTUTs的这个视频后,非常有兴趣尝试所展示的LESS.js方法。

除了显而易见的“如果用户没有启用javascript会怎么样?”或者“这会带来一些性能损失”之外,是否还有其他原因不能在生产中使用它呢?

LESS本质上看起来就像CSS应该是的样子...


2
个人而言,我会在构建时完成这种工作,因为它并不是很难。 - Pointy
@Pointy - 你有什么做过的例子吗?有没有.NET相关的(我正在构建基于MVC 2.0的应用程序)。谢谢! - Chaddeus
1
我会创建一个后构建操作,使用Ruby的lessc编译器对您的.less文件进行转换,生成常规的.css文件。 - Dean Harding
抱歉,没有.NET的例子 - 我在Java世界中构建,并使用Freemarker预处理.CSS文件。 - Pointy
3个回答

6

我看不出为什么这个东西应该被用于生产环境。更明智的做法是将其作为构建脚本运行,然后在缓存的无cookie域上提供输出(常规CSS)。这样,在没有JavaScript的情况下也可以正常工作,并且不需要在每次页面加载时进行JavaScript处理(这会比调整过的本地代码编写的CSS解析器慢)。


我开始同意了...我认为这篇文章更多地展示了什么是“酷”,而不是最高效的内容。 - Chaddeus

2

我还没有在生产环境中尝试过,但是可能有一些与LESS变量相关的有趣用例。例如,您可以更改底层的less变量,进而更改一组依赖于它们的CSS规则(例如相对宽度/高度)。

请参见https://dev59.com/zmsz5IYBdhLWcg3wiYc0#8742705以获取一个有趣的补丁程序,该程序使使用简单的modifyVars()函数轻松更改它们成为可能。

使用它,您可以通过单个本地JS调用更改Bootstrap网格大小以及所有依赖它的内容:

less.modifyVars({
  '@gridColumnWidth': 50px
});

2

如果担心禁用Javascript的用户,我建议不要使用基于Javascript的LESS。个人认为,与基于Ruby的LESS相比,它没有任何优势,因为你只需要在开发机器上安装Ruby - 一旦将.less文件编译为.css,LESS编译后的.css文件与手写的CSS文件没有区别。


优点与任何 JIT 编译脚本相同,相对于编译后的脚本,您可以跳过编译步骤。此外,LESS.js 将在本地存储中缓存(适用于所有支持它的浏览器)。 - Alan
CSS不是一种编程语言,LESS.js也不是JIT。请阅读代码。它解析less并在页面加载时添加样式表。它没有任何真正的JIT功能,例如将热代码动态编译为本机代码,因为实际上没有任何代码(只有样式)。 - Matthew Flaschen
4
如果您已经拥有自动化构建或部署(应该有),那么“跳过编译步骤”没有任何好处。 - Dean Harding

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接