PostCSS自学笔记(二)【番外篇二】

图解PostCSS的插件执行顺序

文章其实是一系列的早就写完了. 才发现忘了发在SegmentFault上面, 最早发布于https://gitee.com/janking/Inf...

这次我继续研究PostCSS的插件的执行顺序。

之前有研究过做过假设,在插件列表中,PostCSS的插件执行顺序自上而下,一切看起来似乎是没有任何问题的。

我也看过有关PostCSS解析器的相关文章,有以下一些收获:

该作者理解的模型

摘自:PostCSS 是个什么鬼东西?

当然这张图并没有对Plugin System进行解释。

再有:

PostCSS 运行机制

摘自:深入PostCSS Web设计

PostCSS处理流程图

摘自:写CSS的姿势

这两张图则应该是说明了我之前的假设,插件中的执行顺序自上而下

但是这些资料不明不白的,我决定进一步阅读相关文章找出真相,不过研究过程中,我也依然深思这样一个问题,也许我本不应该纠结这个,因为或许根本没有意义?或者这个工作方式并非与PostCSS本身有关?

于是我又把之前收集的PostCSS的文章翻了一遍,我们再来一个个过一遍。

POSTCSS PLUGIN INSTALLATION EXAMPLE

先来看看一片来自smashingmagazine的这段POSTCSS PLUGIN INSTALLATION EXAMPLE

In the array, we can include the necessary require statements that return the plugins and that are then called immediately. If you would like to read more about this concept, look through “Functions as First-Class Citizens in JavaScript” by Ryan Christiani.

会不会跟这个有关呢,我先埋个伏笔。

PostCSS Quickstart Guide: Exploring Pluginsd

再来看看另一篇PostCSS Quickstart Guide: Exploring Pluginsd的Plugin Execution Sequence中这段

One of the main considerations you have to make when loading up the array of PostCSS plugins is the order in which you run them. You’ll have to pause and think through your list, determining if one plugin might need to run after another in order to do what you want it to.

鄙人译:有一个非常重要的需要考虑的一点是,当你在加载PostCSS插件数组中顺序就是你执行他们的顺序。因此你有必要好好在这个插件列表这下功夫思考一下,来确定你想要的一个接一个的插件执行顺序。

原文第一句话很复杂,所以英语不好的理解起来可能有些费劲,姑且可以分成以下几段分别翻译再合并One of the main considerations you have to make when loading up the array of PostCSS plugins is the order in which you run them.

然后这段原文后也有示例,大家可以自己看看加深理解和认识。并且也有一个小结论:

The load order for plugins is something that will change with each set of plugins, so you may find you just need to do a little experimentation sometimes to get everything working together nicely.

鄙人译:你所设置的每个插件都会被加载的插件顺序所影响,因此强烈建议你在某些情况下多做些测试来让你的插件们运行的更加完美~

好了看到这里,其实答案大致已经揭晓,也许你觉得这不是很自然的从上而下么,为何作者要纠结这么久还写了这么一篇长篇大论的文章。如果你还没看过之前我为何纠结这个顺序问题,可以看看:

  • PostCSS自学笔记(二)【插件篇】#CSSNANO
  • PostCSS自学笔记(二)【番外篇一】

结论

其实,关于顺序的疑问我觉得差不多就此打住,也许其中的确有些奇怪的现象,但是这个基本不影响或者说没有追究其根本的意义,或许真要打破沙锅问到底就要发邮件给PostCSS作者了。而作为普通开发人员,也许没有必要花太多精力去研究这个,我们知道PostCSS插件的顺序一般来说是从上往下执行的,不要犯低级的顺序错误(例如import写在列表末尾),大部分场景都会得到我们想要的结果了

(突然想起来了,前面埋了个伏笔其实跟它没啥关系,所以不多做文章了~不过作为课外阅读,多了解下也是棒棒哒!)

其他

关于我个人的PostCSS一系列学习, 介绍及总结, 有兴趣可以参阅:

  • PostCSS自学笔记(一)【安装使用篇】
  • PostCSS自学笔记(二)【插件篇】
  • PostCSS自学笔记(二)【番外篇一】
  • PostCSS自学笔记(二)【番外篇二】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】——实现文本的朗读(pyttsx3)

import pyttsx3engine = pyttsx3.init() engine.say(三角形)engine.runAndWait() 1、导入第三方库 import pyttsx32、创建朗读器 engine = pyttsx3.init() 3、输入需要朗读的文本 engine.say(三角形) 4、开始朗读并且发声(这一步不能少,不然没有声音) engine.runAndWait() 参…

linux命令详解——iostat

简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 安装 yum install -y sysstat 语法 i…

highgui基础 OpenCV trackbar

在调试程序或者程序执行时需要调整某个变量的值亦或是参数的值,我们需要一个简单方便的操作,滚动条就是一个非常使用的工具。通过鼠标点击对滚动条进行拖动操作以期实现调整某个参数的值。下面例程参见Opencv 安装目录 samples tutorial_code文件夹。 #i…

汇编 if else

