没你想象的那么难!深度剖析三款最实用的css预处理器

等灯等灯~在干货系列无数次被催更之后,渡老师的前端工具小课堂又开课啦!
小渡在后台留言中发现同学们最近对前端CSS的热情很高嘛,最懂你的小渡今天就带着CSS预处理器跟大家见面啦,想学好前端?先来了解一下这些CSS预处理器叭!
了解css的大家可能都知道,我们可以用它来写网页样式,但是却不能用它来编程。在程序员眼里,css是一件很麻烦的东西。
它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事。所以,就有人就开始为css加入编程元素,然后就取个名字叫做"css预处理器"。
什么是css预处理器
通俗的说,css预处理器定义了一种新的语言。
基本的思想是用一种专门的编程语言,开发者只需要使用这种语言进行编码工作,减少枯燥无味的css代码的编写过程的同时,它能让你的css具备更加简洁、适应性更强、可读性更加、层级关系更加明显、更易于代码的维护等诸多好处。
css预处理器种类繁多,本次小渡就以Sass、Less、Stylus进行比较。
什么是Sass
Sass是一门高于css的元语言。
它能用来清晰地、结构化地描述文件样式,有着比普通css更加强大的功能。
Sass能够提供更简洁、更优雅的语法,同时提供多种功能来创建可维护和管理的样式表。也就是我们上面说的一种预处理器语言,反正就是可以让我们风骚的定义css。
Sass优缺点
它在css的语法基础上增加了变量(variable)、嵌套(nestedrules)、混合(mixins)、导入(inlineimports)等高级功能,这些拓展令css更加强大与优雅。
使用Sass以及Sass的样式库(如compass)可以更好地组织管理样式文件、以及更高效的开发项目。
缺点呢就是css的文件体积和复杂度不可控、调试难度增加、成本等。
什么是Less
Lesscss是一种动态样式语言,属于css预处理语言的一种,它使用类似css的语法,为css的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便css的编写和维护。
Lesscss可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。
Less优缺点
1.作为目前最流行的css预处理器之一的less,可谓是Sass最强劲的对手,诞生晚于Sass,但是受它的影响较大,又使用css的语法,让大部分开发者和设计师更容易上手。
2.此外,less还可以提供变量和逻辑控制,例如一些通用的颜色值,图片路径等。使用变量的好处了解一下:多出利用和方便维护,只需要改变量值就行了。
3.Less还有合理的样式复用机制,减少代码的冗余以及提高代码的可维护性。
不过优势虽多,也需花费一定时间去了解学习使用这个预处理,会使团队协作的难度加大。
什么是Stylus
对于开发来说,css的弱点在于静态化。我们需要一个真正能提高开发效率的工具,Less,Sass都在这方面做了一些贡献。
诞生于2010年的Stylus来自Node.js社区,主要用来给Node项目进行css预处理支持,所以Stylus是一种新型语言,可以创建健壮的、动态的、富有表现力的css。
Stylus优缺点
作为比较年轻的新型语言,Stylus 可以以近似脚本的方式去写css代码,创建健壮的、动态的、富有表现力的css,默认使用 .styl 的作为文件扩展名,支持多样性的css语法。
Stylus比Less更强大,而且基于nodejs比Sass更符合我们的思路。
1.它可以解决样式覆写的问题,尤其是mixin式复用;
2.可缓解多浏览器兼容造成的冗余;
3.使CSS开发更加灵活。
但是css的好处在于简便、随时随地被使用和调试,使用Stylus,增加了预编译css的步骤,让我们开发工作流中多了一个环节,调试也多了个步骤。
而且尽管简单易学但是还是需要一定的学习成本的,因此存在在开发过程增加步骤和增加学习成本的缺点。
通过对三种常用的前端预处理器进行总结分析,我们可以看出没有一种工具可以在瞬息万变的前端学习世界一枝独秀。
现在css预处理器技术已经非常成熟,未来还会涌现越来越多的css预处理器框架,只有不断学习,才能去适应更多简洁直观的框架技术。
不想停留在前端学习的石器时代?那就赶紧添加小渡微信:duyi4299和前端大牛们一起学习最in技术走在互联网风口浪尖吧~小渡等你哦~

原文地址:https://blog.51cto.com/13409950/2473044

