前端的发展历程(下)

简介: 前端的发展历程(下)

Ajax


Ajax技术诞生,改变了一切。前端不再是后端的模板,可以独立得到各种数据。


Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。


通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

举个例子:用户注册

如果仔细观察一个表单的提交,你就会发现,一旦用户点击“提交”按钮,表单开始提交,浏览器就会刷新页面,然后在新页面里告诉你操作是成功了还是失败了。如果不幸由于网络太慢或者其他原因,就会得到一个404页面。


这就是Web的运作原理:一次HTTP请求对应一个页面。


如果要让用户留在当前页面中,同时发出新的HTTP请求,就可以使用Ajax发送这个新请求,接收到数据后,再用JavaScript更新页面,这样一来,用户就感觉自己仍然停留在当前页面,但是数据却可以不断地更新。

2004年:最早大规模使用AJAX的就是Gmail,Gmail的页面在首次加载后,剩下的所有数据都依赖于AJAX来更新。

Web 2.0


Ajax技术促成了 Web 2.0 的诞生。


Web 1.0:静态网页,纯内容展示


Web 2.0:动态网页,富交互,前端数据处理

至此,前端早期的发展史就介绍完了,当时对于前端的要求并不高,只要掌握html css js和一个jquery就足够开发网页了

新时代的前端

到目前为止

HTML已经发展到HTML5


CSS已经发展到CSS3.0


JavaScript已经发展到ES9,但是常用的还是ES5和ES6


现代标准浏览器(遵循W3C标准的浏览器)基本已经支持HTML5 CSS3 ES6的大部分特性

浏览器市场份额(2018.9)

由于IE的不思上进,导致市场份额越来越少,现在几乎是现代标准浏览器的天下。


所以前端开发一个网页几乎不需要考虑IE兼容性

得益于前端技术和浏览器的发展,现在的网页能展示越来越丰富的内容了,比如动画 游戏 画图等等


所以,对于前端的要求也越来越高,特别是近几年框架、技术、工具呈爆发式发展,前端变化特别快!

MVVM


MVVM最早由微软提出来,它借鉴了桌面应用程序的MVC思想,在前端页面中,把Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离

把Model和View关联起来的就是ViewModel。


ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model


View 和 Model 之间的同步工作完全是自动的,无需人为干涉


因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理

一个MVVM框架和jQuery操作DOM相比有什么区别?

我们先看用jQuery实现的修改两个DOM节点的例子:

<!-- HTML -->
<p>Hello, <span id="name">Bart</span>!</p>
<p>You are <span id="age">12</span>.</p>
Hello, Bart!
You are 12.
用jQuery修改name和age节点的内容:
var name = 'Homer';
var age = 51;
$('#name').text(name);
$('#age').text(age);

如果我们使用MVVM框架来实现同样的功能,我们首先并不关心DOM的结构,而是关心数据如何存储。最简单的数据存储方式是使用JavaScript对象:

var person = {
    name: 'Bart',
    age: 12
}

我们把变量person看作Model,把HTML某些DOM节点看作View,并假定它们之间被关联起来了。

要把显示的name从Bart改为Homer,把显示的age从12改为51,我们并不操作DOM,而是直接修改JavaScript对象:

person.name = 'Homer';
person.age = 51;

执行上面的代码,我们惊讶地发现,改变JavaScript对象的状态,会导致DOM结构作出对应的变化!这让我们的关注点从如何操作DOM变成了如何更新JavaScript对象的状态,而操作JavaScript对象比DOM简单多了!

这就是MVVM的设计思想:关注Model的变化,让MVVM框架去自动更新DOM的状态,从而把开发者从操作DOM的繁琐步骤中解脱出来!

三大MVVM框架


  • Vue
  • React
  • Angular
Vue

Vue框架诞生于2014年,其作者为中国人——尤雨溪,也是新人最容易入手的框架之一,不同于React和Angular,其中文文档也便于大家阅读和学习。

React

React起源于Facebook的内部项目,因为该公司对市场上所有JavaScript MVC框架,都不满意,就决定自己写一套,用来架设Instagram的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。

Angular

Angular是谷歌开发的 Web 框架,具有优越的性能和绝佳的跨平台性。通常结合TypeScript开发,也可以使用JavaScript或Dart,提供了无缝升级的过渡方案。于2016年9月正式发布。

