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,一经查实,立即删除!

相关文章

linux命令详解——iostat

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

highgui基础 OpenCV trackbar

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

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

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

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…

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

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

安全

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

3D打印材料PLA,ABS对比

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

【pyqt5学习】——控件绑定槽函数的同时利用lambda实现传参

两种方法&#xff1a; 1、利用pyqtsignal的emit进行传参 2、connect函数进行传参 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根据按钮上的文字来进行阅读def readZodiacByButtonText(self,text):if self.language &…

lab3

lamp: 在阿里云linux&#xff08;Ubuntu&#xff09;上安装Apache mysql php &#xff1a; apt-get install mysql_server mysql_client php5 php_mysql apache2 系统会提示正确的包的名称 安装ECShop 在本地命令行 scp ecshop.zip rootxxx.xxx.xx.xxx:/var/www/ 把压缩文件拷贝…

【python学习】——pyttsx3库实现文本朗读、音量、音速等调节

import pyttsx3# 初始化朗读引擎 engine pyttsx3.init() # 设置朗读速度 self.engine.setProperty(rate, 120) # text为需要读取的内容 self.engine.say(text) # 不添加下面这句&#xff0c;没有声音 self.engine.runAndWait()pyttsx3其他应用&#xff1a; python pyttsx3实现…

【pyqt5学习】——添加菜单栏动作action,给动作触发triggered绑定事件

1、打开qt-designer工具——视图——勾选上动作编辑器 2、勾选后右下方会出现动作编辑器栏 3、在改面板可以进行已有动作的属性编辑&#xff0c;也可以添加新的动作 4、 鼠标左键选中动作不松开&#xff0c;可以将动作拖到菜单栏 5、给动作绑定事件 self.saveLog.triggered.co…

C# / VB.NET合并PDF指定页

在前面的文章中&#xff0c;我们已经知道如何合并、拆分多个PDF文件&#xff0c;在这篇文章中的合并、拆分PDF文档主要是以方便文档管理的目的来操作文档&#xff0c;在文档查阅、管理及存储上很方便实用。但是我们如果想要合并多个文档中的部分文档页的内容&#xff0c;该如何…

高级异常

一、什么是异常 解析&#xff1a;异常就是在程序的运行过程中所发生的不正常事件 二、Java异常处理是通过5个关键字来解决的&#xff1a;try、catch、finally、&#xff08;前三个是捕获异常&#xff09;throw&#xff08;手动抛出异常&#xff09;、throws&#xff08;声明异常…

【纠错】——错误:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。“+解决方案

目录 问题出现场景 原因 解决方案 问题出现场景 先打开pdf文件&#xff0c;获取pdf文件内容后&#xff0c;利用os.remove()来删除文件&#xff0c;这时候出现错误 os.remove(source_path)PermissionError: [WinError 32] 另一个程序正在使用此文件&#xff0c;进程无法访问。…

Eclipse中自动添加注释

方法一&#xff1a;Eclipse中设置在创建新类时自动生成注释 windows-->preference   Java-->Code Style-->Code Templates     code-->new Java files 编辑它 ${filecomment} ${package_declaration} /** * Author fufu* Time ${date} ${time} * Version 1.…

使用rancher创建负载均衡服务

2019独角兽企业重金招聘Python工程师标准>>> 2台主机&#xff0c;一个server包含2个容器进程&#xff08;可以是多个&#xff09;&#xff0c;一个负载均衡容器&#xff08;貌似是依赖haproxy的&#xff09; 1&#xff0c;创建一个镜像&#xff0c;编辑Dockerfile 创…

Six Basic Functional Areas of Spring

转载于:https://www.cnblogs.com/Brake/p/5440738.html

【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面

目录 一、登录界面长下面这样&#xff0c;由qt designer设计 login.py 二、登录界面 逻辑代码loginLogic.py 三、主界面comsumeType.py 四、主界面逻辑代码comsumeTypeLogic.py 五、登录界面跳转至主界面 六、主界面回到登录界面 一、登录界面长下面这样&#xff0c;由qt d…

WPF ClickOnce应用程序IIS部署发布攻略

WPF程序非常适合公司内网使用&#xff0c;唯一缺点就是客户端要安装.net框架4.0。优势也很明显&#xff0c;在客户端运行的是一个WinForm程序&#xff0c;自动下载&#xff0c;可以充分利用客户机的性能&#xff0c;而且是以当前的Windows用户权限运行&#xff0c;避免了权限带…