大前端的自动化工厂(2)—— SB Family

大前端的自动化工厂(2)—— SB Family


原文链接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f

我坦白我是标题党,SB只是SCSS-Bourbon的简写。

一. SASS/SCSS

SASS,也称为SCSS,是CSS预编译语言的一种,常见的预编译语言还包括LESS,Stylus,除了语法风格之外它们之间没有什么太大的区别,从一种语言迁移到另一种语言只需要花半天通读一下文档就可以了。预编译语言为CSS提供了变量定义,函数定义,层级嵌套等等一系列扩展功能,使开发者更容易编写和管理项目中的CSS代码。笔者使用的是SCSS/SASS,因为相关工具库更全面一些,尽管名称偶尔会带来一些瑕疵(建议使用SCSS)。LESS在和Sublime集成时有一些小问题,可能是版本问题,stylus是新兴起的,开发生态并不完善。

二. SCSS-Bourbon Family

由于SCSS最初使用Ruby on Rails编写的,所以github上提供的安装方式几乎都是通过gem install安装的,但实际上在npm仓库里也可以找到对应的项目。另一方面,SCSS辅助工具库中的工具都是以_开头的,也就是说定义mixin的代码并不会被编译到产出的CSS文件中,可以放心使用。

【Bourbon】是笔者非常喜欢的工具包,首先它很符合渐进式开发的思想,每个插件只实现一个特定的功能,同时,它的所有插件都是自己开发的(ThoughtBot在收购后维护着整个Bourbon工具链),这又保证了工具的质量。

bourbon——函数库

? 通过npm install -g bourbon安装.

bourbon已经更新至5.1.0版本,官方文档对许多mixin并没有提供说明,建议使用前通读一下library目录里每一个独立的文件,其中的注释部分标明了该函数的用法。例如实用triangle( )函数来生成一个类,使其伪类包含一个指定尺寸和方向的三角形,又或者是使用tint( )shade( )方法让颜色按照半分比变亮或变暗,当然你也可以自行去扩展bourbon的基础功能。

SCSS代码为:

