前端的发展浅析:
首先:浏览器核心三件套:HTML
、CSS
、JavaScript
,所以无论你用啥框架,写了啥代码,只要你是在浏览器看到的页面,最后一定就只剩下HTML
、CSS
、JavaScript
。
1995年,js问世
2006年,jquery出现
- 简化DOM操作、增强事件处理、优化Ajax交互、提升开发效率、推动前端工程化。js得到空前发展。
2008年,chromeV8引擎发布
- 因为JavaScript的空前发展,赋能前端的工作越来越多,Google携Chrome浏览器推出了JIT即时编译技术+JavaScript V8引擎 使页面加载越来越快,性能也大幅提升
2009年,node.js、npm包管理工具诞生
- 在nodejs出现之前,javascript主要应用于浏览器端,Node第一次把JavaScript带入到后端服务器开发
浏览器端JS 和 Node.js 的区别
- 浏览器端的JS:受制于浏览器提供的接口,浏览器为了安全考虑,对文件操作,网络操作,操作系统交互等功能有严格的限制
- NodeJs:完全没有了浏览器端的限制,让Js拥有了文件操作,网络操作,进程操作等功能,此时能读写文件,能启动服务的 node.js是被分到后端领域上的
Node.js 核心特性:
事件驱动、非阻塞I/O:
- Node.js采用事件驱动、非阻塞I/O模型和可伸缩性,这意味着当某个任务(如文件读写、网络请求等)正在执行时,将耗时操作丢给底层的事件循环去执行,Node.js不会等待该任务完成,而是继续执行后续的代码。
- 当底层的事件循环执行完耗时IO时,会执行我们的回调函数来作为通知。(高效并发处理)
前端从切图仔,到ajax
兴起页面交互,前端也在追求模块化、组件化、自动化、工程化,提高生产效率,这个跟后端的发展之路是很类似的。而node.js在前端的模块化、工程化、组件化,起到了很大的作用。
node.js的优势:是服务端领域,但语言用的是前端最熟悉的JavaScript
。
前端工程化:
模块化:node.js
实现了ES Module
的规范,实现了模块化。前端在最开始是没有模块化的概念的,js最初就是个脚本语言,写在<script>
标签的上的,声明的变量都是全局范围的。而后来出现了CommonJS
/AMD
/CMD
这种前端或后端模块化规范,再到最后从 ES6
开始,在语言标准的层面上,实现了模块化功能,成为浏览器和服务器通用的模块解决方案。
组件化:Node.js
内置的npm
(Node Package Manager)包管理工具,使得我们可以轻松地共享和复用代码。npm,对比于Java,就暂且它类似于Maven。包管理工具能促进前端组件化
自动化:基于Node.js
依赖的环境的各种的打包、构建工具层出不断:Grunt
、Gulp
和 Webpack
,促进前端的自动化
JavaScript从脚本弱类型语言,再到加入类型检查(TypeScript
),以及上面的模块化、自动化、组件化持续出现新东西,是的体现。
常见的Angular
、Vue
、React
这几个框架主要解决Web界面动态交互复杂性的问题,比如以前可能是拿到后端返回的数据对找特定的操作DOM
去塞数据(getElementById
),
数据驱动:现在都已经是数据驱动了(数据变动->UI变动,以及UI变动->数据变动,俗称MVVM。M是model, V是view)