Jquery *编译器*可能吗?

| 当我看到这个问题时,我认为如果可以编写jQuery编译器会有所帮助。现在,通过编译器,我的意思是接受jQuery代码并输出最终执行的原始javascript代码的东西。 这就是我设想的jQuery代码执行块的方式: 调用jQuery函数并将参数传递给它 该函数调用原始javascript函数,并将接收到的参数传递给它 新调用的功能执行预期的操作 我知道这是一个非常简化的模型,它可能要复杂得多,但是我认为,通过调用不同的原始js函数并每次都馈入全部或部分参数/,重复步骤2和3可以简化复杂性以前的结果。 如果我们订阅该模型,那么我们可能会想出使jQuery函数执行双重职责的方法: 他们已经做了什么 以ѭ0的形式记录他们所做的事情 我是否做出了一些错误的假设,使之不可能呢? 有任何想法Firebug的探查器如何尝试获取函数名称?可以在这里使用吗? 编辑 我当时在想用输入/输出制作一个黑匣子:
normal jquery code
→[BB]→
code you\'d write if you used no library
我称其为编译器,因为您先编译一次,然后再使用生成的代码。 我认为它至少可以用于教育用途,也可以用于其他用途。 人们说这将花费少量的代码并输出大量的代码。据我所知,这并没有违背预期的目的 人们说我会在页面渲染中添加多余的,不必要的步骤,考虑到最终只使用最终的代码(并且可能仅用于研究),这样做是不正确的。 人们说javascript函数和jquery函数之间没有一对一的关系,并且暗示这样的转换器太复杂了,可能不值得付出努力。我现在同意这一点。 谢谢你们!     
已邀请:
我想你的意思是:如果你写
var myId = $(\"#myId\")
它将被转换为
var myId = document.getElementById(\"myId\")
我认为这是可能的,但问题是jQuery函数返回jQuery对象,因此在上面的示例中,第一个myId将是jQuery对象,第二个将是节点对象(我认为),这会影响需要稍后在编译后的代码中使用它。特别是如果将它们拴在一起 其次,您必须确保转换实际上具有性能优势。 但是,如果您了解所有这些情况并且可以相应地计划代码,我认为这将是可能的     
如果编译器的目的是将Javascript(可能是jquery或其他形式)转换为更好的Javascript(我从您的理解中说“最终执行”),那么Google已经做到了。他们制作了闭包编译器,并在本文中使用JQuery进行了尝试。这不是您的建议吗?     
jQuery代码是“原始JavaScript代码”,因此我不确定编译器会真正为您带来什么好处。就像编写C#编译器一样,该编译器使用C#4.0代码并发出C#1.1代码。有什么好处? jQuery并不是另一种语言,它替代甚至位于JavaScript之上。它是JavaScript代码的框架,可为常见任务提供许多有用的帮助程序。在我看来,它的最大好处是其独特的结构有助于将其与更多的“类似于Java”的语言区分开来。 JavaScript本身在外观上与其他语言相似,这往往是它作为语言的最大缺点之一。人们试图用Java来思考它,尽管相似之处几乎止于名称。从结构上讲,JavaScript在很多方面都非常不同(类型,范围,并发,继承,多态等),我特别喜欢jQuery和其他现代JavaScript项目如何使该语言具有自己的优点。 我想回到这个问题...如果您想将jQuery样式的JavaScript转换为Java样式的JavaScript,那么这倒退了一步。浏览器将以相同的方式解释这两个版本,但是其中一个版本不那么优雅,并且表示语言的能力比另一个版本差。 请注意,jQuery不是执行这些操作的唯一框架,而是最受欢迎的框架。这样的编译器是否还需要处理所有其他框架?他们都以不同的方式做不同的事情以利用语言。我认为将它们均质化为“简单”形式不会给我们带来任何好处。 编辑:(针对这个问题及其答案的各种评论,有点... 您将如何构造该编译器?鉴于(我们已经指出),jQuery是JavaScript,并且只是JavaScript代码库,并且鉴于浏览器和JavaScript的工作方式,\“编译器\”将必须是另一个JavaScript库。因此,本质上,您想要的是: 网页 jQuery库 一些使用jQuery库的JavaScript代码 至: 网页 jQuery库 一些使用jQuery库的JavaScript代码 您的“编译器”库 一些其他JavaScript代码以某种方式通过您的库发送以前的JavaScript代码 您的\“相当于jQuery \\”库 其他一些JavaScript代码用新版本替换了原始JavaScript代码 为了使事情更简单?或者以某种方式使诸如FireBug的调试工具更易于使用?您提出的建议称为“混淆器”,其唯一目的是使代码更难以逆向工程。副作用是它也使代码更难以理解和维护。     
  现在,通过编译器,我的意思是   接受jQuery代码并输出   最终的原始javascript代码   被执行。 我认为那句话可能表明您出了什么问题。 jQuery是用Java语言实现的库。 jQuery不是与Java分离的语言。 jQuery是Javascript代码的集合,可用于简化Javascript开发。全部是Javascript。将jQuery代码转换为原始Javascript的“ jQuery编译器”将毫无用处,因为jQuery是原始Javascript。 您实际上可能想要的是Javascript编译器。在那种情况下,这肯定是可能的。实际上,如今,某些Web浏览器实际上以某种字节码在Javascript代码上“编译”以增强性能。但是涉及Javascript的开发工作流通常不涉及某种编译器工具。 显然,您真正想要的是将jQuery代码“内联”到您的代码中,如下所示:
var myfoo = $(\'#foo\');
var myfoo = document.getElementById(\'foo\');
实际上,这是C ++编译器可以优化性能的方法,但是Javascript不是C ++,因此不适用于此处。 我看不出这有什么用。 jQuery的要点是通过提供一致的接口(例如
$()
函数)来简化Javascript开发。通过执行此“内联”过程,您将生成更加难以阅读和维护的代码。 为什么还要增加一个步骤?为什么不仅仅将应用程序的javascript代码和jQuery库交付给浏览器?为什么要添加一个额外的步骤,使用额外的工具将Javascript转换为不会提供任何实质性额外好处的Javascript?     

要回复问题请先登录注册