Sass和Less都算是一種編程語言(後面會詳談此處牽扯出來的編程語言),都是CSS預處理器,都具備相同的功能,能夠幫助咱們快速編譯CSS代碼,html
細一點來講: Sass是一種動態樣式語言,Sass語法的縮排語法,比CSS比多出不少功能,如變量,嵌套,運算,繼承,顏色處理,函數等,易於閱讀。
Sass是基於ruby運行的(就比如HTML文件是基於瀏覽器運行的),Sass是在服務器端處理的,而Less是基於JavaScript,因此,Less是在客戶端處理的。這就是Sass和Less的實現區別。
因此不少開發者不選擇Less,可能就是由於JavaScript引擎須要額外的時間來處理代碼。(我亂猜的)編程
但Less和Sass在語法上有些共性,好比下面這些:api
● 混入(Mixins)——class中的class;● 參數混入——能夠傳遞參數的class,就像函數同樣;瀏覽器
● 嵌套規則——Class中嵌套class,從而減小重複的代碼;ruby
● 運算——CSS中加入數學運算;服務器
● 顏色功能——能夠編輯顏色;數據結構
● 名字空間(namespace)——分組樣式,從而能夠被調用;編程語言
● 做用域——局部修改樣式;函數
● JavaScript 賦值——在CSS中使用JavaScript表達式賦值spa
咱們所說的CSS和HTML算不算編程語言呢?答案是No,即HTML和CSS都不是一種編程語言(HTML我在講Markdown的那篇文章裏也提到過),HTML(超文本標記語言)是結構化文檔,就算是數據結構的一種(變體)吧,CSS(層疊樣式表)就是渲染引擎的怎麼運做的配置文件,只能算是一種數據。
其實斷定它們是否是編程語言的界限,是看它們具有不具有圖靈完備(下面會細說圖靈完備)。解釋圖靈完備以前,咱們再來解釋一個小問題:咱們常常提到的HTML5(H5)又是什麼呢?
1.簡單的說: HTML5是html+CSS3+js api的一種規範
2.詳細的說:在狹義上HTML5也是不具有圖靈完備,因此不算編程語言,它包含的是HTML等基礎標記。
而在廣義上,HTML5感受更像一個平臺,而不是一種語言。有人也把 CSS3 劃歸到HTML5裏面,更具劃時代意義的是HTML5 提供了不少 js 的api,經過 js 調用這些api能夠作到不少完備編程語言的事情。
那咱們把HTML5怎麼稱呼合適呢?其實HTML5叫作一種代碼規範標準更合適。HTML做爲一門標記語言,更重要的做用是做爲信息的呈現載體,注重信息的呈現形式。而HTML5中出現了不少的新特性,但整體仍是更偏重於信息的呈現方式,而不是對信息自己的處理。
好了,咱們如今回過來講圖靈完備(Turing completeness),
圖靈完備性是針對一套數據操做規則而言的概念。數據操做規則能夠是一門編程語言,也能夠是計算機裏具體實現了的指令集。當這套操做規則能夠實現圖靈機模型裏的所有功能時,就稱它具備圖靈完備性。
因此計算機編程語言都是圖靈完備的。說的再直白一點,就是一門編程語言裏是有邏輯判斷(例如if,elseif判斷),循環(例如for循環)和函數,要有代碼的複用性。 CSS和HTML都不具有這些吧,
這就是爲何HTML和CSS不是編程語言,而Sass和Less算一門編程語言。固然,對於部分開發人員來講,究竟誰是否是編程語言可能可有可無,只要會運用它們就行,嘿嘿~。(暫完)
若有不足和不對的地方,但願各位看客大牛指點迷津,感謝。