本文作者:qiaoqingyi

vue高阶组件应用场景(vue高级应用)

qiaoqingyi 2023-02-21 653

本篇文章给大家谈谈vue高阶组件应用场景,以及vue高级应用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

react和vue区别

两者本质的区别:模板和组件化的区别

Vue本质是 MVVM 框架,由 MVC 发展而来;

React是前端 组件化 框架,由后端组件化发展而来;

Vue使用 模板

React使用 JSX

React本身就是 组件化

Vue是在 MVVM 上扩展的

共同点:

都支持组件化,都是 数据驱动视图

监听数据变化的实现原理不同:

数据流的不同:

高阶组件本质就是高阶函数,React的组件是一个纯粹的函数,所以高阶函数对React来说非常简单。

Vue中组件是一个被包装的函数,并不简单的就是我们定义组件的时候传入的对象或者函数。

组件通信的区别:

渲染模版的不同:

Vuex和Redux的区别:

diff算法不同:

事件机制不同:

数据是否可变:

react 整体是 函数式 的思想,把组件设计成 纯组件 ,状态和逻辑通过 参数 传入,所以在 react 中,是 单向数据流 ,推崇结合 immutable 来实现 数据不可变 。react在 setState 之后会重新走 渲染 的流程,如果 shouldComponentUpdate 返回的是 true ,就继续渲染,如果返回了 false ,就不会重新渲染

vue 的思想是 响应式 的,也就是基于是 数据可变 的,通过对每一个属性建立 Watcher 来监听,当属性变化的时候,响应式的更新对应的虚拟 dom

vue:

react:

react 的性能优化需要 手动 去做,而 vue 的性能优化是 自动 的,但是 vue 的 响应式机制 也有问题,就是当 state 特别多的时候, Watcher 也会很多,会导致 卡顿 ,所以大型应用( 状态特别多 的)一般用 react ,更加可控

通过js来操作一切,还是用各自的处理方式:

reac t的思路是 all in js ,通过 js 来生成 html ,所以设计了 jsx ,还有通过 js 来操作 css

vue 是把 html,css,js 组合到一起,用 各自 的处理方式, vue 有单文件组件,可以把 html、css、js 写到一个文件中, html 提供了 模板引擎 来处理。

类式的组件写法,还是声明式的写法:

react是 类式 的写法,api很少

vue是 声明式 的写法,通过传入各种 options , api 和 参数 都很多。所以 react 结合 typescript 更容易一起写,vue稍微复杂。vue3支持class类式的写法了

react整体的思路就是 函数式 ,所以推崇 纯组件,数据不可变,单向数据流 ,当然需要双向的地方也可以做到,比如结合redux-form,而vue是基于 可变数据 的,支持 双向绑定 。react组件的扩展一般是通过高阶组件,而vue组件会使用mixin。vue内置了很多功能,而react做的很少,很多都是由社区来完成的, vue追求的是开发的简单 ,而 react更在乎方式是否正确 。

vue高阶组件应用场景(vue高级应用)

vue 高阶组件必备知识$attrs,inheritAttrs,$listenters详解

vue 默认情况下,父组件是可以直接给子组件的根元素添加 class 和 style 的,但是有时候我们可能需要在父组件上给子组件添加一些特性绑定( attribute bindings )(我的理解是自定义属性和一些原生属性)到子组件的根元素上, inheritAttrs 就是用来控制子组件根元素上是否允许添加父组件在子组件上定义的特性属性,因为 inheritAttrs 默认为 true ,所以我们在父组件中给子组件添加所有特性绑定,都能绑定到根元素,例如下面

渲染后的dom节点:

把 inheritAttrs 设为 false 后,

渲染后的dom节点:

可以得出上述的结论, inheritAttrs 是用来控制子组件根元素上是否允许添加父组件在子组件上定义的特性属性。

注意:

我们可以把父作用域中传递的所有属性看作一个大的对象 obj ,而 $attrs 会继承 obj 中的一部分属性,这一部分属性的 key 不能为 class ,和 style ,也不能是当前组件声明的 props 值,并且父组件为 v-model 的话,也是不能继承指令封装的 value 值的,若当前组件无props设置, $attrs 则继承除 class 和 style 的所有属性。

通常我们给已封装的组件进行中间处理的时候使用,例如 element-ui 的 el-input ,我们需要把父组件中的传递的 props 直接给子组件的子组件的时候,我们就可以用到 $attrs ,例如:

