Chr*_*ris 5 css preprocessor coffeescript transpiler css-preprocessor
我正在撰写论文,并没有真正找到任何一个问题的明确答案.
预处理器和转换器(或转换器)之间有什么区别?
例如CSS预处理器(sass,less)和JS转换器(coffee script,typescript).它们是一样的吗?我的意思是,他们做同样的事吗?
在某些地方它被称为"JS预处理器",但是当我谷歌那时,我找不到任何有价值的信息.
现在,我在想,预处理器只是将sass转换为CSS,使浏览器更具"可读性".并且转换器编译整个过程,从咖啡脚本语言到javascript语言.
所以我就在这里,转换器只是编译整个事物(这是更大的过程),预处理器只是转换为更"可读"?
或者Sass,例如,就像CSS的不同语言一样,咖啡脚本来自javascript?
先感谢您!
术语预处理器在维基百科文章中定义为:
在计算机科学中,预处理器是一种程序,它处理其输入数据以产生用作另一程序输入的输出.输出被称为输入数据的预处理形式,其通常由诸如编译器的一些后续程序使用.
它是一个用于准备要编译的代码的软件.一个很好的例子是C预处理器.
根据gnu提供的gcc文档的C预处理器是:
C预处理器(通常称为cpp)是一个宏处理器,C编译器会在编译之前自动使用它来转换程序.
例如,它查找以...开头的行#并执行操作,例如:将其替换为其他文本.
根据这个维基百科的文章,转发者是:
源到源编译器,转编译器或转换器是一种编译器,它将以一种编程语言编写的程序的源代码作为其输入,并以另一种编程语言生成等效的源代码.
一个例子是巴贝尔.Babel是一个JavaScript转换器,它将边缘JavaScript转换为可以在任何浏览器(甚至旧版本)中运行的普通旧ES5 JavaScript.
它可以帮助您利用边缘JavaScript并让它在仍然不支持它的环境中运行,将其转换为它理解的javascript版本.
以下内容摘自Babel的github页面
Babel是一个帮助您在最新版本的JavaScript中编写代码的工具.当您支持的环境本身不支持某些功能时,Babel将帮助您将这些功能编译为支持的版本.
希望这可以帮助!
下面引用的史蒂夫·贝克的回答很好地解释了这一点。
\n\n\n一般来说,预处理器接受 X 语言的代码 - 以某种方式对其进行转换 - 并输出 X 语言的代码。 \n \n
\n
一般来说,编译器接受 X 语言的代码 - 并以机器代码(或可能是汇编语言)输出它).\n
\n第三类东西是 \xe2\x80\x9ctranspiler\xe2\x80\x9d - 它接收 X 语言的代码并输出 Y\xe2\x80\xa6 语言的代码,另一种人类可读的语言。\ n
\n预处理器的一个很好的例子是 C 语言预处理器。\xe2\x80\x99 对 C 语言了解不多 - 除了以 \xe2\x80\x9c#\xe2\x80\x9d 字符开头的注释和行。\n \n所以
在 C 中,你可以说一些东西例如:\n
\n#define HW \xe2\x80\x9cHello World\xe2\x80\x9d\n
\n\xe2\x80\xa6,之后在任何地方看到硬件,\xe2\x80\x99 都会将其替换为 \xe2\x80\x9cHello World\xe2\x80\x9d。\n
\ n它也知道诸如
#ifdef HW \n \xe2\x80\xa6.stuff\xe2\x80\xa6 \n #endif \nRun Code Online (Sandbox Code Playgroud)\n\n\n\xe2\x80\xa6 表示如果 \xe2\x80\x9cHW\xe2\x80\x9d 的 #define 存在,则包含 #endif 之前的行 - 否则删除它们。\n
\n
\n因此 C 预处理器的输入是 C代码(有一堆以 \xe2\x80\x9c#\xe2\x80\x9d 开头的行),输出是带有一堆替换的 C 代码,删除了一些代码 - 其他文件中包含的其他代码等。
我搜索了电子书并找到了一些可以澄清这一点的东西,或者至少我认为它可以。
\n\n\n\n\n预处理器和转译器作为 HTML、CSS 和 JavaScript 的抽象引入,作为添加源语言中可用的功能的手段,保持代码干燥(Don\xe2\x80\x99t 重复\n 您自己),使代码更易于维护,并节省您的时间。\n 浏览器无法执行此抽象代码,但构建系统可以\n 编译为它们可以执行的代码。
\n
这是来自:\n第 1 章,Stryjewski, T. & Mao, J. 2016。开发 gulp 边缘,第二版。出血边缘出版社。加利福尼亚州圣罗莎
\n