首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jQuery源码研究:选择器

jQuery的css选择器,是一大亮点,其实现源码也可单独拎出来作为模块使用。 先看个整体,在jQuery源码中在行229-2752区域。...var Sizzle = (function(window){ // 具体实现暂略... })(window) css选择器的具体实现是一个匿名自执行函数,传入参数为window对象。...函数顶部定义若干变量,包括本地文档变量、特定实例数据和特定实例方法,此外还定义了一些为选择器字符串服务的正则表达式。数量太多就不一一列举了,感兴趣的可以自己去看源码吧。...context.nodeType : 9; results = results || []; // 对选择器值为非字符串、为假、节点类型不符合要求时的返回值进行处理 if (...== 11 && (match = rquickExpr.exec( selector )) ) { // ID 选择器 if ( (m

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

手写Express.js源码

手写源码 手写源码才是本文的重点,前面的不过是铺垫,本文手写的目标就是自己写一个express来替换前面用到的express api,其实就是源码解析。...本文所有手写代码全部参照官方源码写成,方法名和变量名尽量与官方保持一致,大家可以对照着看,写到具体的方法时我也会贴出官方源码的地址。...express.js对应的源码看这里:github.com/expressjs/e… app.listen 上面说了,express.js只是一个空壳,真正的app在application.js里面,所以..._router = new Router(); } } 复制代码 app.listen,app.handle和methods处理方法都在application.js里面,application.js...[method] 所以我们来看下Router这个类,下面的代码是从源码中简化出来的: // router/index.js var setPrototypeOf = require('setprototypeof

5.4K30

手写Koa.js源码

第二篇文章是看了Express的基本用法,更主要的是看了下他的源码:手写Express.js源码 Express的源码还是比较复杂的,自带了路由处理和静态资源支持等等功能,功能比较全面。...从上面两个例子的代码来看,Koa跟Express有几个明显的区别: ctx替代了req和res 可以使用JS的新API了,比如async和await 手写源码 手写源码前我们看看用到了哪些API,这些就是我们手写的目标...lib/application.js这个文件就是我们经常用的Koa类,虽然我们经常叫他Koa类,但是在源码里面这个类叫做Application。...app.createContext对应的官方源码看这里:github.com/koajs/koa/b… context.js 上面的this.context其实就是来自context.js,所以我们先在...Express源码可以看我之前这篇文章:手写Express.js源码 Koa的思路看起来更清晰,Koa本身的库只是一个内核,只有中间件功能,来的请求会依次经过每一个中间件,然后再出来返回给请求者,这就是大家经常听说的

1.1K20

