百科狗-知识改变命运!
--

最新版 angular 和 vue,写同样功能,性能和体积上差距大吗

乐乐1年前 (2023-12-19)阅读数 8#综合百科
文章标签动画元素

性能上差不多,Angular现在是Angular4,相对于AngularJS,性能上有了质的提升,因为AngularJS默认使用双向绑定。目前和Vue比起来,性能上几乎没有差别了。体积上,Vue明显要小许多,因为Angular的功能实在是太丰富了,是一个完整的前端框架,包

运用部分讲解:

首先,Angular本身不提供动画机制,需要在项目中加入Angular插件模块ngAnimate才能完成Angular的动画机制,Angular也不提供具体的动画样式,所以说,它的自由度和可定制性挺大的。

那么,刚开始需要在项目的入口html文件中引入Angular框架(angular.js),然后引入angular.animate.js。

在项目的js入口文件app.js中,新建项目模块,并且添加所依赖的模块ng-Animate(有其他需要的模块的话也可以引入,顺序没关系)

var demoApp = angular.module('demoApp', ['ngAnimate','ui.router']);

这里中间插入一句,建议Angular中的依赖注入用如下模式,在ads、bds或者其他的前端自动化工具打包压缩后不会产生问题,因为仅仅通过 给function传参的形式注入依赖,Angular是会对注入的变量名有严格的要求(如$scope变量名在控制器中注入时变量名只能 写$scope):

//控制器.js、指令.js、过滤器.js的依赖注入建议都用这种方式写

//这是ui-route的配置,在app.js

demoApp.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider){

// your code.

}]);

引入了ngAnimate之后,Angular的动画机制就能生效了。

Angular文档中写到如下指令和支持的动画

Directive

Supported Animations

ngRepeat enter, leave and move

ngView enter and leave

ngInclude enter and leave

ngSwitch enter and leave

ngIf enter and leave

ngClass add and remove

ngShow & ngHide add and remove (the ng-hide class value)

form add and remove (dirty, pristine, valid, invalid & all other validations)

ngModel add and remove (dirty, pristine, valid, invalid & all other validations)

那么,怎么使用呢?

本文拿ng-repeat这个指令来做个介绍,其他的一些指令使用方式几乎相同,可类推。

ng-repeat 主要是对一个list的展示,这些元素是是被创建出来加入到DOM结构中去的,那么,它的动画过程为:

创建元素 -> .ng-enter -> .ng-enter-active -> 完成,呈默认状态

默认状态 -> .ng-leave -> .ng-leave-active -> 销毁元素

所以可以通过设置.ng-enter(.ng-leave) 和 .ng-enter-active(.ng-leave-active) 的样式,加上css3的动画来显示出动画,如:

  • {{user}}

/* css片断 */

/*ng-repeat的元素*/

.item{

-webkit-transition: all linear 1s;

-o-transition: all linear 1s;

transition: all linear 1s;

}

/*动画开始前*/

.item.ng-enter{

opacity:0;

}

/*动画过程*/

.item-ng-enter-active{

opacity:1;

}

这样的效果是对所有元素同时应用,可能实际运用中需要有一个先后的渐变出现的效果,这时候可以设置ng-enter-stagger来实现.

/*不同时出现*/

.item.ng-enter-stagger {

transition-delay:0.5s;

transition-duration:0;

}

同样的,这些angular animate提供的动画的class也可以应用到页面切换中去。如果通过写css的方式还无法满足需求,当然,还可以通过JS的方式来控制动画,下面的代码你可以理解为是一个模版

/* CLASS 是需要应用的class名,handles是支持的操作,如下图所示*/

/* 这里如果是应用在ui-view 的class上,模版会叠加(坑)*/

demoApp.animation('.classname',function(){

return {

'handles':function(element,className,donw){

//... your code here

//回调

return function(cancelled){

// alert(1);

}

最新版 angular 和 vue,写同样功能,性能和体积上差距大吗

}

}

})

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)