使用JQuery而不是直接的JavaScript将保存多少行代码?

使用JQuery而不是直接的JavaScript将保存多少行代码?,javascript,jquery,lines-of-code,Javascript,Jquery,Lines Of Code,也许更熟悉这个话题的人可以帮助我简化或正确地写问题。我们正在寻找JQuery甚至其他JS框架的指标,与直接使用javascript进行比较。我不相信代码行度量,从来没有,但我不能考虑其他任何东西来衡量它 Function Points (jquery) = Jquery-LOC Function Points (JS) = JS-LOC “节省时间”指标与其他指标一样好 使用jQuery,你写的更少,(我的意思是这甚至在jQuery的座右铭中!),但LOC是一个荒谬的度量 我使用jQuery的

也许更熟悉这个话题的人可以帮助我简化或正确地写问题。我们正在寻找JQuery甚至其他JS框架的指标,与直接使用javascript进行比较。我不相信代码行度量,从来没有,但我不能考虑其他任何东西来衡量它

Function Points (jquery) = Jquery-LOC
Function Points (JS) = JS-LOC

“节省时间”指标与其他指标一样好

使用jQuery,你写的更少,(我的意思是这甚至在jQuery的座右铭中!),但LOC是一个荒谬的度量


我使用jQuery的原因是为了浏览器兼容性。如果我不必自己写,显然我节省了时间。

开发人员的工作效率如何?找到支持代码库的人有多容易

这取决于你在写什么。想要更精确吗?正好12行

您对代码行度量的怀疑是正确的,不过,假设您对jquery本身进行了折扣,它将节省大量的新代码行


更重要的是,它将减少您必须在大约5个浏览器上手工编写和测试的DOM代码量。这是一个巨大的时间节约,也是一个巨大的bug减少器。

我也不认为LOC是一个非常适用的指标,但是能够编写类似于
$(“#我的id”)
vs
document.getElementById('my#id')的东西
从长远来看,甚至从短期来看,都会产生巨大的影响。

要使用标准javascript附加单击处理程序,您可以尝试以下方法:

var myelement = document.getElementById("clickme");
function myClickHandler (evt) {
  var evt = evt || event; // ie uses a global instead of
                          // passing an object as a param
  (evt.target || evt.srcElement).style.width="110px";

}
if (myelement.addEventListener) {
   myelement.addEventListener("click", myClickHandler, false);
} else if(myelement.attachEvent) {
   myelement.attachEvent("onclick", myClickHandler);
} else if(typeof myelement.onclick === "function") {
    (function () {
      var oldfunc = myelement.onclick; 
      myelement.onclick = function (evt) {
          var evt = evt || event;
          oldfunc(evt);
          myClickHandler(evt);
      }
    })()
} else {
   myelement.onclick = myClickHandler;
}
或者尝试使用jquery执行类似的操作

jQuery("#clickme").click(function(evt){ jQuery(evt.target).css("width",110); });
您可能会争辩说,第一个示例代码是一个愚蠢的东西,每次您想要分配一个点击处理程序时都要编写。为什么不把它重构成自己的标准函数,并重用它呢?然后,您就可以调试一个中心函数,而不必在发现错误后重写每个实例

这将是一个非常好的论点,这正是像jquery这样的库的要点。如果您想让代码跨浏览器工作,那么不编写这个冗长的样板文件是绝对必要的,这样可以节省时间。您不必调试它,从而节省了时间。如果您确实需要调试它,只需在jquery中修补一个函数并为下一个版本提交错误报告,就可以节省时间。如果事件绑定代码有问题,那么只有一个人需要更改一位代码,而不是成千上万的人需要更改数百万位代码。当有人指出您应该首先测试addEventListener时,这一点就没有意义了,因为jQuery已经做了既定的“正确”的事情。如果没有,它将在下一个版本中出现

jQuery不会帮助您解决真正困难的领域特定问题,但是对于每天的dom操作来说,使用库函数比试图让它“接近金属”要好得多。有太多的跨浏览器的碎片,太多愚蠢的冗长DOMAPI,一次又一次地解决已经解决的问题太愚蠢了

为了保持清醒,您需要某种库(不一定是jquery)

现在你到底节省了多少时间和精力?谁知道呢?这是无法估量的。您必须绑定事件处理程序多少次?在一个简单函数中,您需要做多少次jQuery提供的其他事情?一方对另一方的依赖性很强


如果你找到一种方法来衡量程序员的工作效率,请一定要让我们知道。我想我们都会很感兴趣的。无论如何,我们从这些客观事实和我们个人的主观经验中知道,这可能需要相当长的时间。

使用JQuery或其他JavaScript库,您的应用程序将拥有更多的功能点和更多的代码行。为什么?因为在开始使用这些库之前,您会很容易地做一些您认为不可能或不可行的事情。这将鼓励您编写更多功能,而不是像从头开始编程那样惩罚您的尝试


它们那么好。

没有上下文,这个问题基本上没有意义

如果您使用jQuery在四行中执行一些本来需要20行的操作,那么添加(在版本1.3.2上)4376行jQuery以保存16行您自己的代码将失败

另一方面,如果您通过使用jQuery节省了编写9000行代码的时间,那么您将获得净收益

如果你要花三个月的时间来学习写这16行代码的必要性,那么4376行代码节省16行代码是值得的。或者,花三个月的时间来学习足够多的知识,以避免写9000行20行就行了,这可能是值得的


我认为您需要一个更复杂的度量。

它与字符串长度的度量相当。

我知道这是一个老问题&不是一个非常重要的问题,但是,让我添加我的操作。查看Brenton的示例:

jQuery("#clickme").click(function(evt){ jQuery(evt.target).css("width",110); });
如果IE8&below不在上述范围内,则显然可以将其写成:

document.getElementById('clickme').addEventListener('click', function(e){e.target.style.width = '110px';}, false);
当比较LOC时,没有人希望用纯JavaScript从头开始编写每个应用程序,通过jQuery(一个通用库)更可行

在公平竞争的环境中,您可以比较两个应用程序: App-A使用jQuery+libsVSApp-B使用纯JS+libs。 App-B可能比App-A使用更多的lib,App-A是lib,这意味着Js核心代码比预想的要少

从长远来看,一个通用库可能在0.?-4kB左右,可以做到以下几点,因为它不是一个适合所有人的库,所以在App-B中加入它是公平的:

getEl('clickme').ev('click',{ width: 110 });

与JS相比,jQuery当然会以更少的行数取胜,但区别在于比较的方法。

Standard
addEventListener
通常在专有(而不是