什么是vue框架?

JavaScript051

什么是vue框架?,第1张

什么是vue是一套构建用户界面的渐进式(用到哪一块就用哪一块,不需要全部用上)前端框架,Vue 的核心库只关注视图层vue的兼容性 Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能模拟的 ECMAScript 5 特性。 Vue.js 支持所有兼容 ECMAScript 5 的浏览器。vue学习资源vue.js中文官网:http://cn.vuejs.org/vue.js源码:https://github.com/vuejs/vuevue.js官方工具:https://github.com/vuejsvue.js官方论坛:forum.vuejs.org对比其他框架-ReactReact 和 Vue 有许多相似之处,它们都有使用 Virtual DOM;提供了响应式(Reactive)和组件化(Composable)的视图组件。将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。React 比 Vue 有更丰富的生态系统都有支持native的方案,React的RN,vue的Wee下都支持SSR服务端渲染都支持props进行父子组件间的通信性能方面:React 和 Vue 在大部分常见场景下都能提供近似的性能。通常 Vue 会有少量优势,因为 Vue 的 Virtual DOM 实现相对更为轻量一些。不同之处就是:数据绑定方面,vue实现了数据的双向数据绑定,react数据流动是单向的virtual DOM不一样,vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树.而对于React而言,每当应用的状态被改变时,全部组件都会重新渲染,所以react中会需要shouldComponentUpdate这个生命周期函数方法来进行控制state对象在react应用中不可变的,需要使用setState方法更新状态在vue中,state对象不是必须的,数据由data属性在vue对象中管理(如果要操作直接this.xxx)组件写法不一样, React推荐的做法是 JSX , 也就是把HTML和CSS全都写进JavaScript了,即'all in js'Vue推荐的做法是webpack+vue-loader的单文件组件格式,即html,css,js写在同一个文件对比其他框架-angular在性能方面,这两个框架都非常的快,我们也没有足够的实际应用数据来下一个结论。如果你一定想看些数据的话,你可以参考这个第三方跑分。单就这个跑分来看,Vue 似乎比 Angular 要更快一些。在大小方面,最近的 Angular 版本中在使用了 AOT 和 tree-shaking 技术后使得最终的代码体积减小了许多。但即使如此,一个包含了 vuex + vue-router 的 Vue 项目 (30kb gzipped) 相比使用了这些优化的 Angular CLI 生成的默认项目尺寸 (~130kb) 还是要小的多。灵活性:Vue 相比于 Angular 更加灵活,Vue 官方提供了构建工具来协助你构建项目,但它并不限制你去如何组织你的应用代码。有人可能喜欢有严格的代码组织规范,但也有开发者喜欢更灵活自由的方式。vue.js的核心特点—响应的数据绑定传统的js操作页面:在以前使用js操作页面的时候是这样的,需要操作某个html元素的数据,就的使用js代码获取元素然后在处理业务逻辑响应式数据绑定的方式操作页面,可以直接使用像下面代码那样的写法就可以将数据填充到页面中<template> <div id="app"> {{ message }} </div></template><script>export default { name: 'app', data () {return { message: 'Welcome to Your Vue.js App'} }}</script><style></style>vue.js的核心特点—可组合的视图组件一个页面映射为组件树。划分组件可维护、可重用、可测试,也就是一个页面由多个组件组合而成vue中实现组件引入示例第一步:import导入需要引入的组件文件;第二步:注册组件;第三步:在需要引入组件的文件中加上组件标签(这个标签的标签名就是注册的组件名字,多个单词的和这里有xx-xx的形式)需要注意的是:组件可以嵌套引入,也就是说组件可以引入其他组件首先创建一个组件,用于被引入的组件,组件名字叫Hello.vue————————————————版权声明:本文为CSDN博主「胡椒粉0121」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

/src/lazy.js

定义变量接收实例化参数。

lazy.js 默认导出一个函数,该函数返回一个 Lazy 类,形成闭包,保持对 Vue 的引用。

判断是否支持Webp图片

/src/listener.js

定义变量接收实例化参数。

filter 方法将配置的 filter 对象中的方法执行,接收两个参数,一个为 ReactiveListener 实例,一个为 options 参数对象。

initState 方法给元素添加 data-set 属性,值为图片地址 src,并且定义了图片状态对象 state 。在 Lazy 中已经根据像素比选择了最适配屏幕的图片,顾这里不需要考虑 srcset 属性。另外,我们自定义指令是 v-lazy,到目前为止,还没有给图片的 src 属性赋值。

render 方法,是在 Lazy 中实例化 ReactiveListener 时传递过来的参数。

回过头再来结合 lazy.js 中的 lazyLoadHandler 方法与 ReactiveListener 暴露的方法来看。

/src/lazy-container.js

LazyContainer 的核心是 container 下的选择器selector(默认 img 标签)遍历后调用 lazy 的 add 方法进行绑定,自定义指令 v-lazyload-container。

/src/lazy-component.js

上述实现元素绑定主要是通过自定义指令 v-lazy , v-lazy-container 。那么 LazyComponent 则是通过注册的 lazy-component 组件,完成绑定,默认渲染成为 div 标签,作为 img 的容器。

/src/lazy-image.js

通 LazyComponent 组件,只不过 LazyImage 注册的 lazy-image 组件,渲染成的是 img 标签,多了 src 属性。

通过自定义指令 v-lazy 将设置背景图的元素或者 img元素,通过 _addListenerTarget 方法收集与数组 TargetQueue 中,并遍历触发懒加载的方法, addEventListener 绑定在该元素上,触发的事件为 lazyLoadHandler ;

在需要懒加载的元素上设置属性 data-src ,这是期望的图片地址(filter 配置项可以预先过滤赋值),元素上自定义 lazyLoad 表示图片状态(状态变更后,adapter 中触发回调);

ListenerQueue 数组中收集的是 ReactiveListener 类的实例,主要是用于懒加载不同状态下的图片加载,loading - loaded - error;

当触发 EventListener 了,执行 lazyLoadHandler 方法,根据算法,进入 viewport 后, ReactiveListener 元素如果与触发元素匹配,则进行图片的加载及渲染。

概述 (1)定义 ​ vue实例有一个完整的vue页面的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom到渲染、更新到渲染、卸载等一

2. 常用生命周期使用 (1)created 用于获取后台数据 (2)Dom渲染在 mounted 中就已经完成了,用于dom挂载完后做一些dom操作 (3)在 beforeDestroy 或

3. keep-alive ​ keep-alive是vue内置的一个组件,