css预编译的优缺点
什么是CSS预编译?
CSS 预编译,就是预先编译处理CSS。它扩展了 CSS 语言,增加了变量、Mixin、函数等编程的特性,使 CSS 更易维护和扩展。CSS预编译的工作原理是提供便捷的语法和特性供开发者编写源代码,随后经过专门的编译工具将源码转化为CSS语法。
它从这几个方面提升了CSS开发的效率:增强编程能力;增强可复用性;增强可维护性;更便于解决浏览器兼容性。
CSS预编译的核心功能
不同的预编译器特性虽然有所差异,但核心功能均围绕这些目标打造,比如:
- 嵌套(所有预编译器都支持的语法特性,也是原生CSS最让开发者头疼的问题之一)
- 变量(增强了源码的可编程能力)
- 运算(增强了源码的可编程能力)
- mixin/继承(为了解决hack和代码复用)
- 模块化(不仅更利于代码复用,同时也提高了源码的可维护性)
为什么要用CSS预编译?
1.CSS的缺点:
- 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
- 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。
2.CSS预编译的优点:
- 可以提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了开发效率。
CSS预编译的缺点
CSS的好处在于简便、随时随地被使用和调试。预编译CSS步骤的加入,让我们开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用。所以我们在实际项目中衡量预编译方案时,还是得想想,比起带来的额外维护开销,CSS预处理器有没有解决更大的麻烦。
CSS和CSS预编译的比较
优点 | 缺点 | |
---|---|---|
CSS | 简便、可随时随地被使用和调试 |
语法不够强大,模块化开发中需要书写很多重复的选择器; 没有变量和合理的样式复用机制,难以维护。 |
CSS预编译 |
提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性 |
调试更麻烦; 容易造成后代选择器的滥用 |
主流CSS预编译器的介绍
目前css主流预处理器是Sass、Less和Stylus,最早的CSS预编译器是2007年起源于Ruby on Rails社区的SASS,目前比较流行的其他CSS预编译器如Less、Stylus的诞生都一定程度上受到了SASS的影响和启发。
1.Sass
2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的CSS框架,目前受LESS影响,已经进化到了全面兼容CSS的SCSS。
其实现在的Sass已经有了两套语法规则:一个依旧是用缩进作为分隔符来区分代码块的;另一套规则和CSS一样采用了大括号({})作为分隔符。后一种语法规则又名SCSS,在Sass3之后的版本都支持这种语法规则。
Sass中文文档:http://sass.bootcss.com/
2.Less
2009年出现,受SASS的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手,在ruby社区之外支持者远超过SASS,其缺点是比起SASS来,可编程功能不够,不过优点是简单和兼容CSS,反过来也影响了SASS演变到了SCSS的时代,著名的Twitter Bootstrap就是采用LESS做底层语言的。
Less中文文档:https://less.bootcss.com/
3.Stylus
2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,在此社区之内有一定支持者,在广泛的意义上人气还完全不如SASS和LESS
Stylus被称为是一种革命性的新语言,提供一个高效、动态、和使用表达方式来生成CSS,以供浏览器使用。Stylus同时支持缩进和CSS常规样式书写规则。
Stylus官方文档:http://stylus-lang.com/
Stylus 中文文档:https://www.zhangxinxu.com/jq/stylus/
比较
优点 | 缺点 | |
---|---|---|
sass |
用户多,更容易找到会用scss的开发,更容易找到scss的学习资源; 可编程能力比较强,支持函数,列表,对象,判断,循环等; 相比less有更多的功能; Bootstrap/Foundation等使用scss; 丰富的sass库:Compass/Bourbon; |
安装node-sass会经常失败或者报错,需要使用cnpm或者手工安装 |
less | 可以在浏览器中运行,实现主题定制功能; |
编程能力弱,不直接支持对象,循环,判断等; @variable 变量命名和css的@import/media/keyframes等含义容易混淆; mixin/extend的语法比较奇怪; mixin的参数如果遇到多参数和列表参数值的时候容易混淆; |
stylus |
来自NodeJS社区,所以和NodeJS走得很近,与JavaScript联系非常紧密。还有专门JavaScript API: http://learnboost.github.io/stylus/docs/js.html 支持Ruby之类等等框架3.更多更强大的支持和功能 |
人气不高,教程较少 |
Sass看起来在提供的特性上占有优势,但是LESS能够让开发者平滑地从现存CSS文件过渡到LESS,而不需要像Sass那样需要将CSS文件转换成Sass格式。Stylus功能上更为强壮,和js联系更加紧密。
css预编译的优缺点相关推荐
- css 预编译处理器 - Stylus
stylus 是三大css预编译处理器之一! 一.基础语法 1.语法特性 stylus是一个提倡简洁写法的语言,代码可省略花括号 {},冒号 :,引号 :,当没有使用花括号,需使用缩进进行编写,成为' ...
- css预编译其器,CSS预处理器之——Less
Less,顾名思义,少,在我看来,它有着与jQuery一样的思想--Write Less,Do More,尽管实际上这两者是完全不同的两个东西. Less是一个CSS预处理器,先不管人们为何这样命名, ...
- 大话css预编译处理(二)安装使用篇
一.Sass.LESS和Stylus的安装 1.Sass的安装 Sass是Ruby语言写的,但是两者的语法没有关系.不懂Ruby,照样可以正常使用Sass.只是必须先安装Ruby,然后再安装Sass. ...
- css预编译工具less使用心得
1.使用less 结合 html 的zend语法可以快速提高前段编码速度和效率 2.less可以使用程序思维来书写css 代码 使用方法 1.使用js编译 1.下载http://www.lesscss ...
- css预处理器:less和sass认知
一.什么是Less/Sass? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. SASS ...
- 再谈 CSS 预处理器
CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...
- 告别预编译,CSS 直接写嵌套的日子就要来临~
点击上方"IT平头哥联盟",选择"置顶或者星标" 与你一起成长- 公众号回复[ 资源 ] 获取666G前端.Spring Boot 学习资源 作者:安佳 嗨,我 ...
- 前端CSS预处理器Sass
前面的话 "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...
- 您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
2019独角兽企业重金招聘Python工程师标准>>> CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS ...
- 初识css预处理器:Sass、LESS
这篇文章是初步介绍css预处理的,详细学习请移步官网~ sass中文文档:https://www.sass.hk/docs less中文文档:http://lesscss.cn/ 什么是css预处理器 ...
最新文章
- java文件锁定_如何使用java锁定文件(如果可能的话)
- LSTM之父再度炮轰Hinton:“本田奖”不该授予他,颁奖词有六大谬误
- Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'XXX'.
- 理解javascript中的函数模式
- PLSQL developer 连接不上64位Oracle 的解决方法
- 对Emlog 6.0 Beta的完整代码审计过程
- Pascal 语言中的关键字及保留字
- Farthest Point Sampling on 2d image
- snmp的安装与配置
- 父与子一起学python3_父与子的编程之旅(与小卡特一起学Python第3版全彩印刷)/图灵程序设计丛书...
- 2020年净利润腰斩,麦格纳要转型“造车”?
- oracle12c备份与恢复,Oracle Database12c Oracle RMAN备份与恢复(第4版)
- js根据经纬度计算距离
- bootstrap4和bootstrap3的区别
- 25【中介者设计模式】
- unity3D赛车游戏项目源代码
- Matlab中不为人知的强大命令
- Thymeleaf全解
- dev sda2 linux lvm,记录linux LVM 扩容硬盘空间的记录
- 用DXP 软件快速画简单特定形状的PCB版
热门文章
- 二进制数的加法步骤解析
- 玉米社:百度竞价关键词“否定”与“精确否定”的区别
- linux防火墙_专业的linux web应用防火墙国内排名推荐
- ireport导出pdf记录
- 智齿科技携手无忧我房 VR+AI新品亮相GTC
- 降低管理成本、增强团队协作
- 使用LIME解释CNN
- Adobe Reader 卸载不干净处理方法
- Vue使用百度分享,组件切换、销毁分享失效的解决办法
- 现代黑科技版“指鹿为马:使用CycleGAN实现男女“无痛变性”