首页
学习
活动
专区
圈层
工具
发布

jQuery.noConflict() 深度剖析与应用指南

面对如今多元化的前端框架与插件生态, 不少团队和个人都会遇到需要同时使用多个库而产生命名冲突的场景。...例如, 某些旧式广告投放脚本或者内嵌的地图库(可能在页面上也会占用 $)与我们项目中的 jQuery 同时加载。...执行后, $ 将不再代表 jQuery, 而回到它执行之前的状态。如果其他脚本或库在此之前已经设置了 $ 变量, 那么就能重新恢复对 $ 的访问与操控。...由于现在的前端环境更倾向于使用模块化和打包工具, 命名冲突显得相对少见, 但在需要使用传统脚本标签引入多方库或历史遗留系统的项目环境里, jQuery.noConflict() 依旧大放异彩。...就像在团队协作里如何尊重并容纳彼此的工作, jQuery 通过 noConflict 这个方法告诉我们, 库与库之间也可以大度且从容地进行共存, 帮助开发者在复杂环境里优雅地应对命名冲突与版本兼容等诸多挑战

26000

如何编写一个jQuery插件

转自 如何编写jQuery插件 译自 jQuery Plugins / Authoring 创建插件 ---- 看来 jQuery 你已经用得很爽了,想学习如何自己编写插件。...它还在,只是为了确保你的插件不与其它使用 $ 的库发生冲突,有一个最佳实践: 把 jQuery 传递给 IIFE(立即调用函数),并通过它映射成 $ ,这样就避免了在执行的作用域里被其它库所覆盖。...现在,在此闭包内我们可以随意用 $ 替换 jQuery。 上下文 现在,已经有了外壳,可以开始编写真正的插件代码了。但在这之前,关于上下文我有话要说。...这种封装和架构是 jQuery 插件社区的一个标准,已经被无数插件所使用,包括 jQueryUI 中的插件和小部件。 事件 bind 方法有个鲜为人知的特性:它支持为绑定事件定义名称空间。...' ); } }; })( jQuery ); data 方法可以帮你在插件的多次方法调用之间跟踪变量和状态。

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    经验之谈-关于实际项目微前端优化

    思考 如何将一个巨石的管理系统改造拆分(各个中心的模块下面还有几十个菜单) ? 微前端是个啥 将前端应用分解成一些更小、更简单的能够独立开发,测试、部署的小块,而在用户看来仍然是内聚的单个产品。...独立部署: 每一个模块可单独部署 技术选型灵活: 在同一项目下可以使用如今市面上所有前端技术栈,也包括未来的前端技术栈。 容错: 单个模块发生错误,不影响全局。...WeChatcf7b6c8ed331d55a1ac4fa5046d162d6.png 常见的实现方式 传统iframe 优点:应用之间自带沙箱隔离 缺点:重复加载脚本和样式 需要解决的问题: 布局问题:...DOM 的样式可以实现样式隔离,比如qiankun.js),需要解决依赖冲突,样式冲突问题 浏览器的原生组件,相比第三方框架,原生组件简单直接,符合直觉,不用加载任何外部模块,代码量小(现在流行的React...而且,对于陈年已久的Jquery多页面的老项目,qiankun对多页应用没有很好的解决办法。每个页面都去修改,成本很大也很麻烦,但是使用 iframe 嵌入这些老项目就比较方便。

    1.8K50

    前端面试题

    当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片的空位,然后继续加载后面的内容。从而加载时间快了,浏览体验也更好了。) · 6.减少http请求(合并文件,合并图片)。 2....Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解 使用.bind()方法非常浪费性能因为它把同一个事件处理函数附加到了每一个匹配的元素上 你应该停止使用.live....bind() , .live()和.delegate()实现的语法糖,具体取决于你如何调用它 新的方向是使用新的.on()方法。...实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。 mounted(载入后) 在el 被新创建的 vm....场景有:单页应用中,组件之间的状态、音乐播放、登录状态、加入购物车. state Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。

    2.3K10

    谈谈CSS sandbox的实现

    下面分享一些小心得: 问题 一开始实现这个页面都是怎么简单怎么来,监听Tab点击,然后向CGI请求到文章数据后,直接用Jquery渲染到页面上$('article').html(content)。...很快你就发现,页面上展示的内容跟后台编辑的展示不一样。因为页面加载了一些公用的样式影响了文章的展示,比如: reset.css normalize.css common.css ?...部分解决办法 命名空间 我第一个想到是命名空间,其实很简单,写过组件系统或者了解过H5制作器实现的人都应该知道,如何实现组件与组件之间的样式隔离,就是通过命令前缀来做的: #namespace {...但是这样做一看就知道有很大局限性: 除了基础,页面样式是变化的,后台编辑的文章富文本内容也是变化的(而且会更复杂,以后可以能会增加音视频等),这些变化只要冲突就需要不断地修改此空间下的样式,重新发布,维护成本极高...其实这样的方式在上面就已经提到适用于哪种场景了: 类似H5制作器,需要将不同组件编辑拖放到同一页面展示 内嵌的协议展示,因为基本上协议的内容标签是非常少的h1到h6,p,列表几个元素基本覆盖了 iframe

    1.2K30

    怎么在layuiAdmin中使用jQuery?

    ,在此也感谢 layui 官方赞助的 layuiAdmin 套餐版授权 不得不说 layuiAdmin 的牛逼,自适应都帮你搞好了,完成需求就好了,对我这种不喜欢搞前端的后端来说真的美滋滋 十年的后台代码已经在...Github开源,一边开发一边提交,同时因为不能泄露 layuiAdmin 的源码,所以去掉了静态页和静态资源 完整的代码上传到 Github 的私有库当中 来说正事吧,在 layuiAdmin 中使用...jQuery,解决 layui 和 jQuery 冲突的办法 jQuery 使用 $ 符号作为 jQuery 的简写,layui 也使用 $ 符号作为简写 jQuery 的团队考虑到了这个问题,并实现了...; }); }); 我当然不是来说jQuery 的,我是来说 layui 的,一定不好好看文档吧 使用内部jQuery 由于 layui 部分内置模块依赖 jQuery,所以 layui 将 jQuery1.11...最稳定的一个版本作为一个内置的DOM模块(唯一的一个第三方模块) 内置的 jQuery 模块去除了全局的 $ 和 jQuery ,是一个符合 layui 规范的标准模块 所以你必须通过以下方式得到:

    4K30

    面试题

    jQuery使用$作为标示符,但是如果与其他框架中的$冲突时,jQuery可以释放$符的控制权 2.第一种解决方式 在jQuery中,$符号可以用jQuery代替,但是这种方式比较麻烦 ...其实,多库共存就是“$ ”符号的冲突。 方法一: 利用jQuery的实用函数$.noConflict();这个函数归还$的名称控制权给另一个库,因此可以在页面上使用其他库。...中的标准规定伪类使用单冒号“:” ,伪元素使用双冒号“::”,但在此之前都使用的单冒号“:”,所以为了保证兼容伪元素两种使用方法都是可以的。...// v-show与v-if区别 // 路由的跳转方式有几种? // 组件之间的常用的传值通信方式有哪些?...// 使用vue如何获取dom元素? // vuex的store里有几个属性值? // vue组件中如何让css只在当前组件中起作用?

    66720

    【思考】为何弃用jQuery?(下)

    回想上一篇对于 jQuery 的文章已经是去年的时候了。 关于“下“的内容却迟迟没有动手,其中也有诸多事情干扰,也可以认为是借口,但我自己其实也是还没有想清楚该如何去说这个事。...这时的市面上还是拥有大量正在使用的 jQuery 1.6.x/1.8.x 版本的项目和网站,但是 jQuery 光辉开始暗淡的里程也由此开始,虽然同年 5 月官方还发布了 jQuery 的 2.11...《微软宣布在 1 月 12 日 起停止支持旧版本浏览器》这一则标题在开发者和媒体中掀起了一阵小高潮。...其开发框架亦是 MVC 模式,其中页面部分使用了 XML 结构,且没有完整的浏览器对象,所以传统的 BOM/DOM 等 APIs 不存在导致 jQuery 在此毫无用武之地,进一步的被大量开发者摒弃。...05 - 2018 微软从 2015 年就将 Edge 作为 IE 的新内核预置在 WIN10 系统中,然而让 IE 死亡的行动从未停止。2018 年 3 月 微软宣布登陆iPad和安卓平板。

    1.8K30

    作为面试官,为什么我推荐微前端作为前端面试的亮点?

    通信机制:qiankun 提供了一个全局的通信机制,允许子应用之间进行通信。 在使用 qiankun 时,如果子应用是基于 jQuery 的多页应用,你会如何处理静态资源的加载问题?...使用 iframe 嵌入老项目:虽然 qiankun 支持 jQuery 老项目,但是似乎对多页应用没有很好的解决办法。...另外,如果共享的组件依赖全局插件(如store和i18n),需要进行特殊处理以确保插件的正确初始化。 在qiankun中,应用之间如何复用依赖,除了npm包方案外?...在使用qiankun微前端框架时,可能会出现子项目之间和主项目之间的全局变量冲突的问题。...创建沙箱环境:在加载子应用的 JavaScript 资源时,import-html-entry 会创建一个沙箱环境(sandbox),用于隔离子应用的全局变量和运行环境,防止子应用之间的冲突和污染。

    1.9K10

    jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件、事件冒泡和事件移除等内容。   ...接上篇jQuery:详解jQuery中的事件(一)   3、合成事件   jQuery有两个合成事件——hover()方法和toggle()方法,同ready()方法一样,这些都是jQuery自定义的方法...*这里要注意的一点是,jQuery的hover()方法准确来说是替代jQUery中的bind("mouseenter")和bind("mouseleave"),而不是替代bind("mouseover"...停止事件冒泡:停止事件冒泡可以阻止事件中其他对象的事件处理函数被执行。在jQuery中提供了stopPropagation()方法来停止事件冒泡。...5、移除事件:在绑定事件的过程中,不仅可以为同一个元素绑定多个事件,也可以为多个元素绑定同一个事件。在此就不举例说明了。

    3.6K30

    最新Tampermonkey 中文文档解析(附基础案例和高级案例)

    @author 脚本的作者 @description 简短重要的描述 @homepage, @homepageURL, @website and @source 在“选项”页上用于从脚本名链接到给定页的作者主页...有关如何确保完整性的详细信息,请查看子资源完整性部分。允许多个标记实例。...有关如何确保完整性的详细信息,请查看“子资源完整性”部分。允许多个标记实例。...无论如何,在给定的注入时刻之后发生的所有domnodeinserted和domcontentloaded事件都将被缓存,并在注入时传递给脚本。...如果@grant后跟“none”,沙盒将被禁用,脚本将直接在页面上下文中运行。在此模式下,没有gm_u*函数,但gm_u info属性将可用。

    6.8K11

    Wijmo 更优美的jQuery UI部件集:从wijwizard和wijpager开始

    本文演示了如何使用Wijmo的其中两个部件,wijwizard 以及 wijpager。如果你期望看到Wijmo的其他文章,请参阅Wijmo 更优美的jQuery UI部件集:发现 Wijmo。..."stylesheet" type="text/css" /> 你要在这个快速开始中做的第一件事情就是创建一个不包含任何Header,具有三个页的基本wijwizard部件。...同时元素的标识符被设置成“pages”,你将在接下来通过jQuery访问这个元素以完成对部件的初始化。 请注意,为了向部件添加页,你所要做的只是将文本放置在一对标签中间。...(function () { $("#pages").wijwizard(); }); 将一个可以工作的wijwizard添加到你的页面上就是这么简单.../div>标记之间(不要删除嵌套的DIV标签)。

    3.4K70

    多种前端框架的优缺点「建议收藏」

    该特性是JQuery可以与其他JavaScript库共存,在项目中放心地引用而不需要考虑到后期的冲突。...JQuery同时修复了一些浏览器之间的的差异,使开发者不必在开展项目前建立浏览器兼容库。...这种将行为层与结构层完全分离的思想,可以使JQuery开发人员和HTML或其他页面开发人员各司其职,摆脱过去开发冲突或个人单干的开发模式。...3、多个插件冲突:在同一页面上使用多个插件时,很容易碰到冲突现象,尤其是这些插件依赖相同事件或selector时最为明显。...5、对动画和特效的支持差:在大型框架中,jQuery核心代码库对动画和特效的支持相对较差。但是实际上这不是一个问题。目前在这方面有一个单独的jQuery UI项目和众多插件来弥补此点。

    5.3K20

    一个简单粗暴的前后端分离方案

    提前预感到这次完全分离可能会遇到一些困难,但是项目上线要紧,也不能深入搞架构,于是打算就用jQuery+handlebars,jQuery来完成页面逻辑和DOM操作,用handlebars来完成页面渲染...低头看看自己现在手头的项目,1个前端,2周时间,要完成一个完整的web项目,还是用最稳妥最低级的方式来搞吧~ 基本结构 项目整体并不是一个单页应用,但有些模块需要做成局部的单页操作,像这种需要分步完成的操作...因此,一个模块有一个主html页面,初始只有一些基本的骨架,有一个名字相同的js文件,该模块逻辑都在此js文件中,有一个名字相同的css文件,该模块的所有样式都定义在此css文件中。...jQuery、handlebars,站点通用js和css文件。...传统由后端渲染的页面,url中的参数会发送到服务端,服务端接收后可以再渲染到页面上供js使用。

    1.9K10
    领券