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