Skip to content

Commit a21732a

Browse files
committed
init
0 parents  commit a21732a

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
.DS_Store
3+
.idea

README.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# 我的博客
2+
3+
## 前端架构之路
4+
5+
1. [前后端分离、web与static服务器分离](./architecture/1.md)
6+
2. 并行开发、本地化模拟
7+
3. 构建工具 for teamwork
8+
4. 组件化
9+
5. 私有npm仓库
10+
6. 单页面、按需加载
11+
7. 服务器端渲染
12+
8. node中间层
13+
9. 后端api设计

architecture/1.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# 前后端分离、web与static服务器分离
2+
3+
## 1. 为什么需要 “前后端分离、web与static服务器分离”
4+
5+
web前端的发展历史大致可以分为两个阶段:`node` 之前与 `node` 之后。在 [nodejs](https://github.com/nodejs/node) 出现之前,前端的发展一直比较缓慢,主要是因为:
6+
7+
1. `html/css/js` 从设计之初开始,都只为浏览器服务,并且在整个web程序中,是以后端为主,前端为辅,前端需要配合不同的后端做出调整(如不同后端语言的模板),因此前端程序往往是与后端程序耦合在一起的;
8+
2. 开发、调试、运行都始终摆脱不了浏览器,并且没有多少可选的工具(如 combo,都是有后端语言在服务器端实现的),不能自动化、工程化的构建前端的代码;
9+
3. 由于浏览器的运行方式,前端代码一直不能有效的做到模块化、组件化,项目也无法版本化管理,项目间也不能很好的共享代码;
10+
4. 浏览器运行速度低下,也是早期前端发展的一大障碍,但 [chromium](https://chromium.googlesource.com/) 项目的出现,让前端的运行架上了高铁的速度。
11+
12+
基于以上的原因,前端一直不能很好的开发大型应用,所以在web程序中,前端一直处于配角的角色。在 [nodejs](https://github.com/nodejs/node) 出现之后,前端的发展迎来了质的飞跃,带来了我们当时无法想象的便利与潜力。
13+
14+
1. `node` 拓展了 `javascript` 的运行环境,并且能够开发服务器端程序,这让前端的开发和运行摆脱对浏览器和后端语言的依赖,让它们成为了可选项;
15+
2. `node` 使 `javascript` 拥有了操作本地文件、IO等权限,于是前端开发人员便可编写各类工具,前端便可做到自动化和工程化;
16+
3. 再结合 `npm`,前端代码的模块化、组件化,项目版本化,项目间共享代码也就不是问题了。
17+
18+
[nodejs](https://github.com/nodejs/node) 出现了之后,又陆续出现了扩展前端运行领域的工具,如
19+
20+
1. [electron](https://github.com/electron/electron), [nw.js](https://github.com/nwjs/nw.js): 让前端可以开发桌面软件;
21+
2. [react-native](https://github.com/facebook/react-native): 让前端可以原生app。
22+
23+
随着 `node` 的出现与前端的发展,工程化自动构建便成了开发人员的一个基本的需求,这便是我要说的 “前后端分离、web与static服务器分离”;
24+
25+
## 2. 前后端分离
26+
27+
前后端分离,就是让前端与后端解耦,开发和运行都不再耦合在一起。
28+
29+
### 2.1 工程分离
30+
31+

0 commit comments

Comments
 (0)