脱钩jquery,sizzle?

前端之家收集整理的这篇文章主要介绍了脱钩jquery,sizzle?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有谁有经验/洞察力:解耦jquery / sizzle?

这是为了普遍的兴趣,但这里的情况触发了我的问题:

在项目中已经有jquery。想要尝试http://ecsstender.org/,这需要Sizzle选择器引擎。
我真的不想包括Sizzle的第二个副本 – 它已经是jquery的一部分。

>宁愿做这样的事情:http://forum.jquery.com/topic/further-decoupling-sizzle-and-jquery
>例如创建一个取决于Sizzle的外部而不是嵌入式版本的jquery构建 – 所以同样的Sizzle lib可以被jquery,eccstender或其他脚本使用。

似乎是个好主意虽然我猜这可能会伤害到性能,我想要看看与jQuery生产版本的基准比较。

有人知道这是否已经完成? (github fork?)还是有一个很好的理由反对这种方法

解决方法

没有必要将Sizzle包含在jQuery构建中。它可以被删除… jQuery代码 all references Sizzle.,你可以自己抓住/编译jQuery(包括Sizzle事先),并将它暴露给任何其他库(实际上并不包括在编译版本中,就像外部的封闭编译器)。

这是可以让它嵌入的选项,但暴露Sizzle外部使用:

如果你知道jQuery将被使用(依赖),只需在jQuery之后添加

​window.Sizzle = jQuery.find;

这将重新暴露Sizzle作为您可以使用的属性

以下是手动删除Sizzle嵌入的版本:

在jQuery(version 1.4.3 link)中,您会看到:

/*!
 * Sizzle CSS Selector Engine - v1.0
 *  Copyright 2009,The Dojo Foundation
 *  Released under the MIT,BSD,and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){
//...
//lots of code!
//...

// EXPOSE
jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
jQuery.unique = Sizzle.uniqueSort;
jQuery.text = Sizzle.getText;
jQuery.isXMLDoc = Sizzle.isXML;
jQuery.contains = Sizzle.contains;

})();

仅替换该部分:

(function(){    
// EXPOSE
jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
jQuery.unique = Sizzle.uniqueSort;
jQuery.text = Sizzle.getText;
jQuery.isXMLDoc = Sizzle.isXML;
jQuery.contains = Sizzle.contains;    
})();

那么所有你需要做的包括Sizzle之前的jQuery,它会工作正常。

Here’s a fiddle showing it working包括直接从github的Sizzle,没有嵌入在jQuery中。

原文链接:https://www.f2er.com/jquery/182491.html

猜你在找的jQuery相关文章