react源码之fiber架构

书接上节,我们接着来阐述ReactDom.render。

fiber的数据结构

每一个ReactElement都对应一个Fiber,setState和render都会生成新的Fiber树。这种架构有什么好处、以及它是如何由来,解决什么问题,可以参考这篇文章
Fiber的数据结构:

Read More

React源码之前期准备和代码入口

如何读源码

最近花了一段时间研究了React的源码,收获良多,特此记录。
如何去读源码?可能是很多小伙伴的疑问,我认为读源码必须要有一些前提:

  • 必须熟知基础知识,也就是说你必须要用过该框架。
  • 熟读相关文档。
  • 大体上了解该框架的功能,特性。

Read More

输入框的一些知识

文本编辑的相关知识工作中最近做了一个关于文本编辑的相关需求。踩了一些坑,特此记录。需求阐述:这里就是一个传统的输入框。不过要计算你触发参数框的位置。也就是说记录你光标的位置。参数框出现之后,要支持一些键盘交互。这里利用原生事件绑定一下就可以了。选中相关的参数将其应用到输入框中。
需求描述

Read More

数据库初涉

数据库初涉

Structured Query Language

增加数据

  1. 向表中插入行
    INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,….)
    INSERT INTO 表名称 VALUES (值1, 值2,….)

更新数据

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值,(后面可以加上条件 where id = 12 )
注意:条件可以利用 and 和 or 并列条件 和 查询多个条件;

Read More

webpack初涉

Webpack

什么叫webpack

  1. javaScript模块的引入一直是js编程人员一直头疼的问题,很AMD/CMD标准,具体参见<JavaScript富应用开发>一书第六章依赖管理。
  2. Webpack是一款用户打包前端模块的工具,它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。主要是用来打包在浏览器端使用的javascript的。同时也能转换、捆绑、打包其他的静态资源,包括css、image、font file、template等
  3. Webpack的优点:
  • 按需加载模块,按需进行懒加载,在实际用到某些模块的时候再增量更新
  • webpack 是以 commonJS 的形式来书写脚本,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。
  • 能被模块化的不仅仅是 JS 了,能处理各种类型的资源。
  • 开发便捷,能替代部分 grunt/gulp 的工作,比如打包、压缩混淆、图片转base64等。
  • 扩展性强,插件机制完善。

Read More

redux源码解析

redux源码解析

redux单向数据流的由来

  1. Flux将应用分成四个部分;
  • view 视图层;
  • Action 视图层发出的消息;(改变store里面的数据)
  • Dispatch(派发器)
  • Store (数据层) : 用来存在应用的状态(数据),一旦发生变动,就要提醒view更新页面。
    redux单向数据流:
    redux单向数据流

Read More

Ajax

AJAX

AJAX并不是一门新技术,而是多种技术的结合体

  • 一些有趣的事

    1. AJAX 不是新的编程语言,而是一种使用已有标准的新概念

    2. 2005年由美国人Jesse James Garrett推广,并取名。
      神奇的是,这哥们并不是搞程序的,而是搞设计的,是交互设计大师、用户体验大师。甚至是个优秀建筑设计师。

    3. 在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。

    4. 在今天,很少有哪个网站不使用Ajax技术

    5. Ajax技术对智能手机支持非常好。

    6. Ajax中字母x表示XML,实际上XML已经过时,现在的公司,几乎全都在使用JSON代替XML。所以理论上讲,应该称呼为Ajaj,不过,呃,这个词儿,长得好难看。

  • AJAX 是一个什么东西
    在不刷新页面的情况下,
    浏览器悄悄地、异步地向服务器发出HTTP请求。
    服务器收到请求后,传回新的格式化数据回来(通常是JSON)。
    浏览器解析JSON,通过DOM将新数据呈递显示,页面仅局部刷新。

Read More

FP

Function Programming

本篇文章是自己对于JavaScript函数式编程一书的读书笔记。利用underscore框架介绍几个函数式编程几个概念。

高阶函数

  1. 将函数作为参数;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!--repeatedly值版本-->
    function repeatedly(times,value){
    return _.map(_.range(times),()=>{ return value })
    }

    <!--repeatedly 函数版本-->

    function repeatedly(times,fun){
    return _.map(_.range(times),fun)
    }

    repeatedly(3,function(){
    return Math.floor(Math.random()*10+1)
    })
    repeatedly是函数式编程的一个典型思维,将值变成函数。

Read More

node之express

什么是express

Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

express之hello world

  1. 引入模块
1
let express = require("express")
  1. express之中间件
1
2
 <!-- express 和上面的模块名对应  -->
express.use();

Read More