php - 是否有必要学习angular
高洛峰
高洛峰 2017-04-10 16:02:09
[PHP讨论组]

说下自己的情况。
开发前端主要用bootstrap,jquery,ajax。效果动画表单验证什么的也是jq。
后台主要用thinkphp。

前段时间想搜一下更好的前端框架,看到angular。但是学习了一段时间感觉非常困惑。
那篇神问答也看了三四遍,主要的核心就是不要操作DOM。但是按照angular的写法,扩展每个html标签,这样对比jquery那种html和js分离的写法貌似没任何优势啊。

第二个就是数据双向绑定,感觉也是用处不大,不论是表单验证还是其它动画效果感觉jq无压力啊。

还有个疑问就是MVC,为什么不用tp的mvc,而要用angular在前端再分离一次,这样有什么好处呢,假如我要循环

    下的
  • ,常规用tp可以直接foreach,但是用angular就必须写成这样:


    • {{**}}

    这样将数据写在js里面,sql出的数据怎么分配呢,岂不给自己找不自在?

    那为什么那么多人在用angular,她到底好在哪里呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
伊谢尔伦

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

PHP中文网

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

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

伊谢尔伦

Angular最好的地方就是能让你向写后台代码一样的写前端代码
template和Controller 基本上可以实现经典mvc的形式

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

怪我咯

我也是做后端php开发的,前段时间想做一个项目,前端希望考虑用angular,于是就学习了一把,心得是

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


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

个人意见

巴扎黑

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

大家讲道理

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>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号