目前国内使用人数最多、最火的框架是Vue

webpack


如今对于每一个前端工程师来说,webpack已经成为了一项基础技能,它基本上包办了本地开发、编译压缩、性能优化的所有工作。


它的诞生意味着一整套工程化体系开始普及,并且让前端开发彻底告别了以前刀耕火种的时代。现在webpack之于前端开发,正如同gcc/g++之于C/C++,是一个无论如何都绕不开的工具。

TypeScript(TS)


TypeScript 是 Microsoft 开发和维护的一种面向对象的编程语言。它是JavaScript的超集,包含了JavaScript的所有元素,可以载入JavaScript代码运行,并扩展了JavaScript的语法。

TypeScript 具有以下特点:

  • TypeScript是Microsoft推出的开源语言,使用Apache授权协议
  • TypeScript增加了静态类型、类、模块、接口和类型注解

在开发大型项目时使用TS更有优势

NodeJs


Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。严格的来说,Node.js其实是一个后端语言。

特点:

  • 单线程
  • 非阻塞IO
  • 事件驱动
  • V8引擎

现在的前端能做什么?

  • 游戏开发(Egret Layabox coco2d-js)
  • web开发(pc 移动端设备)
  • webApp开发(Dcloud RN weex ionic)
  • 图形开发WebGl(three.js)
  • 小程序/快应用
  • 后端(nodejs)
  • 桌面应用(electron)
  • 嵌入式开发(Ruff)

前端的未来

现在基于Web的前端技术,将演变为未来所有软件的通用的GUI解决方案。

所以前端有可能会变成一名端工程师。

  • PC端
  • 手机端
  • TV端
  • VR端

......

一名合格的前端需要掌握哪些技能

  • photoshop切图(必修)
  • html css js(特别是html5 css3 es6)(必修)
  • 三大前端框架至少精通一个(必修)
  • nodejs(选修)
  • 自动化构建工具webpack(必修)
  • http协议(必修)
  • 浏览器渲染流程及原理(必修)
  • TypeScript(选修)

技能会过时 计算机基础知识不会过时

  • 算法
  • 编译原理

建议学习编译原理和算法这两门课程


算法的好处相信大家都懂 在这里简单说一下


懂算法的人善于计算时空复杂度,相当于在你做事情前,懂得怎么去衡量效率和开销

编译原理:将源语言转化为目标语言,也就是将一门语言转化为另一门语言

编译原理在前端中的应用

  • babel
  • TypeScript
  • Vue的VNode

......

参考资料:http://software.cnw.com.cn/so...

参考资料:https://github.com/ruanyf/jst...

参考资料:https://www.liaoxuefeng.com/w...

目录
相关文章
|
4月前
|
机器学习/深度学习 前端开发 JavaScript
探寻前端巨变:从HTML到现代框架的发展历程
探寻前端巨变:从HTML到现代框架的发展历程
70 2
|
Web App开发 XML 移动开发
前端的发展历程(上)
前端的发展历程
76 0
|
Web App开发 开发框架 前端开发
【技术创作101训练营】Web 前端发展历程
【技术创作101训练营】Web 前端发展历程
178 0
|
缓存 运维 Kubernetes
前端高级进阶:前端部署的发展历程
前端高级进阶:javascript 代码是如何被压缩 前端高级进阶:如何更好地优化打包资源 前端高级进阶:网站的缓存控制策略最佳实践及注意事项 前端高级进阶:在生产环境中使你的 npm i 速度提升 50% 前端高级进阶:使用 docker 高效部署你的前端应用 前端高级进阶:CICD 下的前端多特性分支环境的部署 前端高级进阶:前端部署的发展历程 更多文章: 前端工程化系列 我在 github 上新建了一个仓库 每日一题,每天一道面试题,欢迎交流。 前端面试题小记 前端大厂面经大全集 计算机基础面试题小计 前端一说起刀耕火种,那肯定紧随着前端工程化这一话题。随着 react/vue/ang
263 0
|
7天前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
1月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
22 0
|
3月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
67 2
|
3月前
|
前端开发 JavaScript 数据库
如何实现前后端分离-----前端笔记
如何实现前后端分离-----前端笔记
|
3月前
|
前端开发 安全 NoSQL
技术笔记:Security前端页面配置
技术笔记:Security前端页面配置
|
4月前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
75 1