Netty: NIO Selector选择器(CS demo详细注释与源码

Netty 基础 java NIO Selector 三个元素: Selector选择器、SelectableChannel可选择的通道、SelectionKey选择键 本质上,Selector是监听器...,监听的是通道是否有我们关心的操作产生,操作对应的是事件(连接、接收、读/写),使用SelectionKey代表具体的事件,在确保通道是可选择的情况下,将通道注册进选择器中,此时Selector维护的是...FileChannel就不是可选择的,Socket相关的通道都是可选择的 一个通道可以被注册到多个选择器上吗?...可以的 多个通道可以注册到一个选择器上,但一个通道只能在一个选择器中注册一次 SelectionKey,封装了要监听的事件,连接、接收、读、写。...,将通道注册进选择器中,伴随设置通道要处理的事件(OP_ACCEPT) c、轮询选择器,当前是否有要处理的操作 select() > 0?

21430

如何阅读JS源码?读源码有什么好处

对,就是看别人写的JS代码。文档嘛,自然是没有的。 之前也有试过看代码,但项目中N多JS文件,每个JS文件上千行,一行一行的看下来,用不了几分钟就完全晕掉了。...于是,这一次,我决定换一个方式读JS源码。 这个项目中有N个JS文件,我把入口的JS文件拿出来先看,然后我把它里面所有的函数名,都用思维导图写出来,就像这样, ?...看小说一行行看就OK,但读源码的重点,不在于要读完并理解每一行JS代码,而在于通过图表和笔记,理解系统的结构和它们之间的关系。...实际上这也是不可能的,每个大项目中上百个JS文件,每个JS文件上千行、几千行代码,这算起来就十万多行了,哪有时间让你慢慢看完。...推广来说,看项目源码,看前端各种构架的源码,它最大的好处就是可以培养自己的对于代码的“层次感”。

3.6K110

【CSS】CSS 选择器 ① ( CSS 选择器作用 | CSS 选择器分类 | 标签选择器 | 类选择器 | div 与 span 标签 | 多类名选择器 )

文章目录 一、CSS 选择器作用 二、CSS 选择器分类 三、标签选择器 1、简介 2、代码示例 四、类选择器 1、简介 2、类名规范 3、代码示例 4、div 与 span 标签 ① span...标签 ② div 标签 5、多类名选择器 一、CSS 选择器作用 ---- CSS 作用 : 以下面的代码为例 , 先通过 选择器 h3 将 HTML 中的 h3 标签类型选择出来 , 然后为这些标签设置...选择器分类 ---- CSS 选择器 主要分为 : 基础选择器 复合选择器 两种类型 ; CSS 基础选择器 主要分为以下几类 : 标签选择器选择器 id 选择器 通配符选择器 三、标签选择器 --...-- 1、简介 标签选择器 是 使用 HTML 标签作为选择器 , 如果 HTML 引入了使用 标签选择器的 CSS 样式 , 那么该 HTML 中的 所有的指定标签 , 都使用该 CSS 样式 ; 标签选择器...1、简介 CSS 类选择器 可以 将 页面中的 某几个 标签选择出来 , 使用 " .类名 " 识别标签 ; CSS 类选择器 使用方式如下 : 首先 , 在标签中的 class 属性中设置类名 ;

2.8K20

【CSS】CSS 复合选择器 ① ( 基础选择器与复合选择器 | 后代选择器 )

文章目录 一、基础选择器与复合选择器 二、后代选择器 1、语法说明 2、示例分析 3、完整代码示例 一、基础选择器与复合选择器 ---- CSS 基础选择器 : 在之前的博客中 , 介绍了 CSS...的基础选择器 ; 标签选择器选择器 ID 选择器 通配符选择器 在实际开发中 , 基础选择器 不能满足 快速选择标签的需求 ; 复合选择器 是 由 两个以上 的 基础选择器 通过 各种方式 组合 而成的...选择器 ; 复合选择器 可以 更精准 更快速 地 选择 目标元素标签 ; 二、后代选择器 ---- 1、语法说明 后代选择器 可用于 选择 基础选择器选择出的元素组 中的 另外基础选择器选择出的元素组...; 后代选择器 语法 : 父选择器 和 子选择器 都是 CSS 基础选择器 , 父选择器 和 子选择器 之间 使用空格分开 ; 父选择器选择器 { 属性名称1:属性值1; 属性名称2:属性值2...设置为 类选择器 .gradefather , 子选择器 也设置为 类选择器 .father2 , 孙子选择器 设置为 标签选择器 label , 那么将 label 标签内的文本设置为红色 , 则可以使用如下样式

1.9K10

Vue.js 源码⽬录设计

Vue.js源码都在 src 目录下,其目录结构如下: src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms...Vue.js 四、server Vue.js 2.0 支持了服务端渲染,所有服务端渲染相关的逻辑都在这个目录下 ?...注意:这部分代码是跑在服务端的 Node.js,不要和跑在浏览器端的 Vue.js 混为一谈 服务端渲染主要的工作是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合...这个目录下的代码逻辑会把 .vue 文件内容解析成一个 JavaScript 的对象 六、shared Vue.js 会定义一些工具方法,这里定义的工具方法都是会被浏览器端的 Vue.js 和服务端的...Vue.js 所共享的 ?

1.3K30

JS魔法堂:mmDeferred源码剖析

一、前言                               avalon.js的影响力愈发强劲,而作为子模块之一的mmDeferred必然成为异步调用模式学习之旅的又一站呢!...三、源码剖析                                 首先要了解的是mmDeferred中存在Deferred和Promise两个操作集合(两者操作同一个的数据结构实例),Promise...利用JS中变量声明自动提升(hoist)的特性,通过前置return语句将对外接口与具体实现的代码分离。   2....下面是源码 define("mmDeferred", ["avalon"], function(avalon) { var noop = function() { } function...} Deferred.nextTick = avalon.nextTick return Deferred }) 四、总结                               源码中还提供了相关资料的链接

1K60

迷你 JS 框架 Hyperapp 源码解析

Hyperapp 是最近热度颇高的一款迷你 JS 框架,其源码不到 400 行,压缩 gzip 后只有 1kB,却具有相当高的完成度,拿来实现简单的 web 应用也不在话下。...源码解析 回到源码上来,由于 Hyperapp 所有的操作都在 app 函数中完成,下面就来探究一下 app 函数都做了什么。...该函数主流程相当简单,源码总计十来行,先贴在下面,后面慢慢分析: export function app(state, actions, view, container) { var map = [...我们看一下源码: function scheduleRender() { if (!...在研究其源码前,我们先看一下 Hyperapp 对 actions 中的方法制定的规范,当 state 中无嵌套对象时,总结起来大致是以下几条: 必须是一元函数(只接受一个参数) 函数返回值必须是以下几种

2K30
领券