什么是函数式编程

什么是函数式编程

函数式编程是一种编程范式。编程范式是基于程序语言的特点对程序语言进行分类的一种方式,常见的编程范式有:函数式编程、指令式编程、过程式编程、面向对象编程等等。

在面向对象编程中,程序则是一系列相互作用的对象,由于方法论的不同,面向对象编程范式又分为基于类编程和基于原型编程。

函数式编程的理论基础 Lambda 演算。Lambda 演算是一种数学的抽象,是研究函数如何抽象定义、函数如何被引用以及递归的形式系统。一个函数式编程程序会被看作是一个无状态的函数计算的序列,正如函数关心的是数据的映射,函数式编程也是如此。

Read More

前端组件化和模块化

前端有两个大方向一定要掌握,一是组件化和模块化,二是工程化,今天我们来聊一聊组件化和模块化。组件化和模块化满足了软件工程低内聚、高耦合、代码模块化的原则,提高代码的可重用性和可复用性,是提高工作效率的重要法宝。

Read More

单页应用与前端路由库设计原理

什么是单页应用

单页应用就是只有一个 HTML 页面的应用,页面 URL 的变化只是通过浏览器 API 修改,浏览器不会向服务器请求新的 HTML 的,而是通过 JS 控制不同的 URL 渲染相应的内容。

单页应用相比传统的 JSP、PHP 多页应用,在切换页面时无需刷新,只需进行局部更新,加载内容快,页面的数据状态和用户数据依然保留。但是,因为单页应用返回的是一个 body 空白的 HTML 文件,HTML 内容由 JS 生成,搜索引擎无法获取到,可能影响搜索引擎排名。

Read More

前端框架模板引擎的实现原理

Vue 模板引擎工作过程

以 Vue 为例子,对于开发者编写的 Vue 代码,Vue 会将其进行以下处理从而渲染到页面中:

1.解析语法生成 AST 对象;

2.根据生成的 AST 对象,完成 data 数据初始化;

3.根据 AST 对象和 data 数据绑定情况,生成虚拟 DOM 对象;

4.将虚拟 DOM 对象生成真正的 DOM 元素插入到页面中,此时页面会被渲染。

Read More

浏览器是如何渲染的

渲染过程

1.解析 HTML 文件,创建 DOM 树
浏览器解析 html 源码,然后创建一个 DOM 树。并行请求 css/image/js 在 DOM 树中,每一个 HTML 标签都有一个对应的节点,并且每一个文本也都会有一个对应的文本节点。DOM 树的根节点就是 documentElement,对应的是 html 标签。

2.解析 CSS,形成 CSS 对象模型
浏览器解析 CSS 代码,计算出最终的样式数据。构建 CSSOM 树。对 CSS 代码中非法的语法它会直接忽略掉。解析 CSS 的时候会按照如下顺序来定义优先级:
浏览器默认设置 < 用户设置 < 外链样式 < 内联样式 < html 中的 style。

3.将 CSS 与 DOM 合并,构建渲染树(renderingtree)
DOM Tree + CSSOM –> 渲染树(rendering tree)。渲染树和 DOM 树有点像,但是是有区别的。DOM 树完全和 html 标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如 head、display:none 的元素等。而且一大段文本中的每一个行在渲染树中都是独立的一个节点。渲染树中的每一个节点都存储有对应的 css 属性。

Read More

什么是 HTTP 协议

什么是 RESTful 接口

RESTful 不是一种协议,而是一种接口设计风格,其要点如下:

  • URL 只有名词
  • 看 URL 就知道是什么业务
  • 看 method 就知道是什么操作
1
2
3
4
GET /orders/1234	// 查询订单
POST /orders/1234 // 新增订单
PUT /orders/1234 // 修改订单
DELETE /orders/1234 // 删除订单

Read More