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.pswp.cn/news/255486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255486.shtml
英文地址,請注明出處:http://en.pswp.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 父類…