时间: 2024-10-11 02:43:55

没你想象的那么难!深度剖析三款最实用的css预处理器的相关文章

libevent源码深度剖析三

libevent源码深度剖析三 --libevent基本使用场景和事件流程张亮 1 前言 学习源代码该从哪里入手?我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上讲,用此方法分析libevent是比较有效的. 2 基本应用场景 基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定时器,应用程序只需要执行下面几个简单的步骤即可. 1)首先初始化libevent库,并保存返回的指针struct event_base

Android注解式绑定控件,没你想象的那么难

Android开发中,有一个让人又爱又恨的方法叫findViewById(int);我想如果你是一民Android开发者,必然知道这个方法.那么为什么让人又爱又恨呢?想必大家也是很有感触.写一个布局,用Java代码写和用xml文件写,完成速度完全是无法比拟的.xml布局太方便了.同样的,想获取一个控件的对象,如果你是使用的xml布局文件写的布局,那么你必须调用findViewById()这个方法. TextView t = (TextView) findViewById(R.id.x); 这是我

在美国当个程序员,没你想的那么难

想在美国当程序员?可能没你想象的那么难.就算没钱去正经大学念个计算机科学,也有其他出路. 最近,越来越多的在线学习编程学校在美国火了起来.许多真实的案例都为一些有志于此的人指出了一条光明大道:无论你是想找工作的穷学生,还是想改行的中年危机男,程序员的世界都欢迎你. "闪电战"编程课程 西雅图的"代码伙伴"(Code Fellows)学校,就非常确信他们能够帮助学生找到工作.他们为学生提供六个星期的"闪电战"编程课程,让学生能够完成从零基础达到基本

LCD深度剖析

原文出自:方杰|http://fangjie.sinaapp.com/?p=184转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.首先是ListView的adapter. 因为微博列表的Item不是规则的,比如说有些微博有转发子微博,有些没有,有些有图片,有些没有图片,所以说很不固定.这里就采用BaseAdapter,要

read系统调用深度剖析

本文转自:http://blog.csdn.net/unbutun/article/details/6101354#ibm-pcon Read 系统调用在用户空间中的处理过程 Linux 系统调用(SCI,system call interface)的实现机制实际上是一个多路汇聚以及分解的过程,该汇聚点就是 0x80 中断这个入口点(X86 系统结构).也就是说,所有系统调用都从用户空间中汇聚到 0x80 中断点,同时保存具体的系统调用号.当 0x80 中断处理程序运行时,将根据系统调用号对不同

Objective-C类成员变量深度剖析

目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objective-C类不能动态添加成员变量 总结 看下面的代码,考虑Objective-C里最常见的操作之一——类成员变量访问. - (void)doSomething:(SomeClass *)obj { obj->ivar1 = 42; // 访问obj对象的public成员变量 int n = sel

【源码】StringBuilder和StringBuffer源码深度剖析

//------------------------------------------------------------------------ 写篇博客不容易,请尊重作者劳动成果.转载请注明出处:http://blog.csdn.net/chdjj //------------------------------------------------------------------------ 我觉得要通过源码研究一个类,应该先从整体上了解这个类,比如说这个类的继承体系,有哪些超类,继承

深度剖析消息反射机制

深度剖析消息反射机制作者:hustli    摘要:在前面我们分析了控件通知消息WM_NOTIFY,和WM_NOTIFY紧密联系的还有一个MFC新特性:消息反射.本文中,我想就这个问题作一个全面的论述,如果有错误,还望各路大虾批评指正.    什么是消息反射?    在windows里面,子控件经常向父控件发送消息,例如很多子控件要绘制自己的背景,就可能向父窗口发送消息WM_CTLCOLOR.对于从子控件发来的消息,父控件有可能在处理之前,把消息返还给子控件处理,这样消息看起来就想是从父窗口反射

《AngularJS深度剖析与最佳实践》简介

由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持shuang_lang_shuo[破狼]微信号,同时也欢迎大家的高质量文章的投稿. 在2015年一年时间中,我.雪狼大叔.彭洪伟一起共同编写了<AngularJS深度剖析与最佳实践>这本前端Angular.js框架的进阶书籍.在写作期间也得到很多人的支持,特别是在Angularjs中文社区群中的各位群