HTML中 Angular 的表达式 与 VUE 的表达式以及VUE的计算属性对比
2020-06-25 04:38
197 查看
Angular和VUE都支持在HTML界面直接输入Javascript的表达式,而表达式就会在当前元素所在的作用域中读取变量然后进行计算,将得出来的值赋予HTML表达式所在的位置。而表达式中的变量会被框架实时侦听,一旦变化了,表达式的计算结果也会随之变化。使用方式如下代码段所示。一个是HTML的attribute的表达式,另一个是双大括号的HTML展示字符的表达式。
[code]//Angular <button diabled="$ctrl.isDisable"> {{$ctrl.buttonMessage}} </button> function controller() { let ctrl = this; ctrl.isDisable = false; ctrl.buttonMessage = 'confirm'; } //VUE <button id="testButton" :diabled="isDiable"> {{buttonMessage}} </button> var vm = new VUE({ el: '#testButton', data: { isDiable: false, buttonMessage: 'confirm' } });
从上面的简单应用的代码段来看,Angular与VUE都相差无几。但如果表达式是某种复杂运算,且需要多处复用,如下面代码段所示
[code]//Angular <button diabled="$ctrl.isDisable"> {{$ctrl.buttonMessage.reverse().Uppercase().slice(5)}} </button> <button> {{$ctrl.buttonMessage.reverse().Uppercase().slice(5)}} </button> function controller() { let ctrl = this; ctrl.isDisable = false; ctrl.buttonMessage = 'confirm'; } //VUE <button id="testButton" :diabled="isDiable"> {{buttonMessage.reverse().Uppercase().slice(5)}} </button> <button id="testButton"> {{buttonMessage.reverse().Uppercase().slice(5)}} </button> var vm = new VUE({ el: '#testButton', data: { isDiable: false, buttonMessage: 'confirm' } });
这时候再直接使用作用域中的变量来HTML中运行复杂运算,就会导致代码可读性差同时,代码的运行效率低。Angular在作用域中再定义一个computedButtonMessage = ctrl.buttonMessage.reverse().Uppercase().slice(5) 的方式可以解决代码可读性差的问题,由于作用域中的变量没有建立起随动关系,buttonMessage 的变化不会导致computedButtonMessage 的变化,就得对buttonMessage进行手动侦听。从代码简洁度和性能来说仍然不及VUE的使用computed方法的方案。如下面代码段所示:
[code]//Angular <button diabled="$ctrl.isDisable"> {{$ctrl.computedButtonMessage }} </button> <button> {{$ctrl.computedButtonMessage }} </button> function controller($scope) { let ctrl = this; ctrl.isDisable = false; ctrl.buttonMessage = 'confirm'; $scope.$watch(() => { return ctrl.buttonMessage; }, () => { ctrl.computedButtonMessage = ctrl.buttonMessage.reverse().Uppercase().slice(5); }) } //VUE <button id="testButton" :diabled="isDiable"> {{computedButtonMessage}} </button> <button id="testButton"> {{computedButtonMessage}} </button> var vm = new VUE({ el: '#testButton', data: { isDiable: false, buttonMessage: 'confirm' }, computed: { computedButtonMessage: function() { return buttonMessage.reverse().Uppercase().slice(5); } } });
相关文章推荐
- js3:数据类型,数组,String各个属性,以及字符串表达式用eval计算
- Vue中watch侦听器&&computed计算属性以及 methods用法(核心)
- Vue学习笔记(3)--计算属性和method的对比、部分ES6、事件监听、条件判断、v-show、v-for
- 自学Vue必看的计算属性知识总结以及计算属性与方法的区别
- Vue--基础模板语法以及计算属性
- vue 三元表达式class、图片切换 (涉及计算属性)
- vue 计算属性应用--金额显示和数据库金额保存
- 【html】param 以及 embed 的有关 flash 属性详解
- VUE之生命周期钩子 VUE之计算属性与侦听器
- VUE学习第二周--计算属性computed
- vue与angular和react框架原理对比小结及兼容性
- vue-使用计算属性遇到的坑
- vue简单学习-路由、生命周期、计算属性和watch
- Java 编写一个类SquareEquation, 该类封装了一元二次方程共有的属性和功能, 即该类含有刻画方程系数的3个成员变量a,b,c以及计算实根的方法getRoots, 并用数据测试该类的正确
- HTML标签以及各个标签属性大全
- 解决:angular.js中插值表达式为HTML时需要被渲染的问题
- 【angular】组件:@Input() @Output() 输入属性和输出属性以及中间人模式的使用 (一)
- asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例
- Vue.js第三天学习笔记(计算属性computed)
- swift_044(Swift 计算属性和存储属性的概念以及使用)