Javascript Transpiler和编译器

Javascript Transpiler和编译器,javascript,code-translation,Javascript,Code Translation,我想知道transpiler和编译器之间的区别 例如,我有一种语言(“让我们称之为foo”),它将被转换为javascript foo -----transpiled-----> javascript 然而,foo是否受到javascript的限制 例如:“如果没有服务器端脚本的帮助,JavaScript无法写入服务器上的文件” 如果是这样,是否有可能退出javascript的限制 例如,使foo能够写入文件本身 foo ---------> write to files on t

我想知道transpiler和编译器之间的区别

例如,我有一种语言(“让我们称之为foo”),它将被转换为javascript

foo -----transpiled-----> javascript
然而,foo是否受到javascript的限制

例如:“如果没有服务器端脚本的帮助,JavaScript无法写入服务器上的文件”

如果是这样,是否有可能退出javascript的限制

例如,使foo能够写入文件本身

foo ---------> write to files on the server
注意:我要求的是解释和原因等,而不是代码

再次注意:是否可以通过附加库退出限制

编辑:那么,如果我从另一种语言(如python)添加了另一个库,它是否有助于退出限制

Transpiler是一种编译器,它将一种编程语言的源代码作为输入,并将源代码输出到另一种编程语言中

所以在输出中,您有一个源代码为destinationa语言的文件,对于您的示例,它的javascript,这个文件将被执行,所以如果您在javascript上手动创建它,结果是相同的


所以请回答您的问题:不,它不可能退出目标语言的限制,因为最终您可以在此语言上执行程序

您无法退出目标语言的限制。但是,您可以创建一个兼容层来模拟缺少的特性并以某种方式提供功能

在您的示例中,如果foo内部函数
writefile()
是编写文件的函数,则可以创建一个库,该库提供一个writefile函数,该函数使用ajax将文件存储到服务器(或cookie或localstore等)。原始的foo脚本不需要更改就可以正常工作

这正是编写transpiler的主要部分之一:您不仅需要翻译语言,还必须模拟缺少的功能


(您也可以选择禁用缺少的功能)

如果您的输出是Javascript,那么它就是Javascript。它不会仅仅因为你是从其他东西中生成的而产生新的特性或功能。你如何让浏览器运行这些库?即使您确实设法让浏览器运行python代码,这对将文件写入web服务器有何帮助?python代码仍将在某人的机器上运行,而不是在您的服务器上。您不能“将CGI用作库”。CGI是在服务器上运行的,而不是在运行JS的客户端上运行的。你的建议就像是拍一张电视的照片,并期望照片移动。不,你不能“将电视用作图书馆”。谢谢你:“这正是编写transpiler的主要部分之一:您不仅需要翻译语言,还需要模拟缺少的功能。”
foo ---------> write to files on the server