父组件为:

子组件为:

根据上面所说,去掉 class ,去掉指定的 value ,去掉子组件 props 声明的 limit ,那时我们此的 $attrs 是:

我们对ui框架中的组件进行再封装的时候,例如element-ui中的组件 el-input ,我们把他封装到我们自己的组件内部。

例如 self-input 组件如下,

我们需要把 el-input 组件上自定义的事件传递进去,那么就要用到 $listenters 。

官网的描述:

很容易理解, .native 是给子组件根元素添加事件,自然不是用来传给子组件上的子组件或元素。而我们在父组件上给子组件绑定的所有事件,都会放入 $listeners 中,我们可以在子组件中手动过滤修改后传给子组件中的子组件或者元素上,也可以用 v-on="$listeners" ,直接全部传给子组件或者元素上。

用法也相当简单,例如:

父组件:

子组件:

由于父组件传入的是一个change事件和两个input事件,那我们打印的 this.$listeners 是

下面是一个关于限制小数点的完整demo,感兴趣的可以了解一下

支持复杂场景的vue和react集成引用的JS插件

众所周知,React更纯粹,Vue做的封装更多,所以大多数的难度都是集中在react的组件引用vue组件的过程中

请参考

请参考

由于react hooks的取名规范是use开头,所以将use开头的方法全部修改成了apply开头,老的use开头方法仍然有效

在react组件中使用vue组件,如果要使用vue的sync修饰,使用 sync Object

在react组件中使用vue的组件

在react组件中,向vue组件传递具名插槽和作用域插槽,以及绑定自定义事件,以及v-model应用

react本身并不支持v-model,所以需要通过 model的value和setter也不需要变化

在react组件动态引用vue组件,类似vue的component /

与react不同,vue有全局注册组件的功能,使每个组件不需要再单独引入

将vue全局组件的id作为参数传入applyVueInReact中,或者将id作为component属性的值传入VueContainer中

示例:在react中使用全局的vue版本element-ui的DatePicker

在Vue的组件中使用React组件

在Vue组件中,向React组件传递具名插槽和作用域插槽,以及绑定自定义事件

由于React没有插槽的概念,所有都是以属性存在,Vue的具名插槽和作用域插槽会被转化为React的属性,其中作用域插槽会转换成render props的方式

并且Vue组件的事件也会被转化成React的属性

比如react版本的antd的Card组件,在react中的使用示例如下

react版本的antd,在vue组件中使用的示例如下

作用:使得所有的Vue组件可以使用redux的状态管理

对工具包开启redux状态管理,这个场景一般存在于以React为主的项目中,为了使Vue组件也可以共享到redux,需要在项目的入口文件引入applyRedux方法(整个项目应该只引一次),将redux的store以及redux的context作为参数传入(或者至少在redux的Provider高阶组件引入的地方使用applyRedux方法)

React组件连接redux的方式这里就不再做介绍了,应该使用react-redux的connect方法

这里介绍Vue组件如何使用redux,工具包尽可能的实现了vue组件使用vuex的方式去使用redux,通过vm.$redux可以在组件实例里获取到redux状态管理

作用:使得所有的Redux组件可以使用Vuex的状态管理

对工具包开启vuex状态管理,这个场景一般存在于以Vue为主的项目中,为了使React组件也可以共享到vuex,需要在项目的入口文件引入applyVuex方法(整个项目应该只引一次),将vuex的store作为参数传入

类似react-redux的connect方法,在React组件中使用,由于vuex的关键字比redux多,所以将参数改成了对象,包含了mapStateToProps、mapCommitToProps、mapGettersToProps、mapDispatchToProps,每个都是一个纯函数,返回一个对象(和redux的connect使用方式完全一致)

在React的router里懒加载Vue组件

在Vue的router里懒加载React组件

每个通过applyVueInReact的的vue组件,以及通过applyReactInVue的react组件,都可以收到一个data-passed-props的属性,这个属性可以帮助你不做任何包装的,被之后再次使用applyVueInReact或applyReactInVue的组件收到全部的属性(由于是跨框架透传,原生的透传方式并不会自动做相应的封装和转换)

由于在每一次跨越一个框架进行组件引用时,都会出现一层包囊,这个包囊是以div呈现,并且会被特殊属性标注

