|  |      1zsx      2015-08-18 23:21:08 +08:00  1 | 
|  |      2NemoAlex      2015-08-18 23:21:50 +08:00 因为并不是 | 
|  |      3FrankFang128      2015-08-18 23:28:20 +08:00 是吧,就是入门比较难,概念太多。 | 
|  |      4grzhan      2015-08-18 23:44:31 +08:00 收藏,想看看回复里会不会推荐分享其他的框架(比如 Vue ?),看看有没有分享的有关实践,然后看看会不会吵起来。 | 
|  |      5chengzhoukun      2015-08-18 23:50:50 +08:00 知乎上阿里前端工程师说他们在部分产品上用了 react | 
|  |      6plqws      2015-08-19 00:00:53 +08:00 ES6+ 实现简单的 MVC 框架挺简单的吧,自己写一个也许会更好?用编码成本代替学习成本,还能学到不少东西呢~ | 
|  |      7jarlyyn      2015-08-19 00:09:06 +08:00 喜欢 react+backbones. | 
|  |      8jarlyyn      2015-08-19 00:16:25 +08:00 Angularjs 最大的有点也是最大的缺点就是 他自己提供了一整套方案。替换不易。 然后, 1.x 和 2.x 还不兼容…… Angularjs,react+backbones,ko,纯 backbones 都试过。 纯以做项目来说,Angularjs 的确上手最快。基本一个统一的模式。 但还是 react+backbones 更容易和别的代码做结合。 | 
|  |      9Phariel      2015-08-19 00:19:05 +08:00 并不是, AngularJS 我认为过几年会自己被自己玩残,死倒不可能,框架并不像产品一样说没就没。(对,我就是说的 Reader ) | 
|  |      10chairuosen      2015-08-19 00:22:16 +08:00 只 mvvm 首选 vue | 
|      11df4VW      2015-08-19 00:46:17 +08:00 angular 算是入门最容易了的吧。。为啥说难 | 
|      12maxiujun      2015-08-19 01:06:41 +08:00 没人提 ember.js , 真的很小众吗? | 
|  |      13ChanneW      2015-08-19 01:07:36 +08:00 | 
|  |      14lightening      2015-08-19 01:26:35 +08:00 越到后来坑越多…… | 
|      15jruif      2015-08-19 01:31:53 +08:00 via iPhone @lightening 能说说都遇到了那些坑吗? | 
|  |      16lightening      2015-08-19 01:52:07 +08:00 @jruif  Angular 的特点就是双向绑定。一个页面上的 input 可以和一个变量绑定,再把这个变量和一个 label 绑定的话,就能实现 input 输入的同时 label 跟着变了。整个页面的构成都是靠双向绑定建立的反馈环。 当页面加载时,整个反馈系统开始运作,互相变来变去,直到形成一个稳定的状态,所有变量之间的制约关系都被满足为止。 这样一开始是很好的,但是有一个致命问题——不存在类似“$(document ).ready ”这个 event 。因为 document 永远在动态平衡中。于是如果 Angular 程序想要和外部 js 服务通信,基本是没法把握这个时机的。目前我们知道的唯一办法就是手动延迟 2 秒,然后加载外部服务,比如 Google Analytics 等。 另外就是加载时序的问题。经常有一个 directive 和另一个 directive 互相比赛谁先获取到需要的数据,然后呈现随机的结果…… | 
|  |      17mongodb      2015-08-19 03:21:58 +08:00 总想起当年 Python 的 Zope | 
|  |      18ChefIsAwesome      2015-08-19 05:51:01 +08:00 via Android 完全不是。坑多难学,骂成狗。 | 
|  |      19loading      2015-08-19 07:27:35 +08:00 via Android teahour 上有 vue 的访谈,大家可以去听下 | 
|  |      20virusdefender      2015-08-19 08:27:28 +08:00 简单用的话 强烈推荐 avalon | 
|  |      21juneszh      2015-08-19 08:36:09 +08:00 @lightening 用.$watch 解决 ready 问题会不会好点 | 
|      22morethansean      2015-08-19 09:20:01 +08:00 @lightening 没太明白你的 ready 的问题,能解释一下吗? | 
|  |      23qw7692336      2015-08-19 09:22:44 +08:00 | 
|  |      24temberature OP @NemoAlex 那请问有什么可推荐的吗? | 
|  |      25learnshare      2015-08-19 09:44:34 +08:00 大概是用的最广泛的,不过可能不是最好的 | 
|  |      26temberature OP @FrankFang128 先忘掉原先的开发思路,感觉入门还行,就是特定问题无法很好利用前人的代码 | 
|  |      27temberature OP @grzhan 看来你是推荐 vue 的了,哈哈😄 | 
|  |      28temberature OP @chengzhoukun 能分享下链接吗:) | 
|  |      29temberature OP @plqws 产品上用 ES6 还是不太行吧  ES6 转 ES5 应该还是不完善 | 
|  |      30plqws      2015-08-19 10:23:40 +08:00 @temberature 嗯,当然不是现在,不过现在很多项目都开始转 ES6 了,转译器的效果也都还不错。 | 
|  |      31zythum      2015-08-19 10:28:55 +08:00 Angular 适合用于做快速原型开发。小规模的网站开发。代码越多维护成本越大。 | 
|  |      32ljbha007      2015-08-19 10:35:00 +08:00 @lightening 可以写在 app.run 里边 或者用 directive | 
|  |      33temberature OP @ChefIsAwesome 那有什么推荐的吗 | 
|  |      34temberature OP @Phariel 为什么说会被自己玩残呢? | 
|  |      35temberature OP @virusdefender 那如果是产品上用呢 | 
|  |      36temberature OP @learnshare 想起了 yy 是最好的 xx | 
|  |      37temberature OP @zythum 那中上规模有什么推荐的吗 | 
|  |      38temberature OP @qw7692336 这个项目大概意味着,其实现在没有那个框架优于其他,所以自己按个尝尝,喜欢哪个用哪个吧 | 
|  |      39hxtheone      2015-08-19 10:55:15 +08:00 @lightening 非常同意,在我看来双向绑定虽然简化了数据的获取和 dom 的更新操作,但是让整个应用的 lifecycle 变的很混乱 @morethansean 我觉得他说的是在 angular 里没有一个清晰的事件走向,比如有时候我们需要在所有的 dom 都 render 完成后进行一些操作,但是在 angular 里是不知道什么时候 dom 都 ready 了的,因为数据和 dom 都处在动态平衡的状态,我们的写的一个操作很可能在这个平衡达到之前就执行了,这时就只能用$watch 或者手动 setTimeout 来让应用按照预期的方式运行 这个我觉得是一个普遍的痛点,君不见 stackoverflow 上一堆问 angular 怎么实现 afterRender callback 的= = | 
|  |      40summic      2015-08-19 10:56:34 +08:00 微众银行 APP 算不算著名? | 
|  |      41temberature OP @zsx 能说说 angularjs 专攻在或者适合怎么用吗? | 
|  |      42ChefIsAwesome      2015-08-19 11:02:44 +08:00 via Android 先学习 flux ,很实在的一种设计模式,简单,扩展性好。学会之后找个你觉得合适的实现 flux 的 library 。 view 那层用 react , vue 等等,找个你觉得简单易用的 data binding 的库。 react 流行度高,相关的讨论,插件会更多。 用小而精的 library ,按照你自己的想法构建程序是趋势。 | 
|  |      43zythum      2015-08-19 11:03:35 +08:00 中上规模的时候就不应该问别人了。中上规模应该已经有一个完善的系统了。你应该分析自己现有的系统,结合之后的项目走向来选择。并不是说用哪个就是哪个的。就好比 react 做的不错,但是 react 只是个 view 框架路由啊,数据处理啊, io 通信啊什么的都没有。你还需要自己搞。任何框架都有利弊,需要找适合你的。 不然需要前端架构师干嘛。直接网上找个框架就 OK 了。 | 
|  |      44ttph1oc      2015-08-19 11:05:22 +08:00 国内的话有 Worktile 、知乎日爆;国外就多了去了,详见 https://builtwith.angularjs.org/ 。 | 
|  |      45ttph1oc      2015-08-19 11:06:59 +08:00 说错了,不是知乎日爆,是知乎专栏。 | 
|  |      46zsx      2015-08-19 11:11:07 +08:00 @temberature Angular 2.x 没看过。窃以为 Angularjs 特别适用于如后台这种,中小型网站且需要大量前后端数据交互的场景;或者是需要大量逻辑代码控制 View 这种。要是搞个大型的……你说为啥人家要造 2.0 …… 其实现在的前端框架,无论是 Angular 还是 Vuejs 还是 React ,都是蛮多坑的……是项目挑选框架,选一个能解决项目痛点问题的框架用吧…… @hxtheone @lightening +1 我目前的解决方案是 directive 里面$timeout (0 )再 scope.$emit …… (轻喷) | 
|  |      47akinoniku      2015-08-19 11:30:29 +08:00 我在负责一份从 12 年开始写的 angular 项目, JS 3w 行,质量蛮不错的,运行稳定,性能也够好。 说 Angular 坑多的同学恐怕是只学了个一知半解然后把它当 Library 用的 | 
|      48pljhonglu      2015-08-19 11:50:48 +08:00 用在移动端应该是个不错的选择~ | 
|  |      50magicdawn      2015-08-19 13:00:35 +08:00 | 
|  |      51sodatea      2015-08-19 13:04:31 +08:00 个人觉得并不是首选 著名产品的话,饿了么 PC 站不知道算不算一个 可以考虑试一下 vue | 
|  |      52temberature OP @zythum 常见的应用之间的差别没有那么大吧,无论小或大的应用,总有些共通的体制,每个具体的应用都可以在这个框架上扩展,甚至修改框架本身以适应自己的需要。 | 
|  |      53temberature OP @pljhonglu 为什么是移动端不是 pc 端呢 | 
|  |      54zonghua      2015-08-19 13:41:36 +08:00 使用 ng 给人的错觉就是这个网站相应速度好快啊 https://www.iosx.me/ | 
|  |      55temberature OP @zonghua 感觉这个和 ng 不是那么相关,主要还是分步渲染的结果吧 | 
|      56pljhonglu      2015-08-19 13:51:41 +08:00 @temberature  一方面移动端多是 single page APP ,交互逻辑简单,感觉 angular 比较合适。 另一方面 pc 端还是觉得服务器渲染比较好些,页面逻辑复杂使用 JS 渲染的效率还是有些差。 | 
|  |      57temberature OP @ChefIsAwesome 有时间应该去看看 flux ~ | 
|  |      58temberature OP @pljhonglu 1 、 angular 好像确实不适合交互逻辑,但移动端惯性滑动、下拉刷新类似的功能,好像是很基本的交互需求, angular 支持并不好  2 、服务端渲染影响最大的是不是 SEO ,效率上还没感到太大差别 | 
|      59pljhonglu      2015-08-19 14:08:20 +08:00 @temberature SEO 确实是个问题,我也觉得客户端渲染比较好,这样服务器只需要提供结构化数据就可以了, APP 和 PC 的开发方式可以统一了。但是本人不是前端开发,对 JS 并不擅长,只是觉得 angular 这种把所有文件全部加载然后内部渲染的方式可能会引起效率低下,然而并没有测试过。。。 | 
|  |      60kenshinhu      2015-08-19 14:09:54 +08:00 还有 大大的 EXTJS 和 dojo 什么什么(这个忘了叫什么) | 
|      61EchoChan      2015-08-19 14:12:46 +08:00  1 | 
|  |      62temberature OP @pljhonglu  “关于异步加载, AngularJS 的开发指南中大概这样说: AngularJS 的模块只关注依赖注入,不关注脚本是怎么加载的。 目前已经有项目来处理脚本加载, 可以和 AngularJS 一起使用。 模块在加载的过程中什么都没做, 可以按照任意顺序加载, 因此脚本加载器可以使用这个特性进行并发加载。” http://beginor.github.io/2014/12/20/angularjs-controller-load-on-demand.html 我也还没用到,分享只说明下一起加载不是唯一。 | 
|  |      63temberature OP @EchoChan 枯坐半小时,没看出联系:( | 
|      64EchoChan      2015-08-19 14:34:28 +08:00 @temberature 也是用 angularjs 的啊~不过不出名而已。 | 
|  |      65temberature OP @EchoChan 哦~~原来是这个意思,只关注路由器了,而现在我好奇的是,你是怎么发现的? | 
|  |      66jsq2627      2015-08-19 15:07:50 +08:00 饿了么在用 | 
|      67pljhonglu      2015-08-19 15:36:37 +08:00 @temberature 谢谢分享~ | 
|  |      68lightening      2015-08-19 15:51:36 +08:00 | 
|  |      69zsx      2015-08-19 15:59:28 +08:00 @lightening 套 ng-if 确认不会让逻辑变得很混乱(至少从代码层面上看?) @pljhonglu SEO 的解决方案是服务器按照和客户端相同的路由输出数据,这个数据反正没人看只要有 HTML 标签就行。不过既然这样还不如不用呢。 BTW, Google 能抓 Angular 的网站。 如果你说 PC 端效率问题的话,那手机 WebView 简直要哭了…… | 
|  |      70zythum      2015-08-19 17:39:39 +08:00 @temberature 如果你想要大而全就不灵活,灵活就难以管理。都是有权衡的。如果你想要大而全推荐 emberjs 。 | 
|  |      71ljbha007      2015-08-19 18:01:33 +08:00 @lightening 我的经验是这种情况一般都可以找到别的时候来执行 | 
|      72qq12365411      2015-08-19 18:09:12 +08:00 路过,支持 Angular | 
|  |      73temberature OP @zythum 我想咱俩说的是底层库和框架的区别,意思是一致的。谢谢推荐~ | 
|  |      74temberature OP @qq12365411 小心社区指南哟:) | 
|  |      75br00k      2015-08-19 22:56:04 +08:00 @lightening 你需要用 promise 来解决异步的问题。 | 
|  |      76lightening      2015-08-19 23:29:51 +08:00 @br00k 我不是要用一个某个 function 的结果,而是要 angular 自身 interpolate 完成后开始执行一个 function …… 不太清楚如何用 promise 解决这个问题? | 
|  |      77juneszh      2015-08-20 09:22:20 +08:00 最近几周尝试用 ng 写了两个基于微信的红包小游戏(XX 钱罐 不知道这里有人玩过不), 其实还蛮好用, 总结下: 1.不用一直 dom 来 dom 去. 有点类似后端+smarty 的感觉 2.灵活性没那么大(相对 jq ), 双向绑定是一把双刃剑. 3.微信支持度不是 100%, 会有一点点小问题, 特别是在 ng 调用他们的 jssdk 的话 4.里面有各种坑(其实 jq 也不少) |