第一讲:前端开发的历史和趋势
最后更新于:2022-04-01 23:31:52
# 前端开发的历史和趋势
[TOC=2,2]
## 什么是前端
* 前端:针对浏览器的开发,代码在浏览器运行
* 后端:针对服务器的开发,代码在服务器运行
[![](https://github.com/ruanyf/jstraining/raw/master/docs/images/frontend.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/frontend.png)
## 前后端不分的时代
互联网发展的早期,前后端开发是一体的,前端代码是后端代码的一部分。
1. 后端收到浏览器的请求
2. 生成静态页面
3. 发送到浏览器
## 后端 MVC 的开发模式
那时的网站开发,采用的是后端 MVC 模式。
* Model(模型层):提供/保存数据
* Controller(控制层):数据处理,实现业务逻辑
* View(视图层):展示数据,提供用户界面
前端只是后端 MVC 的 V。
以 PHP 框架 Laravel 为例。
[![](https://github.com/ruanyf/jstraining/raw/master/docs/images/laravel-mvc.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/laravel-mvc.png)
## 前端工程师的角色
那时的前端工程师,实际上是模板工程师,负责编写页面模板。
后端代码读取模板,替换变量,渲染出页面。
## 典型的 PHP 模板
~~~
Car {{ $car->id }}
~~~
## Vue
Vue.js 是现在很热门的一种前端 MVC 框架。
它的基本思想与 Angular 类似,但是用法更简单,而且引入了响应式编程的概念。
[![](https://github.com/ruanyf/jstraining/raw/master/docs/images/vue-logo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/vue-logo.png)
## 示例:Vue 的双向绑定
Vue 的模板与数据,是双向绑定的。
打开`demos/vue-demo/index1.html`,按照[《操作说明》](https://github.com/ruanyf/jstraining/blob/master/demos/README.md#vue),查看示例。
[![](https://github.com/ruanyf/jstraining/raw/master/docs/images/vue-demo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/vue-demo.png)
HTML 代码
~~~
~~~
JS 代码
~~~
var journal = new Vue({
el: '#journal',
data: {
message: 'Your first entry'
}
});
~~~
## 前后端分离
* Ajax -> 前端应用兴起
* 智能手机 -> 多终端支持
这两个原因,导致前端开发方式发生根本的变化。
前端不再是后端 MVC 中的 V,而是单独的一层。
## REST 接口
前后端分离以后,它们之间通过接口通信。
后端暴露出接口,前端消费后端提供的数据。
后端接口一般是 REST 形式,前后端的通信协议一般是 HTTP。
## Node
2009年,Node 项目诞生,它是服务器上的 JavaScript 运行环境。
Node = JavaScript + 操作系统 API
[![](https://github.com/ruanyf/jstraining/raw/master/docs/images/node-logo.png)](https://github.com/ruanyf/jstraining/blob/master/docs/images/node-logo.png)
## Node 的意义
* JavaScript 成为服务器脚本语言,与 Python 和 Ruby 一样
* JavaScript 成为唯一的浏览器和服务器都支持的语言
* 前端工程师可以编写后端程序了
## 前端开发模式的根本改变
* Node 环境下开发
* 大量使用服务器端工具
* 引入持续集成等软件工程的标准流程
* 开发完成后,编译成浏览器可以运行的脚本,放上 CDN
## 全栈工程师
前端工程师正在转变为全栈工程师
* 一个人负责开发前端和后端
* 从数据库到 UI 的所有开发
## 全栈技能
怎样才能称为全栈工程师?
* 传统前端技能:HTML、JavaScript、CSS
* 一门后端语言
* 移动端开发:iOS / Android / HTML5
* 其他技能:数据库、HTTP 等等
## 软件行业的发展动力
历史演变:前后端不分 -> 前后端分离 -> 全栈工程师
动力:更加产业化、大规模地生产软件
* 效率更高
* 成本更低
通用性好、能够快速产出的技术最终会赢,单个程序员的生产力要求越来越高。
## 未来软件的特点
* 联网
* 高并发
* 分布式
* 跨终端
现在基于 Web 的前端技术,将演变为未来所有软件的通用的 GUI 解决方案。
## 未来只有两种软件工程师
* 端工程师
* 手机端
* PC 端
* TV 端
* VR 端
* ……
* 云工程师
';
Car {{ $car->id }}
- Make: {{ $car->make }}
- Model: {{ $car->model }}
- Produced on: {{ $car->produced_on }}
姓名 :
你好,{{name}}
{{message}}