Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我们不需要JavaScript框架的所有功能时,为什么要下载整个JavaScript框架?我们有什么建议?(JavaScript)_Javascript_Performance - Fatal编程技术网

当我们不需要JavaScript框架的所有功能时,为什么要下载整个JavaScript框架?我们有什么建议?(JavaScript)

当我们不需要JavaScript框架的所有功能时,为什么要下载整个JavaScript框架?我们有什么建议?(JavaScript),javascript,performance,Javascript,Performance,我喜欢GoogleWebTookitAPI方法。它在后台使用Java语言,只编译目标浏览器需要的JavaScript代码。有些开发人员希望在纯JavaScript语言中使用该功能 为了满足这一要求,我们可以提出什么建议 我建议使用JavaScript注释(作为标志)作为某些编译器(如Yahoo JavaScript编译器)分析我们的应用程序JavaScript代码的一种方式,并仅生成所需的JavaScript框架代码 示例:假设的JavaScript框架(JQuery、Mootools、Prot

我喜欢GoogleWebTookitAPI方法。它在后台使用Java语言,只编译目标浏览器需要的JavaScript代码。有些开发人员希望在纯JavaScript语言中使用该功能

为了满足这一要求,我们可以提出什么建议

我建议使用JavaScript注释(作为标志)作为某些编译器(如Yahoo JavaScript编译器)分析我们的应用程序JavaScript代码的一种方式,并仅生成所需的JavaScript框架代码

示例:假设的JavaScript框架(JQuery、Mootools、Prototype等)代码

因此,当我的应用程序使用sayHello函数时,只有sayHello函数及其依赖项会通过JavaScript注释过滤,而不会过滤其他内容。因此,通过只使用所需的JavaScript框架代码,我们的应用程序将变得更轻


你呢:你有什么建议?

如果框架的JavaScript代码作为可缓存文件使用,那么请求整个框架(例如jQuery.js)的下载成本就可以消除,但是如果你在运行中生成框架代码(如你上面所建议的),那么就很难利用缓存

除此之外,定义整个框架的内存开销可能不会有问题(假设框架编写合理)


因此,像通常情况一样,拉入整个框架非常简单,工作良好,并且不需要特定的服务器端基础设施(如GWT)

我认为增加所选内容的复杂性是不值得的。jQuery是57k,加载速度非常快。你最好把精力花在其他可能真正重要的事情上。

有一种情况对我来说是有意义的——iPhone的jQuery。jQuery中的所有非Safari行李都放在那里并没有任何意义,这会减慢速度


但是,对于典型的桌面,如果您从Google API获得一个JS库,它可能已经被缓存并准备就绪。

我建议您学习使用JavaScript编程,了解不同DOM实现的各种特性,然后编写应用程序所需的代码。如果你真的不想重新创建所有的事件处理把戏等等,那么就从库中学习相关技术。通过这种方式,您将学到更多关于您正在做什么的知识,因为您需要真正了解如何将这些技术集成到您的应用程序中


自1996年以来,我一直在专业地使用JavaScript,与许多人一样,最初我被库提供的明显易用性所吸引;但如果我在这里看到一个答案,上面写着“使用jQuery”(后面是一些在jQuery中甚至不是最优的代码),而正确的答案是使用一个现有的、有良好文档记录的JavaScript功能,该功能自Netscape Navigator 3以来可以在每个实现上运行,我会尖叫;-)

我不知道其他框架,但使用Dojo Toolkit,您可以通过使用AOL或Google站点中源代码的公共CDN副本更好地利用缓存。

我目前正在使用javascript代码库做类似的事情,但这只是因为我正在构建一个非常大的单页ajax应用程序。在页面顶部的注释中,我使用java风格的导入语句来包含其他javascript“类”/对象。然后使用它从应用程序中的几十个文件中创建一个javascript文件,只引入所需的代码


这就是说,我们并没有将jquery这样的小型库简化为一个更小的库来满足需要。说到这些东西,我认为缓存或CDN应该足够好了。

@Michael:我认为它非常可读。并非所有SO的用户都是以英语为母语的人(比如我自己),但我能很好地理解他想说的话的精髓:)。这篇文章只使用了必要的词汇更严肃地说,我明白了作者的意图。但是:根据需要编译Javascript文件听起来麻烦多了,而且会破坏浏览器缓存。对我来说,简单的模块化方法就足够了。因此,这是一个否定的答案。过早优化是万恶之源。考虑到Google和Yahoo将为您托管Javascript库,用户可能已经缓存了这些库。。。这真的是一个值得花时间解决的问题吗?嗨,jrockway,在我的公司,一家大型医疗保健公司,我们在一些应用程序中使用INTRANET,所以INTERNET并不总是打开的。考虑它。浏览器不总是使用缓存,即使在可能的时候。例如,如果用户在IE 6(以及可能更高版本)中打开一个新窗口(通过文件菜单或使用Ctrl-N),它将始终重新检索所有内容,完全绕过缓存。开发人员不应该期望浏览器缓存减轻他们通过网络发送的数据量最小化的责任,因为缓存充其量是不可靠的。同意,动态重新编译在这里并不好,但您可以将此作为部署前活动进行,并将最终输出为一个编译后的.js文件,该文件将提取所有必要的脚本partscache is king,就像在Life中一样,我认为他实际上指的是re:GWT,而不是它在运行中编译它(这将是一种太慢和资源密集的方式),相反,它指的是GWT如何为每个浏览器创建不同的JS文件,然后将相应的文件发送给IE、FF、Opera等,并根据这些文件检测UA。你说得对,pbreitenbach。但是你不能忘记,随着新的JavaScript版本的发布(以及新的特性),需要更多的代码。不知道为什么会被否决。事实上,iPhone的jQuery有很多替代品,因为
// depends function say
funcion sayHello() {
    // some code   
}

function say() {
   // some code
}

// more and more no needed Javascript framework functions in our app