React-Vue,会在vue组件的dom元素外包囊一层标识data-use-vue-component-wrap的div

Vue-React,会在react组件的dom元素外包囊一层标识__use_react_component_wrap的div

如果引发样式问题,可以全局对这些标识进行样式修正

vue和react的区别之我见

react和vue都是做组件化的,整体的功能都类似,但是他们的设计思路是有很多不同的。使用react和vue,主要是理解他们的设计思路的不同。

react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,所以在react中,是单向数据流,推崇结合immutable来实现数据不可变。react在setState之后会重新走渲染的流程,如果shouldComponentUpdate返回的是true,就继续渲染,如果返回了false,就不会重新渲染,PureComponent就是重写了shouldComponentUpdate,然后在里面作了props和state的浅层对比。

而vue的思想是响应式的,也就是基于是数据可变的,通过对每一个属性建立Watcher来监听,当属性变化的时候,响应式的更新对应的虚拟dom。

总之,react的性能优化需要手动去做,而vue的性能优化是自动的,但是vue的响应式机制也有问题,就是当state特别多的时候,Watcher也会很多,会导致卡顿,所以大型应用(状态特别多的)一般用react,更加可控。

react的思路是all in js,通过js来生成html,所以设计了jsx,还有通过js来操作css,社区的styled-component、jss等,

vue是把html,css,js组合到一起,用各自的处理方式,vue有单文件组件,可以把html、css、js写到一个文件中,html提供了模板引擎来处理。

react是类式的写法,api很少,

而vue是声明式的写法,通过传入各种options,api和参数都很多。所以react结合typescript更容易一起写,vue稍微复杂。

react可以通过高阶组件(Higher Order Components--HOC)来扩展,而vue需要通过mixins来扩展

一个react高阶组件的例子:

react做的事情很少,很多都交给社区去做,vue很多东西都是内置的,写起来确实方便一些,

比如 redux的combineReducer就对应vuex的modules,

比如reselect就对应vuex的getter和vue组件的computed,

vuex的mutation是直接改变的原始数据,而redux的reducer是返回一个全新的state,所以redux结合immutable来优化性能,vue不需要。

上面主要梳理了react和vue的4点不同:

(其中第3点在vue3.0支持类式写法之后就可以去掉了)

react整体的思路就是函数式,所以推崇纯组件,数据不可变,单向数据流,当然需要双向的地方也可以做到,比如结合redux-form,而vue是基于可变数据的,支持双向绑定。react组件的扩展一般是通过高阶组件,而vue组件会使用mixin。vue内置了很多功能,而react做的很少,很多都是由社区来完成的,vue追求的是开发的简单,而react更在乎方式是否正确。

认识Vue.js+Vue.js的优缺点+和与其他前端框架的区别

认识Vue.js+Vue.js的优缺点+和与其他前端框架的区别