知识点: if else 逆向还原代码一、了解if else结构 sub esp,8 00401029 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0040102C |. 3B45 F8 CMP EAX,DWORD PTR SS:[EBP-8] 0040102F |. 7E 10 JLE SHORT ifelse01.00401041 //表示 else部…

chrome浏览器开发模式实现跨域

2019独角兽企业重金招聘Python工程师标准>>> 增加如下参数, --disable-web-security --user-data-dir 启动项变为: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir 转载于…

【纠错】——QThread: Destroyed while thread is still running

目录 错误 出现场景 解决方案 原始代码 修改后的代码 错误 QThread: Destroyed while thread is still running 出现场景 在对目标缺陷检测的GUI设计的时候,为了避免界面的卡顿,于是想着利用线程QThread来解决这个问题,但是做好后&#xf…

Java怎样处理EXCEL的读取

须要包:poi-3.5.jar、poi-ooxml-3.5.jar 实例: [java] view plaincopy public class ProcessExcel { private Workbook wb null; private Sheet s null; private Row row null; public ProcessExcel(String filePath) …

C#替换字符串起始/结尾指定的字符串

#region 替换字符串起始位置(开头)中指定的字符串/// <summary> /// 替换字符串起始位置(开头)中指定的字符串 /// </summary> /// <param name"s">源串</param> /// <param name"searchStr">查找的串</param> /…

腐蚀函数cvErode 和 膨胀函数cvDilate

Erode腐蚀&#xff0c; Dilate膨胀&#xff0c;这两个形态学函数总是成对出现&#xff0c;前者可以消除较小的点如噪音&#xff0c;后者可以使不连通的图像合并成块。 void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* elementNULL, int iterations1 ); void cvDi…

spring cloud gateway的stripPrefix配置

序 本文主要研究下spring cloud gateway的stripPrefix配置 使用zuul的配置 zuul:routes:demo:sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods path: /demo/**stripPrefix: trueurl: http://demo.com.cn/ 复制代码这里的stripPrefix默认为true…

Zookeeper和分布式环境中的假死脑裂问题(转)

Zookeeper和分布式环境中的假死脑裂问题 最近和同事聊天无意间发现他们的系统也存在脑裂的问题。想想当初在我们的系统中为了解决脑裂花了非常大的功夫&#xff0c;现在和大家一起讨论下脑裂&#xff0c;假死等等这些问题和解决的方法。 在一个大集群中往往会有一个master存在…

【pyqt5学习】【python学习】——通过py文件来执行命令行指令

目录 1、利用os模块 2、爬虫命令 注意 1、利用os模块 os.system("scrapy crawl search") 2、爬虫命令 from scrapy.cmdline import execute # 将命令的每个单词存进一个列表传给execute() execute("scrapy crawl search".split()) # 相当于在终端…

JSP内置对象详解

转自http://www.cnblogs.com/oumyye/p/4240272.html   在JSP中为了简化用户的开发&#xff0c;提供了九个内置对象&#xff0c;这些内置对象将由容器为用户进行实例化&#xff0c;而用户直接使用即可&#xff0c;而不用像在java中那样&#xff0c;必须通过关键字new进行实例化…

cvMorphology形态学原理解析及源码分析

⑴ 图像形态学处理的概念...1 ⑵ 二值图像的逻辑运算...3 ⑶ 膨胀和腐蚀...4 (4) 高级形态学变换...8 (5) 细化...10 ⑴ 图像形态学处理的概念 数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量&#xff0c;比如边…

安全

2019独角兽企业重金招聘Python工程师标准>>> 1、不要使用页面变量进行传递值&#xff0c;用session 转载于:https://my.oschina.net/u/2277088/blog/1621841

lua_string_pattern

两大特点&#xff1a; 1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,... 2. string库中所有的function都不会直接操作字符串&#xff0c;而是返回一个新的字符串。 库函数&#xff1a; 1、string.len&#xff0c;string.rep&#xff0c;string.upper&#xf…

【pyqt5学习】QLayout: Attempting to add QLayout “to ***“, which already has a layout

报错场景&原因 在界面设计时&#xff0c;想实时更新用matplotlib绘制的图像,即会一次次的调用plot函数&#xff0c;这样就会重复地向groupbox里面添加布局&#xff0c;但是一个容器只能有一个布局&#xff0c;因此会报错 def __init__(self):super(weibo_search_logic, se…

3D打印材料PLA,ABS对比

转载于:https://www.cnblogs.com/sztom/p/6373910.html

扒一扒工业机器人编程语言和种类

机器人编程语言&#xff08;一&#xff09; 伴随着机器人的发展&#xff0c;机器人语言也得到发展和完善。机器人语言已成为机器人技术的一个重要部分。机器人的功能除了依靠机器人硬件的支持外&#xff0c;相当一部分依赖机器人语言来完成。早期的机器人由于功能单一&#xff…

Java继承概述以及Java继承案例和继承的好处

Java继承概述 1.多个类中存在相同属性和行为时&#xff0c;将这些内容抽取到单独一个类中&#xff0c;那么多个类无需再定义这些相同属性和行为&#xff0c;只要继承那个类即可。 2.在Java中通过extends关键字可以实现类与类的继承。 例如&#xff1a;class 子类名 extends 父类…