@import "bourbon";
.triangle-down {
    &::after{
     content:‘‘;
     @include triangle("down", 2rem, 1rem, #b25c9c);
    }
}

编译后的代码:

.triangle-down::after {
  content: ‘‘;
  border-style: solid;
  height: 0;
  width: 0;
  border-color: #b25c9c transparent transparent;
  border-width: 1rem 1rem 0;
}

CSS是可以诸如六边形等很多形状的,你完全可以在网上学习它们的实现方法,然后将其编写为扩展的mixin加入到自己的常用工具箱中。

Bitters——脚手架

? 通过npm install -g bourbon-bitters安装

Bitters是Bourbon工具家族里的脚手架,它将你的基础样式分拆为_bass , _buttons , _forms , _layout , _lists , _media , _tables , _typography , _variables 等几个不同的文件并提供一些初始样式,开发中可以将与基础模块相关的样式扩展写在这些文件中,这样的做法可以在一定程度上降低项目的维护难度。

当然你也可以直接引入normolize.css来对项目进行样式的重置。

Neat——网格工具

? 通过npm install -g bourbon-neat安装.

我们使用的第三方UI框架中,几乎都使用经典的12列布局,但总有些产品经理会提出希望将某一列的宽度扩展到1.5倍这种需求,或者有些场景下你希望对整个网页的布局进行更精细的控制,这个时候轻量级的网格工具Neat就派上用场了,轻量,强大,易用,轻松实现网格划分,网格嵌套,响应式布局等复杂的功能。具体的使用文档可以访问其官方网站Neat官方网址查看文档。

使用示例:

下面简单的几行代码编译为CSS后,就可以实现将页面分为间距为20px的10列,左侧边栏占2列,右侧内容区占8列;然后又将右侧内容区分为间距为10px的6列,每个表格项占1列。

@import "neat";
/*定义网格*/
$sidebar-layout:(
    columns: 10,
    gutter: 20px
);

$list-layout: (
    columns: 6,
    gutter: 10px
);
/*使用网格*/
.sidebar-layout{
    @include grid-container;
}
.sidebar-layout__sidebar{
    @include grid-column(2,$sidebar-layout);
}

.sidebar-layout__content{
    @include grid-column(8,$sidebar-layout);
}

.list-layout{
    @include grid-container;
    @include grid-collapse($list-layout);
}

.list-item{
    @include grid-column(1, $list-layout);
}

Coolor——自动化配色工具

? 访问http://coolor.co

Coolor.co其实并不是Bourbon家族的成员,但你应该会喜欢它,这是一个免费的网站(移动端是收费的),在你指定一个主题色后,它会为你返回一组漂亮的包含5个颜色的配色方案,如果不满意直接一键切换就可以了,从此冒充设计师看谁还敢拦着你~

三. CSS Evolution

随着前端构建工具的兴起,CSS的开发也进入了一个全新的阶段,自动化构建工具(例如webpack)带来了新的开发方式,SASSBEM的年代,还只能通过限制命名规则的方式来避免CSS冲突和相互覆盖。

CSS Modules借助构建工具实现了真正的模块化,webpack4中在css-loader配置项中就可以直接启用CSS模块化功能,使用起来非常方便。其原理就是通过构建工具将文件中的类名直接替换为Hash来实现。

Styled Components,实际上就是炒的火热的CSS-In-Js的一种实现。新事物总是褒贬不一的,有人说它是大势所趋,也有人说它很难用,笔者的建议是:继续观望。Styled Components概念的兴起很有可能是React团队的炒作行为,JSX已经将HTMLJS代码放在一起编写,使用起来感觉还不错,如果又加上CSS-In-JS , 那么相当于使用JSX同时编写HTML+CSS+JS,你说这种鼓吹没有私心谁信?以前使用<script><style>标签把代码都写在<html>中,你们叫嚣着"结构,样式,行为三者分离",现在大伙把代码分离了,你们又忽悠着大家把结构样式行为混在一起写到JSX里去,细思极恐。

上图只是形象地描述了CSS技术的进化方向,并不代表后出现的就一定更好。如果在你的项目组里通过命名规则约定就可以避免冲突,那真的没必要为了炫技或者赶潮流就去把代码全部改成CSS Modules或者 Styled Components的方式。

工具是为了让工作变得更轻松,而不是变得更复杂。

原文地址:http://blog.51cto.com/13869008/2156631

时间: 2024-10-29 14:16:45

大前端的自动化工厂(2)—— SB Family的相关文章

大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试

一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多人维护同一份代码,经常会出现有些函数莫名其妙地结果不对了,或者某个接口的入参变了,又或者哪位大哥把后端返回的数据结构给改了.每天工作的时间里被拉来拉去帮人定位问题,结果花了很多时间却发现大部分都是别人的锅.每当遇到项目上线,那就更热闹了,跟着其他"人肉测试机"大家一起点点点...... 很

大前端的自动化工厂(3)—— babel

一. 关于babel babel是ES6+语法的编译器,官方网址:www.babeljs.io,用于将旧版本浏览器无法识别的语法和特性转换成为ES5语法,使代码能够适用更多环境. 最初的babel使用起来是非常方便的,几乎仅使用少量的配置就可以使用,但随着工具的快速升级和代码架构的转变,babel已经裂变成非常多的部分,每个部分各司其职,这样做的好处是可以缩小生产环境的正式包的代码体积(因为可以按需引用)而加重了开发环境(开发阶段需要引入更多碎片化的插件),但劣势就是将其使用门槛提得非常高,对软

大前端工具集

来自:https://github.com/nieweidong/fetool 作者: 微博 @聂微东 个人 Blog fefork.com 博客园 犀利的东哥   目录 前端组织/前端博客 博客搭建 HTML CSS 浏览端 JS Project Build Node Package Node Project 精选阅读 前端技术 Node 学习资料 前端面试 其他技术 工具/软件 Web APP Mac Linux Chrome Plugins Git 服务端 数据端 设计/交互 速查手册 杂

十大前端开发框架(转)

原文出处http://blog.jobbole.com/41950/ 编者按:考虑到英文原文的长度以及可读性,十大前端开发框架将分成上下两部分呈现给大家.上半部分着重讲的是Bootstrap家族框架,第二节将会跟大家分享更多其他的框架. 随着互联网的不断成熟以及我们越来越多的用各种移动端的设备访问互联网,Web设计师和Web开发者的工作也变得越来越复杂. 十年前,一切都还简单得多.那个时候,大部分用户都是坐在桌子前通过一个大大的显示器来浏览我们的网页.960像素是当时比较合理的网页宽度.那些年我

大前端应用开发与架构设计-Sublime Text基本使用

大前端应用开发与架构设计-Sublime Text基本使用 大前端应用开发与架构设计 如果因为某些原因你不喜欢Visual Studio Code,那么可以使用Sublime Text作为前端开发的编辑器. Sublime Text介绍 Sublime是一个文本编辑器,可以用来编辑HTML,CSS,JavaScript,PHP应用,具有跨平台(Windows,Ubuntu,Mac),体积小,速度快,扩展性强(支持大量插件)的特点,同时也是一款收费软件. Sublime Text 下载和安装 官方

大前端 前后端分离带来的好处

大前端 前后端分离带来的好处:1. 前后端分离开发,相互之间的影响很小2. 使用 webpack,模块化打包前端代码3. 在开发时,可以做到代码热替换,可以使用 babel,可以使用 css 预处理器等等4. 打包时,打包代码的同时还可以做到按需加载代码,静态文件地址自动写入 html 标签,压缩 css.js 代码.压缩图片5. NPM 管理依赖 除了享受不到前后端分离的优点外,还会1. 放弃 ES6,只能写 ES5 以下版本的代码,且要自己处理一些兼容问题2. 不能够使用 A.R.V 三大框

大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app

大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWxy/twa-tf.js , ) 什么是TWA 简单来讲,TWA(Trusted Web Activity 可信任的网络应用)即: 基于Chrome Custom Tabs,利用谷歌浏览器提供的api,实现强大功能的桌面应用技术. 如果说你对PWA这个概念有所了解,那么TWA的实现就相当于 PWA + 更丰

大前端与前后端分离

一.大前端 简单来说,大前端就是所有前端的统称,比如Android.iOS.web.Watch等,最接近用户的那一层也就是UI层,然后将其统一起来,就是大前端.大前端最大的特点在于一次开发,同时适用于所有平台,开发者不用为一个APP需要做Android和iOS两种模式而担心.大前端是web统一的时代,利用web不仅能开发出网站,更可以开发手机端web应用和移动端应用程序. 由于node的出现,前端工程师不需要依赖于后端程序而直接运行,从而前后端分离起来.所以当开发一个新产品的时候服务只需要写一次

2020年大前端发展趋势

迅速发展的前端开发,在每?年,都为开发者带来了新的关键词.2019 年已步?尾声,2020 年前端发展的关键词?将有哪些呢?发展的方向又会是什么呢?参考2019年大前端的发展,不出意外,前端依旧会围绕?程序.超级APP.跨端开发.前端?程化以及新技术运用等几个方面进行展开(可以参考2019年大前端技术趋势深度解读). 小程序 在?程序??,今年仍然是?程序突?猛进的?年,各?主流的 App 都上线了?程序能?的?持,各前端团队也都有了专?的?程序开发团队,以适应更快的?程序开发需求.同时App