首先,我们先了解什么是MVX框架模式?MVX框架模式:MVC+MVP+MVVM1.MVC:Model(模型)+View(检视)+controller(控制器),主要是基于分层的目的,让彼此的职责分开。View通过Controller来和Model联络,Controller是View和Model的协调者,View和Model不直接联络,基本联络都是单向的。使用者User通过控制器Controller来操作模板Model从而达到检视View的变化。2.MVP:是从MVC模式演变而来的,都是通过Controller/Presenter负责逻辑的处理+Model提供资料+View负责显示。在MVP中,Presenter完全把View和Model进行了分离,主要的程式逻辑在Presenter里实现。并且,Presenter和View是没有直接关联的,是通过定义好的介面进行互动,从而使得在变更View的时候可以保持Presenter不变。MVP模式的框架:Riot,js。3.MVVM:MVVM是把MVC里的Controller和MVP里的Presenter改成了ViewModel。Model+View+ViewModel。View的变化会自动更新到ViewModel,ViewModel的变化也会自动同步到View上显示。这种自动同步是因为ViewModel中的属性实现了Observer,当属性变更时都能触发对应的操作。MVVM模式的框架有:AngularJS+Vue.js和Knockout+Ember.js后两种知名度较低以及是早起的框架模式。Vue.js是什么?看到了上面的框架模式介绍,我们可以知道它是属于MVVM模式的框架。那它有哪些特性呢?其实Vue.js不是一个框架,因为它只聚焦检视层,是一个构建资料驱动的Web介面的库。Vue.js通过简单的API(应用程式程式设计介面)提供高效的资料系结和灵活的元件系统。Vue.js的特性如下:1.轻量级的框架2.双向资料系结3.指令4.外挂化Vue.js与其他框架的区别?1.与AngularJS的区别相同点:都支援指令:内建指令和自定义指令。都支援过滤器:内建过滤器和自定义过滤器。都支援双向资料系结。都不支援低端浏览器。不同点:1.AngularJS的学习成本高,比如增加了DependencyInjection特性,而Vue.js本身提供的API都比较简单、直观。2.在效能上,AngularJS依赖对资料做脏检查,所以Watcher越多越慢。Vue.js使用基于依赖追踪的观察并且使用非同步伫列更新。所有的资料都是独立触发的。对于庞大的应用来说,这个优化差异还是比较明显的。2.与React的区别相同点:React采用特殊的JSX语法,Vue.js在元件开发中也推崇编写.vue特殊档案格式,对档案内容都有一些约定,两者都需要编译后使用。中心思想相同:一切都是元件,元件例项之间可以巢状。都提供合理的钩子函式,可以让开发者定制化地去处理需求。都不内建列数AJAX,Route等功能到核心包,而是以外挂的方式载入。在元件开发中都支援mixins的特性。不同点:React依赖VirtualDOM,而Vue.js使用的是DOM模板。React采用的VirtualDOM会对渲染出来的结果做脏检查。Vue.js在模板中提供了指令,过滤器等,可以非常方便,快捷地操作DOM。如何使用Vue.js?1.安装(1)script如果专案直接通过script载入CDN档案,程式码示例如下:(2)npm如果专案给予npm管理依赖,则可以使用npm来安装Vue,执行如下命令:$npmivue--save-dev(3)bower如果专案基于bower管理依赖,则可以使用bower来安装Vue,执行如下命令:$bowerivue--save-dev

Vue.js与其他框架的区别:

1.与AngularJS的区别

相同点:

都支援指令:内建指令和自定义指令。

都支援过滤器:内建过滤器和自定义过滤器。

都支援双向资料系结。

都不支援低端浏览器。

不同点:

1.AngularJS的学习成本高,比如增加了Dependency Injection特性,而Vue.js本身提供的API都比较简单、直观。

2.在效能上,AngularJS依赖对资料做脏检查,所以Watcher越多越慢。

Vue.js使用基于依赖追踪的观察并且使用非同步伫列更新。所有的资料都是独立触发的。

对于庞大的应用来说,这个优化差异还是比较明显的。

2.与React的区别

相同点:

React采用特殊的JSX语法,Vue.js在元件开发中也推崇编写.vue特殊档案格式,对档案内容都有一些约定,两者都需要编译后使用。

中心思想相同:一切都是元件,元件例项之间可以巢状。

都提供合理的钩子函式,可以让开发者定制化地去处理需求。

都不内建列数AJAX,Route等功能到核心包,而是以外挂的方式载入。

在元件开发中都支援mixins的特性。

不同点:

React依赖Virtual DOM,而Vue.js使用的是DOM模板。React采用的Virtual DOM会对渲染出来的结果做脏检查。

Vue.js在模板中提供了指令,过滤器等,可以非常方便,快捷地操作DOM。

我知道vue2.0和angularJS的区别,这两个框架非常的像,但是在vue2.0后可以将js+css写成一个元件,你想在什么页面用引入这个元件就可以用了。这很变态。

比如你在一个专案中自己写了个带搜寻框的input ,你把他写成了一个元件,xxx.vue

直接把xxx.vue移到另一个专案,只要在另一个专案中需要 带搜寻框的input ,直接引用就可以了。

现在大多数框架都是以一个元件的形式搭建一个专案

vue是什么 vue特点 vue和其他前端框架区别

vue是什么

Vue.js (读音 /vju?/,类似于 view) 是一套基于javascript的用于构建使用者介面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注检视层,它不仅易于上手,还便于与第三方库或既有专案整合。另一方面,当与单档案元件和 Vue 生态系统支援的库结合使用时,Vue 也完全能够为复杂的单页应用程式提供驱动。

vue特点

简洁、轻量、元件化、快速、资料驱动、模组友好

vue和其他前端框架区别

1.与AngularJS的区别

相同点:

都支援指令:内建指令和自定义指令。

