关于Sass和Less牵扯的问题

关于Sass和Less牵扯的问题

关于Sass和Less

Sass和Less都算是一种编程语言(后面会详谈此处牵扯出来的编程语言),都是CSS预处理器,都具有相同的功能,可以帮助我们快速编译CSS代码,

细一点来说:
Sass是一种动态样式语言,Sass语法的缩排语法,比CSS比多出很多功能,如变量,嵌套,运算,继承,颜色处理,函数等,易于阅读。

Sass是基于ruby运行的(就好比HTML文件是基于浏览器运行的),Sass是在服务器端处理的,而Less是基于JavaScript,所以,Less是在客户端处理的。这就是Sass和Less的实现区别。

所以很多开发者不选择Less,可能就是因为JavaScript引擎需要额外的时间来处理代码。(我乱猜的)

但Less和Sass在语法上有些共性,比如下面这些:


混入(Mixins)——class中的class;

参数混入——可以传递参数的class,就像函数一样;

嵌套规则——Class中嵌套class,从而减少重复的代码;

运算——CSS中加入数学运算;

颜色功能——可以编辑颜色;

名字空间(namespace)——分组样式,从而可以被调用;

作用域——局部修改样式;

JavaScript 赋值——在CSS中使用JavaScript表达式赋值

关于HTML和CSS

我们所说的CSS和HTML算不算编程语言呢?答案是No,即HTML和CSS都不是一种编程语言(HTML我在讲Markdown的那篇文章里也提到过),HTML(超文本标记语言)是结构化文档,就算是数据结构的一种(变体)吧,CSS(层叠样式表)就是渲染引擎的怎么运作的配置文件,只能算是一种数据。

其实判定它们是不是编程语言的界限,是看它们具备不具备图灵完备(下面会细说图灵完备)。解释图灵完备之前,我们再来解释一个小问题:我们经常提到的HTML5(H5)又是什么呢?

1.简单的说:
HTML5是html+CSS3+js api的一种规范

2.详细的说:在狭义上HTML5也是不具备图灵完备,所以不算编程语言,它包含的是HTML等基础标记。

而在广义上,HTML5感觉更像一个平台,而不是一种语言。有人也把 CSS3 划归到HTML5里面,更具划时代意义的是HTML5 提供了很多 js 的api,通过 js 调用这些api可以做到很多完备编程语言的事情。

那我们把HTML5怎么称呼合适呢?其实HTML5叫做一种代码规范标准更合适。HTML作为一门标记语言,更重要的作用是作为信息的呈现载体,注重信息的呈现形式。而HTML5中出现了很多的新特性,但总体还是更偏重于信息的呈现方式,而不是对信息本身的处理。

图灵完备

好了,我们现在回过来说图灵完备(Turing completeness),

图灵完备性是针对一套数据操作规则而言的概念。数据操作规则可以是一门编程语言,也可以是计算机里具体实现了的指令集。当这套操作规则可以实现图灵机模型里的全部功能时,就称它具有图灵完备性。

所以计算机编程语言都是图灵完备的。说的再直白一点,就是一门编程语言里是有逻辑判断(例如if,elseif判断),循环(例如for循环)和函数,要有代码的复用性。 CSS和HTML都不具备这些吧,

这就是为什么HTML和CSS不是编程语言,而Sass和Less算一门编程语言。当然,对于部分开发人员来说,究竟谁是不是编程语言可能无关紧要,只要会运用它们就行,嘿嘿~。(暂完)

如有不足和不对的地方,希望各位看客大牛指点迷津,感谢

    原文作者:程序杨
    原文地址: https://segmentfault.com/a/1190000012879242
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