React 操作真实DOM

最近在学习React的过程中遇到了一个问题,React怎么操作真实的DOM?

我们知道,React组件操作的DOM并不是真正的DOM,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做 DOM diff ,它可以极大提高网页的性能表现。但是在某些场景下,不得不操作真实的DOM,这个时候,就用到了ref这个属性。
假设有一个按钮,当用户点击的时候自动获取input文本框的焦点,用ref属性就可以实现。
html 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>React demo</title>
<!-- 引入react、react dom 的cdn文件 -->
<script src="https://unpkg.com/react@15/dist/react.min.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.min.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>

查看更多

远方

我不去想,
未来是否能够成功 ,
既然选择了coding,
便只顾风雨兼程。

我不去想,
身后会不会袭来寒风冷雨 ,
既然目标是engineer,
留给世界的只能是背影 。

我不去想,
前方的路是平坦还是泥泞 ,
只要热爱coding ,
一切,都在意料之中。

查看更多

JavaScript模块化编程-require.js

随着网页越来越复杂、代码量越来越巨大,网页已经趋近于桌面应用,因此JavaScript模块化编程显得尤为重要。理想情况下,开发者只需要关注核心业务逻辑的实现,其他都可以加载别人已经写好的模块。

一、什么是模块?

我们先来看一下通常情况下js的写法

1
2
3
4
var a = 'hello'
function foo(){
// do something
}

查看更多

JavaScript Promise简介

我们在之前的文章中简述了一下JS中的回调函数以及实现方式浅谈JavaScript的回调函数,其中谈到了promise实现异步编程,在了解promise之前,我们先来看一下一般实现异步编程的方法。

查看更多

浅谈JavaScript中的回调函数

在JavaScript中我们常听说回调函数,回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。通俗来说,回调函数就是就是一个可执行的函数,在需要的地方调用它。
我们知道,对象可以作为参数传递给函数,而函数实际上也是对象,那么函数也可以作为参数传递给函数,在实际使用中,我们可以很容易找到回调函数的例子,例如jQuery中

1
2
3
$('div').click(function(){
console.log('hello')
})

查看更多

JS中关于跨域及实现方法

1. 什么是跨域

提起跨域,我们要先了解一下同源政策,需要明确一点的是,同源政策是针对于浏览器的,不是针对JS

查看更多

关于JS的new

通常我们创建一个自定义对象可以使用以下两种方法

  1. 使用对象字面量

    1
    var obj = {name: 'nany', sex: 'female', run: function(){ /* do something */ }}

查看更多

JS原型链、__proto__和prototype

不知道你有没有想过这样一个问题

  • 为什么我定义一个数组,它就有push、join、pop、shift等方法,我明明什么也没写啊?
  • 为什么我定义一个函数,它就有call、apply、length等属性/方法,我也什么都没有做呀?!
  • 为什么我定义一个对象,它就有toString、valueOf等方法,我更是什么都没有做呀?!

查看更多

正则表达式

正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
在 JavaScript中,正则表达式也是对象。JavaScript通过内置对象RegExp支持正则表达式,有两种方式创建正则表达式对象

查看更多

译文:渲染树的构造、布局和绘制

声明:此文是篇译文,原文请移步
Render-tree Construction, Layout, and Paint

查看更多