关于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算一门编程语言。当然,对于部分开发人员来说,究竟谁是不是编程语言可能无关紧要,只要会运用它们就行,嘿嘿~。(暂完)

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

关于Sass和Less牵扯的问题的更多相关文章

  1. Sass与Web组件化相关的功能

    Sass https://en.wikipedia.org/wiki/Sass_(stylesheet_language) Sass (Syntactically Awesome Stylesheet ...

  2. 【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass

    写在前面:        众所周知CSS 是一门非程序式语言,没有变量.函数.SCOPE(作用域),在前期的界面样式设计时,需要书写大量看似没有逻辑的代码,不方便维护及扩展,也不利于重复调用,尤其对于 ...

  3. 最好用的css辅助工具——SASS&LESS

    前言 首先,小编给大家解释一下什么是SCSS和LESS,Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables).嵌套 (nested rules).混合 ...

  4. 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别

    高效开发之SASS篇   作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...

  5. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  6. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  7. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  8. 前端CSS预处理器Sass

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  9. SASS教程sass超详细教程

    SASS安装及使用(sass教程.详细教程) 采用SASS开发CSS,可以提高开发效率. SASS建立在Ruby的基础之上,所以得先安装Ruby. Ruby的安装: 安装 rubyinstaller- ...

随机推荐

  1. ftp卡死问题

    最近用org.apache.commons.net.ftp.FTPClient  写ftp的上传下载的定时任务 发现有时候线程会卡住,也不报错就一直不工作了,后来发现需要使用ftp的被动模式才行,实现 ...

  2. S=a+aa+aaa...(js)

    /*求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制.*/ let readline = ...

  3. 解决IDEA报错Could not autowire. There is more than one bean of 'xxx' type

    更新项目之后IDEA突然出现了这样的报错信息.显示Could not autowire. There is more than one bean of 'xxx' type.这个错误的意思是xxx类型 ...

  4. linux基础—课堂随笔07_磁盘存储和文件系统

    磁盘管理 管理分区 列出块设备  lsblk parted命令 高级分区操作 用法:  parted [选项]... [设备 [命令 [参数]...]...]  parted /dev/sdb mkl ...

  5. 检测udp端口

    linux 检测端口是否打开:nc -zuv ip 端口 服务器监听端口:nc -l -u ip 端口(可以发送和接受信息) 客户端检测端口:nc -u ip 端口(可以发送和接受信息) 查看监听的t ...

  6. 安装WIN10+Ubuntu18.04安装教程(实测有效)

    转载原文链接:https://www.cnblogs.com/masbay/articles/10745170.html 安装过程中尤其注意分区时候的挂载点一定要选对!!!选择Ubuntu的EFI所在 ...

  7. Redis 与 MQ 的区别

    Redis是一个高性能的key-value数据库,它的出现很大程度补偿了memcached这类key-value存储的不足.虽然它是一个数据库系统,但本身支持MQ功能,完全可以当做一个轻量级的队列服务 ...

  8. Java-20180412

    今天开始重新复习Java,完成了leetcode的第一题. 1.算法: 给定一个数组和目标值,找出相加等于目标值的数组元素的下标. 数组[2,7,11,15]; target:9; 返回:[0,1]; ...

  9. canvas制作圆形动态加载进度实例

    window.onload=function(){ var loading=document.getElementById('loading'); var context=loading.getCon ...

  10. Nginx location模块整理

    location模块 Nginx location location 指令的作用是根据用户请求的URI来执行不同的应用,URI就是根据用户请求到的网址URL进行匹配,匹配成功了进行相关的操作. loc ...