都支援过滤器:内建过滤器和自定义过滤器。

都支援双向资料系结。

都不支援低端浏览器。

不同点:

1AngularJS的学习成本高,比如增加了Dependency Injection(依赖注入)特性,而Vue.js本身提供的API都比较简单、直观。

2在效能上,AngularJS依赖对资料做脏检查,所以Watcher越多越慢。

Vue.js使用基于依赖追踪的观察并且使用非同步伫列更新。所有的资料都是独立触发的。

对于庞大的应用来说,这个优化差异还是比较明显的。

手机渲染速度:angular1 300ms * vue 200ms * react 100ms

2.与React的区别

相同点:

React采用特殊的JSX语法,Vue.js在元件开发中也推崇编写.vue特殊档案格式,对档案内容都有一些约定,两者都需要编译后使用。

中心思想相同:一切都是元件,元件例项之间可以巢状。

都提供合理的钩子函式,可以让开发者定制化地去处理需求。

都不内建列数AJAX,Route等功能到核心包,而是以外挂的方式载入。

在元件开发中都支援mixins的特性。

不同点:

React依赖Virtual DOM,而Vue.js使用的是DOM模板。React采用的Virtual DOM会对渲染出来的结果做脏检查。

Vue.js在模板中提供了指令,过滤器等,可以非常方便,快捷地操作DOM。

vue的应用场景

简单地说,就是需要对 DOM 进行很多自定义操作的专案小专案;理论上 Vue 配合类似Flux的架构也可以胜任超大规模多人协作的复杂专案。

如何用vue.js和ionic搭建前端框架

前端可以用flightplan.js 部署。 var config = require("./webpack.config.js"); var webpack = require("webpack") var webpackDevServer=require("webpack-dev-server") confi

vue.js高仿饿了么外卖app 2016最火前端框架

React

React 和 Vue 有许多相似之处,它们都有:

使用 Virtual DOM

提供了响应式(Reactive)和元件化(Composable)的检视元件。

保持注意力集中在核心库,伴随于此,有配套的路由和负责处理全域性状态管理的库。

相似的作用域,我们会用更多的时间来讲这一块的比较。不仅我们要保持技术的准确性,同时兼顾平衡。我们指出React比Vue更好的地方,例如,他们的生态系统和丰富的自定义渲染器。

React社群在这里非常积极地帮助我们实现这一平衡,特别感谢来自 React 团队的 Dan Abramov 。他非常慷慨的花费时间来贡献专业知识,来帮我们完善这个档案,直到我们都满意。

这么说,就是希望你能对这两个库的比较的公平性感到放心。

效能简介

到目前为止,在现实的测试中,Vue 是优于 React 的(通常至少快20%-50%,尽管在某些情况下还要更快)。我们可以提供一个到这个参照专案的连结,但是坦率的说,所有的参照在某些方面是有缺陷的,很少有像你所写的一个真实应用。那么,让我们详细了解下吧。

渲染效能

在渲染使用者介面的时候,DOM的操作是最昂贵,不幸的是没有库可以让这些原始操作变得更快。

我们能做的最好的就是:

尽量减少DOM操作。Vue 和 React 都使用虚拟DOM来实现,并且两者工作一样好。

尽量减少除DOM操作以外的其他操作。这是 Vue 和 React的一个不同的地方。

假如说,在React中,渲染一个元素的额外开销是1,而平均渲染一个元件的开销是2。在Vue中,一个元素的开销更像0/vue/dist/vue.js"/script 然后就可编写Vue程式码并应用到生产中,而不用担心效能问题。

由于起步阶段不需学JSX,ES2015 或构建系统,所以建立应用花的时间会更少。

本地渲染

ReactNative能使你用相同的元件模型编写有本地渲染能力的APP(IOS或Android)。能同时跨多平台开发,对开发者是非常棒的。相应地,Vue和Weex会进行官方合作,Weex是阿里的跨平台使用者介面开发框架,Weex 的 JavaScript 框架执行时用的就是Vue。这以为著不仅在浏览器,在 IOS 和 Android 上面也可以用 Vue 来进行开发。

在现在,Weex 还在积极发展,成熟度也不能和 ReactNative 相抗衡。但是,Weex的发展是由世界上最大的电子商务企业的需求在驱动,Vue 团队也会和 Weex 团队积极合作确保为开发者带来良好的开发体验。

MobX

