New in version 1.0. What is a Domain? Originally, Sphinx was conceived for a single project, the documentation of the Python language. Shortly afterwards, it was made available for everyone as a docum
模板转换成视图的过程 Vue.js通过编译将template 模板转换成渲染函数(render ) ,执行渲染函数就可以得到一个虚拟节点树 在对 Model 进行操作的时候,会触发对应 Dep 中的 Watcher 对象。Watcher 对象会调用对应的 update 来修改视图。这个过程主要是将新旧虚拟节点进行差异对比,然后根据对比结果进行DOM操作来更新视图。 在Vue的底层实现上,Vue将模
操作 DOM 具体的成本,说到底是造成浏览器回流 reflow 和重绘 reflow,从而消耗 GPU 资源。 什么是 DOM Document Object Model 文档对象模型 什么是DOM?可能很多人第一反应就是div、p、span等html标签(至少我是),但要知道,DOM是Model,是Object Model,对象模型,是为 HTML(and XML)提供的 API。HTML(Hy
什么是跨域 只要协议、域名、端口有任何一个不同,都被当作是不同的域。之所以会产生跨域这个问题,主要就是安全问题。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。 所以我们要通过一些方法使本域的 js 能够操作其他域的页面对象或者使其他域的 js 能操作本域的页面对象(iframe 之间)。 同源策略 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略
一、DOM操作影响页面性能的核心问题 通过js操作DOM的代价很高,影响页面性能的主要问题有如下几点: 访问和修改DOM元素 修改DOM元素的样式,导致重绘或重排 通过对DOM元素的事件处理,完成与用户的交互功能 DOM的修改会导致重绘和重排。 重绘是指一些样式的修改,元素的位置和大小都没有改变; 重排是指元素的位置或尺寸发生了变化,浏览器需要重新计算渲染树,而新的渲染树建立后,浏览器会重新绘制受
监听页面 DOM 变动并高效响应 JavaScript 中事件的发生阶段(捕获-命中-冒泡): Graphical representation of an event dispatched in a DOM tree using the DOM event flow 开始的时候我一直在 window 状态改变涉及到的事件中寻找,一圈搜寻下来发现也就 onload 事件最接近了,所以我们看看 MD
除了简单的单向绑定和双向绑定,MVVM还有一个重要的用途,就是让Model和DOM的结构保持同步。 我们用一个TODO的列表作为示例,从用户角度看,一个TODO列表在DOM结构的表现形式就是一组<li>节点: <ol> <li> <dl> <dt>产品评审</dt> <dd>新款iPhone上市前评审</dd>
直接使用浏览器提供的API对DOM结构进行修改,不但代码复杂,而且要针对浏览器写不同的代码。 有了jQuery,我们就专注于操作jQuery对象本身,底层的DOM操作由jQuery完成就可以了,这样一来,修改DOM也大大简化了。 添加DOM 要添加新的DOM节点,除了通过jQuery的html()这种暴力方法外,还可以用append()方法,例如: <div id="test-div">
jQuery的选择器很强大,用起来又简单又灵活,但是搞了这么久,我拿到了jQuery对象,到底要干什么? 答案当然是操作对应的DOM节点啦! 回顾一下修改DOM的CSS、文本、设置HTML有多么麻烦,而且有的浏览器只有innerHTML,有的浏览器支持innerText,有了jQuery对象,不需要考虑浏览器差异了,全部统一操作! 修改Text和HTML jQuery对象的text()和html(
删除一个DOM节点就比插入要容易得多。 要删除一个节点,首先要获得该节点本身以及它的父节点,然后,调用父节点的removeChild把自己删掉: // 拿到待删除节点: var self = document.getElementById('to-be-removed'); // 拿到父节点: var parent = self.parentElement; // 删除: var removed
当我们获得了某个DOM节点,想在这个DOM节点内插入新的DOM,应该如何做? 如果这个DOM节点是空的,例如,<div></div>,那么,直接使用innerHTML = '<span>child</span>'就可以修改DOM节点的内容,相当于“插入”了新的DOM节点。 如果这个DOM节点不是空的,那就不能这么做,因为innerHTML会直接替换掉原来的所有子节点。 有两个办法可以插入新的节点。
拿到一个DOM节点后,我们可以对它进行更新。 可以直接修改节点的文本,方法有两种: 一种是修改innerHTML属性,这个方式非常强大,不但可以修改一个DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树: // 获取<p id="p-id">...</p> var p = document.getElementById('p-id'); // 设置文本为abc: p.inne
由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。 始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作: 更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容; 遍历:遍历该DOM节点下的子节点,以便进行进一步操作; 添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点; 删
在上文中我们完成了XmlConfigBuilder对象的构建工作,准备好了解析XML文件的基础环境。 所以接下来就是调用XmlConfigBuilder暴露的parse()方法来完成mybatis配置文件的解析工作了。 public Configuration parse() { if (parsed) { // 第二次调用XMLConfigBuilder
1.1. ARM Domain PINMUX Setup 1.1. ARM Domain PINMUX Setup ARM domain has 52 pins(id)which can be setup. Every pin has its own functions accordingly as the below table: id function0 function1 function2