是否可以将库JavaScript预编译为纯JavaScript?

是否可以将库JavaScript预编译为纯JavaScript?,javascript,jquery,performance,compiler-construction,Javascript,Jquery,Performance,Compiler Construction,我使用JQuery在JavaScript中编写代码。它很简单,编码更少,可读性更强。 当我们将JQuery与纯JavaScript进行比较时,JQuery比纯JS慢80%左右 因此,JQuery(或其他JS库)对开发人员来说是一件非常好的事情,但最终对用户来说却是一件坏事:加载速度越慢,运行速度越慢 JavaScript正在客户端运行 因此,在我看来,如果我想用框架轻松编码,那是我的事 这是开发人员的问题,客户不必看到差异 我想知道是否可以用JQuery编写代码,并在纯JavaScript上(本

我使用JQuery在JavaScript中编写代码。它很简单,编码更少,可读性更强。 当我们将JQuery与纯JavaScript进行比较时,JQuery比纯JS慢80%左右

因此,JQuery(或其他JS库)对开发人员来说是一件非常好的事情,但最终对用户来说却是一件坏事:加载速度越慢,运行速度越慢

JavaScript正在客户端运行

因此,在我看来,如果我想用框架轻松编码,那是我的事

这是开发人员的问题,客户不必看到差异

我想知道是否可以用JQuery编写代码,并在纯JavaScript上(本地)编译它

我的意思是像lesscs这样的东西


使用Jquery访问DOM 此JQuery代码编写速度更快,但比纯JS慢80%:

例如,JQuery代码:

   $('#mydiv').css('backgroundColor', 'red');
   $('#mydiv').hide();
   $('#mydiv').html('hello');

   $('#content .col').each(function () {
       $(this).html('ok')
   });
将编译为纯JS:

 document.getElementById('mydiv').style.backgroundColor = 'red';
 document.getElementById('mydiv').style.display = 'none';
 document.getElementById('mydiv').innerHTML = 'hello';

 var query = document.querySelectorAll('#content .col');
 for (var i = 0; i < query.length; i++) {
      query[i].innerHTML = 'ok';
 }
function Animal(name, sound) {
  this.name = name;
  this.sound = sound;
}

Animal.prototype.speak = function() {
  result = (this.name + " says: " + this.sound + "!");
}

var cat = new Animal('Kitty', 'Meow');
cat.speak();
将编译为纯JS:

 document.getElementById('mydiv').style.backgroundColor = 'red';
 document.getElementById('mydiv').style.display = 'none';
 document.getElementById('mydiv').innerHTML = 'hello';

 var query = document.querySelectorAll('#content .col');
 for (var i = 0; i < query.length; i++) {
      query[i].innerHTML = 'ok';
 }
function Animal(name, sound) {
  this.name = name;
  this.sound = sound;
}

Animal.prototype.speak = function() {
  result = (this.name + " says: " + this.sound + "!");
}

var cat = new Animal('Kitty', 'Meow');
cat.speak();


最后,问题在于是否有好的工具可以在不影响用户的情况下快速编写代码

我个人没有这方面的经验,但谷歌闭包编译器可能是你最好的选择

“它解析JavaScript,分析它,删除死代码,重写并最小化剩下的代码。”


这将使您的代码更加高效,尽管我不确定它在具体优化jQuery方面的效果如何。您不太可能真正获得完全“原生”的JavaScript。

您是否对基于jQuery的ria的真实项目有任何实际的速度问题,或者这是唯一的基准色情作品?“有可能将jQuery预编译为原生JavaScript吗?”jQuery不是一种语言,它是用JavaScript编写的函数库。您可能指的是“原生DOM”或“原生浏览器”。简短的回答是,您是否使用通用公共CDN(如google)作为jquery脚本src URL?“我想使用像jquery这样的库来简化编码,但看起来有点慢”。也许是你的jQuery fu有问题。你有没有可能向我们展示减慢代码速度的方法,以便我们提出一些改进建议?@DirkLachowski怎么也没有?OP本质上是在寻求一种内联、展开和优化jQuery库代码的方法。这指向了一个可能最有可能做到这一点的程序。@delnan Nope,OP正在寻求一种(自动)方法,用本机DOM操作替换jQuery函数。我看不出闭包编译器应该如何以独立于浏览器的方式做到这一点。@DirkLachowski在一天结束时,jQuery调用了那些本机DOM函数,它只是隐藏在函数调用和数据结构的几层之外。浏览器功能测试,是的,但这是一个次要的问题,同样的手工编写的本地DOM操作代码也必须这样做。消除这些是编译器优化的圣杯。我真的怀疑闭包编译器是否会成功,但它并没有完全关闭。@delnan我同意(顺便说一句,木工和肉饼的比较真的很有趣,很遗憾你把它删除了)。但我想你明白我的意思了——在OPs问题上,闭包编译器不会有帮助(好吧,也许在IE6或黑暗时代的某些硬件上,但那是另一回事)。@Lacius在我看来,Google闭包编译器更像是一个小型编译器,而不是编译器。它缩小了代码,但并没有真正提高内部性能。