1
zsx 2015-08-18 23:21:08 +08:00 1
|
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 1
|
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 也不少) |