AngularJS是"前端"可以用于动画而不是JQuery的语言?

时间:2015-03-13 14:26:28

标签: javascript jquery angularjs html5 twitter-bootstrap

我正在与一个设计团队合作重新设计我的网站,我的首席开发人员告诉我告诉他们我想在我的HTML页面中使用AngularJS而不是JQuery,因为它是干净的代码,并且拥有最现代的库;他们同意使用。

我想因为AngularJS比JQuery更新,所以他们没有那么多经验。在项目范围内,我们同意他们只会进行重新设计的“前端”工作(例如模板化引导程序,css / html和网站动画),但是他们告诉我他们团队中的某个人说AngularJS是也是“后端”编程工作......这是准确的吗?

如果他们正在创建我的HTML页面,他们是否必须进行“后端”编程工作,如果他们使用AngularJS或者这只是“前端”工作?他们说他们必须使用JQuery,因为这是所有“前端”的工作。

此外,他们告诉我具体的动画效果,例如淡入和淡出元素等,他们想要使用jQuery和Bootstrap。他们告诉我AngularJS不是动画的最佳解决方案,但它更适合操纵网站的动态和实时信息......这是否准确?

在我看来,他们只是试图找到不使用AngularJS的方法,而是使用JQuery代替他们更舒服。

4 个答案:

答案 0 :(得分:4)

AngularJS中的动画可以使用其中一个名为ngAnimate的模块,它可以通过向HTML元素添加CSS类来实现,但是您需要自己编写类,并且您将使用很多比JQuery动画更好的性能,并且只需要纯CSS。这是我最初使用的,它对我来说似乎工作得很好。然而,我发现当我开始做更复杂的动画时,我的CSS规则变得越来越大,特别是因为你必须在大多数CSS前加-webkit -moz -o之类的东西。

此时我已准备好尝试替代方案,但我不想回到jQuery。我发现的是GSAP。这是一个非常强大且方便的动画javascript库,我可以将它完美地集成到Angular using指令中。例如,我在我的一个项目中有这个:

    .directive('highlight', function() {
        return {
            scope: {},
            restrict: 'A',
            link: function(scope, element) {

                element.on('mouseenter', function() {
                    TweenMax.to(element, 0.5, {
                        color: '#000',
                        borderColor: '#000',
                        backgroundColor: '#F2F2F2'
                    });
                });
                element.on('mouseleave', function() {
                    TweenMax.to(element, 0.5, {
                        color: '#BDBDBD',
                        borderColor: '#BDBDBD',
                        backgroundColor: '#FFF'
                    });
                });
            }
        };
    })

如果我的HTML中的链接形状像按钮那么简单就像写

一样
<button highlight></button>

我有一个带动画边框,文字颜色和背景颜色的按钮。而且,可重复使用。我不必为DOM中的每个按钮编写突出显示规则。我只需要添加属性highlight

jQuery有效,但它的动画很糟糕。 Angular更好,但它很冗长,我个人并不喜欢实现它。我倾向于GSAP,因为它可以提供多么强大和灵活的功能,同时还能为您提供最佳的动画效果。

答案 1 :(得分:2)

LoganRx表示AngularJS是一个客户端javascript库。它确实有一个极好的动画模块,可以添加CSS动画。但是,如果CSS动画没有削减它,你可能也想要查看Javascript动画。这就是Jquery动画将发挥作用的地方。然而,有很多Javascript动画库。此外,AngularJS和Jquery有两个不同的目的。从评论中的示例淡入和淡出动画是AngularJS动画模块中包含的基本css动画。所以你可以将它用于那个目的。

AngularJS显然不依赖于JQuery,反之亦然。 AngularJS非常适合模型和视图绑定,可以生成ajax请求,路由,CSS动画等等!实际上,您只需使用AngularJS即可构建整个应用程序。然而,Jquery是一个非常通用的JavaScript库,它为您提供AngularJS中不可用的实用程序。在许多情况下,您将使用这两个库。

为AngularJS做出巨大贡献的Yearofmoo有一个很棒的博客,其中包含很多AngularJS的动画示例。你可以在这里找到他的博客:http://www.yearofmoo.com/

解决服务器端工作是否需要完成的问题实际上非常棘手。这取决于应用程序现在如何呈现动态内容。如果整个HTML文档是由服务器根据一些动态信息生成的,并且没有真正的休息数据端点那么是的,您可能需要做一些服务器端工作来创建端点,您可以在其中检索动态AngularJS要使用的数据。但是,如果当前应用程序在很大程度上依赖于返回Json或XML对象的Ajax调用(或者如果它设计得很好,并且它使用了序列化框架)那么你可能根本不需要进行太多的服务器端更改。

答案 2 :(得分:1)

首先,AngularJS是一个前端JS框架,技术上不需要任何后端编程。它可以非常容易和有效地与后端交互,但AngularJS本身并不是后端编程。

就动画而言,在Angular中使用与jQuery中的动画一样多的方法。 CSS Transitions,Transforms和Animations都可以在没有jQuery的情况下使用Angular,它只是一种不同的思维方式。还有一个名为NgAnimate的角度模块,它允许为页面上的不同交互提供更多定向动画。

总而言之,作为Angular开发人员,我会意识到您正在寻找的所有内容都可以通过Angular完成,除非他们不熟悉Angular,否则不难。但是,他们声称的应用程序的各个方面将更容易使用jQuery在Angular中的语法和执行方面非常相似。此外,Angular内置了jqLit​​e,它已经允许一些基本的jQuery功能。

答案 3 :(得分:0)

Angular不适用于动画。 Angular是用于开发Web应用程序的框架。例如高级用户界面等。

以角度制作动画只是个坏主意。你可以,但是它们会很糟糕,虽然如果你没有正确使用它们,在jQuery中执行它们也会很糟糕(并且jQuery也不适用于动画,但几乎没有有用的功能)。 jQuery仍然是更新,它是行业标准。它几年前首次发布,但新版本定期推出。

这里不要误解我的角度动画可能做得很好,不过整个角度都是代码音调,只有一些比特与动画有关

Angular不是后端框架。您可以使用例如mean.io轻松地将其与后端连接,但角度本身大部分仍然保留在前面。

顺便说一下,在我看来,角度很慢,不接受好的做法。此角度的下一版本将与之前的版本不兼容,因此将来不会更新到最新版本。