Mobx 在 React 社群很流行,实际上在Vue也采用了几乎相同的反应系统。在有限程度上,React + Mobx 也可以被认为是更繁琐的 Vue,所以如果你习惯组合使用它们,那么选择 Vue 会更合理。

Angular 1

Due的一些语法和Angular的很相似(例如 v-if vs ng-if)。因为Angular是Vue早期开发的灵感来源。然而,Augular中存在许多问题,在Vue中已经得到解决。

复杂性

在 API 与设计两方面上 Vue.js 都比 Angular 1 简单得多,因此你可以快速地掌握它的全部特性并投入开发。

灵活性和模组化

Vue.js 是一个更加灵活开放的解决方案。它允许你以希望的方式组织应用程式,而不是在任何时候都必须遵循 Angular 1 制定的规则,这使让Vue能适用于各种专案。我们知道把决定权交给你,是非常必要的,就是是为什么提供Webpack template,让你用几分钟,去选择是否用高阶特性,比如热模组载入、linting 、

Css extraction 等等。

资料系结

Angular 1 使用双向系结,Vue在不同元件间强制适用单向资料流。这使应用中的资料流清晰易懂。

指令与元件

在 Vue 中指令和元件分得更清晰。指令只封装 DOM 操作,而元件代表一个自给自足的独立单元 —— 有自己的检视和资料逻辑。在 Angular 中两者有不少相混的地方。

效能

Vue.js 有更好的效能,并且非常非常容易优化,因为它不使用脏检查。

在Angular 1中,当 watcher 越来越多时会变得越来越慢,因为作用域内的每一次变化,所有 watcher 都要重新计算。并且,如果一些 watcher 触发另一个更新,脏检查回圈(digest cycle)可能要执行多次。 Angular 使用者常常要使用深奥的技术,以解决脏检查回圈的问题。有时没有简单的办法来优化有大量 watcher 的作用域。

Vue.js 则根本没有这个问题,因为它使用基于依赖追踪的观察系统并且非同步列队更新,所有的资料变化都是独立地触发,除非它们之间有明确的依赖关系。

有意思的是,Angular 2 和 Vue 用相似的设计解决了一些 Angular 1 中存在的问题。

Angular 2

Augluar 2完全是一个全新的框架。例如,它具有优秀的元件系统,并且许多实现已经完全重写,API也完全改变了。

TypeScript

Angular 1面向的较小的应用程式,Angular 2已转移焦点,面向的是大型企业应用。TypeScript被引用,这对那些喜欢用Java或者C#等型别安全的语言的人是非常有用的。

Vue也适合企业应用,也可以使用TypeScript来支援官方型别和使用者贡献的型别,尽管这是可选的。

尺寸和效能

在效能方面,这两个框架都是非常快。但是如果你检视第三方参照,就可以得出 Vue 2 比 Angular2 要快的。

在尺寸方面,虽然 Angular 2 使用 tree-shaking 技术和编译技术能使程式码尺寸减小。

即便包含编译器和全部功能 Vue2(23kb)比起 Angular 2(50kb)还是小的多。但是要注意,用 Angular 的 App 的尺寸缩减是用 tree-shaking 移除了那些框架中没有用到的功能,当随着引入功能的增多,尺寸会越来越大。

灵活性

Vue 官方提供了构建工具,但没限制你如何构建。有人喜欢用统一的方式构建,也有很多开发者喜欢这种灵活自由的方式。

学习曲线

开始使用Vue,你使用的是熟悉的HTML、符合ES5规则的JavaScript(也就是纯JavaScript)。有了这些基本的技能,你可以快速地掌握它(指南)并投入开发 。

Angular 2 的学习曲线是非常陡峭的。即使不包括TypeScript,它们开始指南中所用的就有ES2015标准的JavaScript,18个NPM依赖包,4个档案和超过3千多字介绍,这一切都是为了完成个Hello World。而Vue's Hello World就非常简单。

Ember

Ember 是一个全能框架。它提供大量的约定,一旦你熟悉了它们,开发会很高效。不过,这也意味着学习曲线较高,而且不灵活。在框架和库(加上一系列松散耦合的工具)之间权衡选择。后者更自由,但是也要求你做更多的架构决定。

也就是说,最好比较 Vue.js 核心和 Ember 的模板与资料模型层:

