发布于 1970-01-01 08:00
  • 7 个回答
    • 学不学Angularjs不是重点,重点的是要学MVVM这一套逻辑(后面会说明这是什么),而Angular刚好是这套逻辑最成熟的方案,所以很多人会建议你学Angularjs,其实还有Ember, Aurelia等等,都是很不错的MVVM框架。
      举个例子(Angularjs):
      像你写的遍列数据,如果用jQuery,那么需要这样:

      //foo is Array
      foo.forEach(function(eachFoo){
          $ul.append('<li>' + eachFoo + '</li>');
      });

      而Angularjs需要在html上面写,也就是用指令:

      <ul>
          <li ng-repeat="eachFoo in foo">{{eachFoo}}</li>
      </ul>

      一般不继续处理foo变量的话,显然是jQuery会比较方便,但万一你需要删除foo里的变量呢?在jquery中需要两步:
      第一删除变量:

      var index = 1; //需要删除变量的位置
      foo.splice(index, 1);

      第二删除dom元素:

      $ul.find('li:eq(' + index + ')').remove();
      //实际操作会复杂得多

      而在Angular中,只需要在controller中把foo指定的变量删除就可以了,也就是上面jquery的第一步,但写法有点不同。

      var index = 1;
      $scope.foo.splice(index, 1);

      之后就不必再去管dom元素了,它会自动把变量对应的dom元素删掉。同样,如果要增加变量,只需继续在foo里push(新变量)就可以了,而jQuery却不同,它不仅需要push,还要append,甚至还需要知道push到那里了。

      看到这里,你大概就能理解为什么这么多人喜欢Angularjs了,因为有了它你就不必再操心dom元素了(这是一件十分痛苦的事情,特别是数据特别多的时候),你只需定义好了指令,然后直接操作$scope里的变量就可以了,这是一件多么舒心省事的事情。

      回到MVVM来,这是什么鬼?MVVM其实就是model view - view model,也就是数据与视图的绑定,操作数据等同于操作视图,操作视图也等同于操作数据,也就是传说中的双向绑定。

      再回到你的问题来,需不需要学习Angularjs,我认为是需要的。无论项目大小,anguarjs完全可以取代jquery,况且angularjs里包含了jquery(迷你版,尽量少用)。学习并不困难,我大概花了两个星期就入门了,建议照着官方文档案例学习https://docs.angularjs.org/tutorial,写得相当好。

      表单验证对于angular来说比jquery更有优势,因为你根本不必处理用户输入错误时dom如何处理,你只需定义好指令让angular来处理就好了(可以结合validator第三方包来处理,更是简单得要命)。

      至于动画,angular比jquery还简单点,因为全是用css来写的,与jquery那些fadein fadeout有点不同。更爽的是,只要css定义好了,你所有dom的出现和消失都是带有动画的,比jquery每个dom都写一个动画简单得多。更是因为css动画是有GPU加成的(transform3d),比jquery流畅不是一点点。

      但angular并不是完美,有些缺点你必须接受,如果你项目SEO比较依赖,用Angular稍微麻烦点,因为view基本上是js来操作了,搜索引擎是看不到的(解决办法也是极为复杂),特别是用了route的,做SEO更是困难。所以很多时候Angular大多用在移动端或者APP,桌面端比较少用(并不是完全没用,主要是jquery现在用的人太多)。

      扩展:
      React比angular稍微复杂点,涉及到一个虚拟dom的知识点,它是直接在js中写html,连指令也不用写,最大的好处是执行效率相当高。我刚开始接触,还没真正用上,有机会再研究研究。

      另外你说到了bootstrap,这是UI框架,主要负责外观,跟jquery angular区别还蛮大的。

      另,我写了个云相册,刚开始是用jquery写的,现在正慢慢迁移到angular来,有兴趣可以看看:http://www.lazycoffee.com

      我也是刚接触Angularjs不久,为避免误人子弟,请别转载

      2022-12-01 09:53 回答
    • angular是针对那种【后台只写接口,前端根据接口返回的值自己处理逻辑】的APP式页面的
      你把逻辑都交给后台,前台大部分操作都提给后台,php动态生成页面这种格式当然觉得无必要。

      2022-12-01 09:53 回答
    • 双向数据绑定简直相当有用啊,你觉得没有用可能是你还没有遇到相应的情况。比如说你有一js二维数组想要以表格的形式展示在html模型上,而模型上还要给这表格加上增删查改等功能。用angularjs之后你需要做的仅仅只是操作一下js二维数组,不用做任何的dom操作,就能达到目的。

      不过angularjs却与html和js代码分离的规范相背离确实是个问题。

      2022-12-01 09:53 回答
    • Angular最好的地方就是能让你向写后台代码一样的写前端代码
      template和Controller 基本上可以实现经典mvc的形式

      为什么要用它呢
      1 - 学习门槛低 简单易用
      2 - 确实让代码更好维护
      3 - 双向绑定还是很方便的
      4 - 如果你用Ionic 你躲不开Angular
      5 - 如果你写移动端的WebApp angular可以一次加载 更快的装载处理各级子页

      2022-12-01 09:53 回答
    • 我也是做后端php开发的,前段时间想做一个项目,前端希望考虑用angular,于是就学习了一把,心得是

      1.思想很牛,把mvc整合到了前端开发,维护起来很容易
      2.但项目如果不是太大的话就不要考虑这个东西


      我不是专业做前端的,可能对于angular掌握的不是特别好,但好像最近很久一段时间react貌似很火的样子,对于处理dom很牛叉,如果可以在angular抽出身,弄弄那个貌似不错

      个人意见

      2022-12-01 09:53 回答
    • 赞同一楼的观点,学习一套框架,更多的去学习其中的思想。很多知识是相通的,学习了angularjs算是知识储备。就比如大学先学习c语言C#,后来学习java就会感觉容易很多

      2022-12-01 09:53 回答
    • Angular对SEO支持不好,不支持IE8,相比jQuery,太复杂太大,还不如用Vue.
      还有CSS3动画不是Angular专属的东西,jQuery里也一样可以用.
      基于jQuery的Bootstrap虽然跟Angular不是一个类型的东西,不过可以加速开发.
      国人开发的LayUI也不错,还支持IE8.
      数据和视图绑定后,数据的修改直接反映到视图,不需要手动进行DOM操作.
      这确实方便,不过视图那里仍然需要写东西,而且还带有逻辑,比如Vue里的v-if和v-for:
      vue/benchmarks/big-table/index.html

      <form>
      <strong>Filter Data</strong>:
      <input type="text" v-model="filter">
      <span v-if="filter">
        &mdash;
        Filtering <strong>{{ filter }}</strong>
        over {{ dataPoints }} data points,
        {{ visibleCount() }} found.
      </span>
      </form>
      
      <table width="100%" cellspacing="2" :class="{ filtered: filter }">
      <tr v-for="row in grid">
        <th>{{ row.id }}</th>
        <td v-for="item in row.items"
          class="item"
          :class="{ hidden: !matches(item) }">
          {{ item.value }}
        </td>
      </tr>
      </table>
      2022-12-01 09:53 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有