关于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算一门编程语言。当然,对于部分开发人员来说,究竟谁是不是编程语言可能无关紧要,只要会运用它们就行,嘿嘿~。(暂完)
如有不足和不对的地方,希望各位看客大牛指点迷津,感谢。
关于Sass和Less牵扯的问题的更多相关文章
- Sass与Web组件化相关的功能
Sass https://en.wikipedia.org/wiki/Sass_(stylesheet_language) Sass (Syntactically Awesome Stylesheet ...
- 【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass
写在前面: 众所周知CSS 是一门非程序式语言,没有变量.函数.SCOPE(作用域),在前期的界面样式设计时,需要书写大量看似没有逻辑的代码,不方便维护及扩展,也不利于重复调用,尤其对于 ...
- 最好用的css辅助工具——SASS&LESS
前言 首先,小编给大家解释一下什么是SCSS和LESS,Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables).嵌套 (nested rules).混合 ...
- 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别
高效开发之SASS篇 作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- 前端CSS预处理器Sass
前面的话 "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...
- SASS教程sass超详细教程
SASS安装及使用(sass教程.详细教程) 采用SASS开发CSS,可以提高开发效率. SASS建立在Ruby的基础之上,所以得先安装Ruby. Ruby的安装: 安装 rubyinstaller- ...
随机推荐
- python爬取妹子图全站全部图片-可自行添加-线程-进程爬取,图片去重
from bs4 import BeautifulSoupimport sys,os,requests,pymongo,timefrom lxml import etreedef get_fenlei ...
- Spring中常用的设计模式之:代理模式
看了tom老师讲的深入分析spring源码,讲的挺好,做个小总结 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以 ...
- HTML5之客户端存储(Storage)
关于客户端存储技术 storage 一.关于客户端(浏览器)存储技术 浏览器的存储技术第一个能想到的应该就是cookie,关于cookie本身出现的初衷是为了解决客户端识别,可存储信息量小(4k左右) ...
- javascript学习方法指南
Javascript看似无限的可能性使得基于HTML和CSS的公共网站成为过去.然而,尽管JavaScript为用户提供了出色的动态体验,但它也为开发人员创建了一个雷区.因此,Javascript搜索 ...
- java_day02_标识符等
ch02 目标: 1. 标识符.关键字和类型介绍 2. 如何构建类---------------------------------1.注释 作用:使部分内容只为程序员可见,不为编译器所编译.虚拟机所 ...
- 1-win10配置 Vagrant 环境
1-win10配置 Vagrant 环境 2019.9.13 Vagrant 概述 vagrant是一个操作虚拟机的工具.是一个基于Ruby的工具,用于创建和部署虚拟化开发环境. 通过命令和配置文件来 ...
- 第11章 Spring Boot使用Actuator
在生产环境中,需要实时或定期监控服务的可用性,spring-Boot的Actuator 功能提供了很多监控所需的接口. Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能, ...
- Python 学习第一天(二)python 入门
1.第一个python程序 1.1 直接打印输出 打开cmd,输入python进入到python交互式环境:(看到>>>是在Python交互式环境下:) 在python交互环境下输入 ...
- Zabbix Agent 安装指南和 Zabbix Server 设置自动发现
Zabbix Agent分为两种模式,被动模式(Passive)和主动模式( 我们实验在node1.yulongjun.com 和node2.yulongjun.com上分别配置Zabbix Agen ...
- AutoFac控制反转
一.AutoFac介绍 Autofac是.NET里IOC(Inversion of Control,控制反转)容器的一种,同类的框架还有Spring.NET,Unity,Castle等.可以通过NuG ...