Vue 在普通 JavaScript 物件上建立响应,提供自动化的计算属性。在 Ember 中需要将所有东西放在 Ember 物件内,并且手工为计算属性宣告依赖。

Vue 的模板语法可以用全功能的 JavaScript 表示式,而 Handlebars 的语法和帮助函式语法相比之下非常受限。

在效能上,Vue 甩开 Ember 几条街,即使是 Ember2.0 的最新Glimmer引擎。Vue自动批量更新,Ember 当效能关键处需要手动管理。

Knockout

Knockout 是MVVM领域内的先驱,并且追踪依赖。它的响应系统和Vue相似。它对浏览器支援以及所有的表现也是让人印象深刻的。它能最低支援到IE6,而Vue最低只能支援到IE9。

随着时间的推移,Knockout的发展已有所放缓,并且略显有点老旧了。比如,它的元件系统缺少完备的生命周期事件方法,尽管这些在现在是非常常见。以及相比Vue呼叫子元件的介面显得有点笨重。

如果你有兴趣研究,会发现它们在介面设计的构思理念上是不同的。这些通过各自建立的 simple Todo List 可以体现出来。或许有点主观,但是很多人认为Vue的API介面更简单结构更优雅。

Polymer

Polymer 是另一个由谷歌赞助的专案,事实上也是Vue的一个灵感来源。Vue的元件可以粗略的类比于Polymer的自定义元素,并且两者具有相似的开发风格。最大的不同之处在于,Polymer是构建于最新版的Web Components标准之上的,并且需要非凡的polyfills来工作(效能下降),浏览器本身不支援这些功能。相比而言,Vue不需要依赖polyfills来工作,最低到IE9。

在 Polymer 1.0版本中,为了弥补效能,团队非常有限的使用资料系结系统。例如,在Ploymer中支援的唯一表达式只有布林值否定和单一的方法的呼叫,它的puted方法的实现也不是很灵活。

Polymer 自定义的元素是用HTML档案来建立的,这回限制你的普通的JavaScript/CSS(和被现代浏览器普遍支援的语言特性)。相比之下,Vue的单档案允许你非常容易的使用ES2015和你想用的Css的预编译处理器。

当部署到生产环境的时候,Polymer建议使用HTML Imports载入所有资源。而这要求伺服器和客户端都支援Http 2.0协议,且浏览器实现了标准。这是否可行就取决于你的目标使用者和部署环境了。如果状况不佳,你必须用Vulcanizer工具来来打包Polymer元素。在这方面,Vue 可以结合非同步元件的特性和Webpack的程式码分割特性来实现懒载入(lazy-loaded)。这同时确保了对旧浏览器的相容且又能更快载入。

对Vue和Web Component标准之间进行深层次的整合,也是完全可行的,比如Custom Elements、Shadow DOM的样式封装。然而现在在我们做出严肃的承诺之前,我们仍在等待标准成熟,进而广泛应用于主流的浏览器中。

Riot

Riot 2.0 提供了一个类似于基于元件的开发模型(在Riot中称之为”Tag”),提供小巧精美的API。Riot 和 Vue 可能共享一些设计理念。即使相比Roit重一点,Vue还是有很多显著优势的:

根据真实条件来渲染,Roit根据是否有分支简单显示或隐藏所有内容。

功能更加强大的路由机制,Roit的路由功能的API是极少的。

更多成熟工具的支援。Vue 提供官方支援Webpack、Browserify和SystemJS,而 Roit 是依靠社群来建立整合系统。

过渡效果系统。Riot现在没有提供。

更好的效能。Roit 尽管广告称用虚拟DOM,实际上用的还是脏检查机制,因此和Angular 1患有相同的效能问题。

以上所述是我给大家介绍的Vue.js 2.0 和 React、Augular等其他前端框架大比拼,希望对大家有所帮助,如果大家有任何疑问请给我留言,我会及时回复大家的。在此也非常感谢大家对指令码之家网站的支援!

react.js vue.js 这些前端框架都必须在node.js上才能跑吗

这些js写的吧,你tomcat怎么解析js,而且tomcat也是呼叫第三方的直译器来解析程式码,你看node.js能不能整合到tomcat,有没有类似的外挂。

并不是,你本地随便建个档案就能跑。

vue高阶组件应用场景的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vue高级应用、vue高阶组件应用场景的信息别忘了在本站进行查找喔。

阅读
分享