预处理器和转译器有什么区别?
我正在写论文,并且无法真正找到任何明确的答案。预处理器和转译器(或转译器)之间有什么区别?预处理器和转译器有什么区别?
我已经找到了编译器和编译器在搜索答案时有什么区别。 (https://www.stevefenton.co.uk/2012/11/compiling-vs-transpiling/)
例如CSS预处理器(sass,less)和JS转译器(咖啡脚本,打字稿)。它们是一样的吗?我的意思是,他们做同样的事情吗?
在一些地方它被读为“JS预处理器”,但是当我谷歌时,我找不到任何有价值的信息。
现在,我想,预处理器只是将例如sass转换为CSS,以使浏览器更“可读”。译者编译整个事情,从咖啡脚本语言到JavaScript语言。
所以我就在这里,译者只是编译整个事情(这是更大的过程),预处理器只是转换为更“可读”?
或者是萨斯例如就像从咖啡脚本是从JavaScript不同的语言?
预先感谢您!
我搜索了电子书,发现了一些澄清这一点,或者至少我认为它确实如此。
“预处理器和转译器是作为对HTML,CSS和JavaScript的抽象引入的,作为添加源语言中不可用的功能的手段,保持代码为DRY(不重复自己),使代码更易于维护,并节省你的时间,浏览器不能执行这个抽象的代码,但构建系统可以编译成他们可以的东西。“
这是来自第1章Stryjewski,T。& Mao,J. 2016.开发一个吞噬边缘,第二版。出血边缘新闻。圣罗莎,加利福尼亚州。
预处理器
术语预处理器中定义的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版本。
采取巴贝尔是一个工具,可以帮助您使用JavaScript编写的最新版本的代码。当您的支持环境本身不支持某些功能时,Babel将帮助您将这些功能编译为受支持的版本。
希望这会有所帮助!
你看过这个吗? https://www.quora.com/What-is-the-preprocessor-in-web-developing –
嗨!不,我没有找到那个,但那真的很有帮助!谢谢! – Chris
无论Sass/Coffeescript是否与Js/CSS完全不同,都可能引发争议。但是还有更多简单的预处理器例子,例如许多服务器使用模板库在页面为服务器时将文本插入到HTML中。据我了解,主要区别在于,预处理器可能不会将转换器从一种源代码语言/格式转换为另一种。 –