2017-04-17 117 views
3

我正在寫論文,並且無法真正找到任何明確的答案。預處理器和轉譯器(或轉譯器)之間有什麼區別?預處理器和轉譯器有什麼區別?

我已經找到了編譯器和編譯器在搜索答案時有什麼區別。 (https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/

例如CSS預處理器(sass,less)和JS轉譯器(咖啡腳本,打字稿)。它們是一樣的嗎?我的意思是,他們做同樣的事情嗎?

在一些地方它被讀爲「JS預處理器」,但是當我谷歌時,我找不到任何有價值的信息。

現在,我想,預處理器只是將例如sass轉換爲CSS,以使瀏覽器更「可讀」。譯者編譯整個事情,從咖啡腳本語言到JavaScript語言。

所以我就在這裏,譯者只是編譯整個事情(這是更大的過程),預處理器只是轉換爲更「可讀」?

或者是薩斯例如就像從咖啡腳本是從JavaScript不同的語言?

預先感謝您!

+0

你看過這個嗎? https://www.quora.com/What-is-the-preprocessor-in-web-developing –

+0

嗨!不,我沒有找到那個,但那真的很有幫助!謝謝! – Chris

+0

無論Sass/Coffeescript是否與Js/CSS完全不同,都可能引發爭議。但是還有更多簡單的預處理器例子,例如許多服務器使用模板庫在頁面爲服務器時將文本插入到HTML中。據我瞭解,主要區別在於,預處理器可能不會將轉換器從一種源代碼語言/格式轉換爲另一種。 –

回答

0

我搜索了電子書,發現了一些澄清這一點,或者至少我認爲它確實如此。

「預處理器和轉譯器是作爲對HTML,CSS和JavaScript的抽象引入的,作爲添加源語言中不可用的功能的手段,保持代碼爲DRY(不重複自己),使代碼更易於維護,並節省你的時間,瀏覽器不能執行這個抽象的代碼,但構建系統可以編譯成他們可以的東西。「

這是來自第1章Stryjewski,T。& Mao,J. 2016.開發一個吞噬邊緣,第二版。出血邊緣新聞。聖羅莎,加利福尼亞州。

2

預處理器

術語預處理器中定義的wikipedia article爲:

在計算機科學中,一個預處理器是處理其輸入數據以產生被用作輸入到另一個程序輸出的程序。輸出被稱爲輸入數據的預處理形式,後者通常被編譯器等後續程序使用。

這是一段用來準備編譯代碼的軟件。 C預處理器就是一個很好的例子。

根據documentation of gcc provided by gnu C預處理是:

C預處理器,通常被稱爲CPP,是由C編譯器自動使用編譯之前轉換程序的宏處理器。

例如,它會尋找以#開頭的行,並採取如下操作:用其他文本替換它們。

Transpilers

根據this wikipedia文章transpilers是:

源 - 源編譯器,transcompiler或transpiler是取寫入一個編程的程序的源代碼中的型編譯器的語言作爲輸入,並以另一種編程語言生成等效的源代碼。

一個例子是巴別。 Babel是一款JavaScript轉換器,可將邊緣JavaScript轉換爲可在任何瀏覽器(甚至是舊版本)中運行的普通舊式ES5 JavaScript。

它可以幫助您利用邊緣JavaScript,並將其運行在仍然不支持它的環境中,並將其轉譯爲它理解的JavaScript版本。

以下是Babel's github page

採取巴貝爾是一個工具,可以幫助您使用JavaScript編寫的最新版本的代碼。當您的支持環境本身不支持某些功能時,Babel將幫助您將這些功能編譯爲受支持的版本。

希望這會有所幫助!

相關問題