Appearance
第1章 Vue.js概述
1.1 Web前端技术的发展
前端发展史
HTML 纯静态页面
1995 Netscapte JavaScritpt 增加用户交互能力(表单)
1996 MicroSoft ASP、1997 Sun JSP、1998 PHP3,网页正式进入交互阶段
服务器端网页动态交互不断丰富,业务变复杂,后端MVC框架出现。MVC,Model-View-Controller,模型-视图-控制器,将程序分割为若干逻辑,设计更清晰,编码更容易。
2004 Google Ajax,异步交互提升体验
前端框架和库出现,jQuery BootStrap ECharts等
HTML5出现
2010 Angular React VUE出现,从WebSite到WebApp,开启SPA时代(单页面应用程序,Single Page Application)
2015 ES6出现,增加新语法,拓展javascript开发潜力
SPA优点
前后端分离:前后端分离开发,通过ajax、rest api连接前后端数据
良好用户体验:ajax异步获取数据,用户无需主动刷新页面
减轻服务器压力:后端服务器只提供数据,不需要负责展示逻辑与页面合成
共用一套后端程序代码:不用修改后端程序,可用于web、手机、平板等多种客户端。
SPA缺点
初始加载耗时多:单页应用程序,javascript、CSS等要统一加载,但可合并压缩处理
前进、后退问题:需要额外编写代码实现浏览器前进后退功能
SEO难度高: SEO(Search Engine Optimization),搜索引擎优化。可编写一些静态页面给探索引擎,或者通过服务器端渲染技术解决。
1.2 MV*模式
1.2.1 MVC
参考SpringMVC理解MVC模式:用户从视图通过Http请求触发Controller,然后由Model处理数据,View渲染视图,最后通过Controller返回视图用户。
Controller:接收Http请求,返回处理后的视图。
Model:处理数据。
View:根据Model数据,渲染视图。
1.2.2 MVP
Model、View、Presenter,模型、视图、表示器。与MVC不同的是,Model与View不直接交互,而是通过Presenter。整体与MVVM有点类似。
1.2.3 MVVM
核心是数据双向绑定,即ViewModel。ViewModel是View和Model的关系映射。
View和Model不可以直接交互,通过中介ViewModel这个观察者实现通信。
Model变化,ViewModel感知,通知View更新。
View变化,ViewModel感知,通知Model更新。
1.3 初识Vue.js
VUE(读/vju:/,类似于view),作者尤雨溪(Evan You),基于MVVM模型的用于构建用户界面的javascript框架,以数据驱动和组件化思想构建。
发展历程:
2013 Vue.js 0.6.0
2015.10 Vue.js 1.0.0
2016.10.1 Vue.js 2.0.0
2020.9.18 Vue.js 3.0.0
1.3.1 渐进式框架
Vue是渐进式的javascript框架,所谓渐进式,是指框架分层设计,每层可选,也可以替换成其他方案。
核心是声明式渲染,其次是前端路由、状态管理,最外层是构建系统。
Vue提供的构建系统可以轻松快速搭建一个脚手架项目,此项目也集成了Webpack打包工具,很容易构建发布版本。
1.3.2 响应式系统
MVVM模式的核心特性,就是数据的双向绑定。Vue构建了一套响应式系统,可以实现声明式的数据绑定,从而在数据发生变化时自动渲染视图。
1.3.3 体验Vue 3.0响应式系统
html
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>Hello Vue.js</title>
</head>
<body>
<!--View-->
<div id="app">
<button @click="increment">count值:{{ state.count }}</button>
</div>
<!-- 引入Vue.js -->
<script src="https://unpkg.com/vue@next"></script>
<script>
const App = {
setup(){
// 为目标对象创建一个响应式对象
const state = Vue.reactive({count: 0});
function increment(){
state.count++;
}
return {
state,
increment
}
}
};
// 创建应用程序实例,该实例提供应用程序上下文。
// 应用程序实例装载的整个组件树将共享相同的上下文.
const app = Vue.createApp(App);
// 在id为app的DOM元素上装载应用程序实例的根组件
app.mount('#app');
</script>
</body>
</html>
1.4 Vue.js 3.0带来的新变化
Vue3使用TpyeScritpt重写了Vue2,可以享受完整类型推断,具有8个亮点:
- 更好的性能:重写了虚拟DOM的实现
- Tree-Shaking支持:对无用模块进行剪枝,减少发布版本大小,支持按需引入,而vue2用不到的功能也会打包
- 组合API:组合API可按业务逻辑编写,提高代码复用,而vue2只支持选项式
- 碎片:VUE3可以有多个根节点,而Vue2只有一个根节点
- 更好的TypeScript支持:Vue3代码库完全采用TypeScript编写,具有更好的类型支持,可以进行类型检查、自动补全
- 传送
- 悬念
- 自定义渲染器API
1.5 小结
前端发展史:
- 静态网页
- JS引入成为动态页面
- Ajax引入支持局部刷新
- jQuery/BootStrap框架引入提高效率
- Anguler/VueJS等前端框架引入,让前端从多页面应用变为单页面应用(SPA:Single Page Application),用户体验更好
MVC:Model View Controller
MVVM:ViewModel是View和Model的关系映射,View随着Model变化动态渲染。
Vue3重写了Vue2,性能更优,也支持了TypeScript
响应式系统:MVVM模式的核心特性,就是数据的双向绑定。Vue构建了一套响应式系统,可以实现声明式的数据绑定,从而在数据发生变化时自动渲染视图。
渐进式框架:Vue是渐进式的javascript框架,所谓渐进式,是指框架分层设计,每层可选,也可以替换成其他方案。核心是声明式渲染,其次是前端路由、状态管理,最外层是构建系统。