来聊聊AngularJS

2013-12-11 20:00:52 +08:00
 akinoniku
挑你喜欢的topic说说就好

#1 factory和service 的实际应用场景就是是啥,比如我有个markdown,想“编译”成JSON,应该用哪个

#2 大型APP你喜欢怎样的结构? angular-seed 只适合简单的吧,我现在的做法是分成不同的小型APP

#3 如果一个站由多个APP组成,怎样控制载入呢?

#4 Directive 的参数搞清楚了吗? 我还是分不太清 preLink 和 postLink

#5 把什么样的东西抽成directive比较好?

#6 纯数据处理的逻辑,是不是不用写成angular的物件? 比如#1说的那个编译器
8677 次点击
所在节点    Angular
36 条回复
L42y
2013-12-12 15:38:07 +08:00
1.

- http://stackoverflow.com/questions/15666048/angular-js-service-vs-provider-vs-factory

- http://jacobmumm.com/2012/08/28/angular-js-services/

- http://angular-tips.com/blog/2013/08/understanding-service-types/

Service 和 Factory 的不同第一个链接里解释得比较清楚,我只用 Factory, 从来不用 Service, 个人觉得你用 Factory 就好。

2. & 3.

App 是指 angular.module?

4.

postLink 就是默认的 link function, 如果你想在 link 子 node 前 compile 后执行就用 preLink

5.

要操作 DOM 就写成 directive, 放在 link fn 里,其他的用 ngController, 因为 ngController 也是个 directive https://github.com/angular/angular.js/blob/master/src/ng/directive/ngController.js

6.

物件是指?
akinoniku
2013-12-12 16:22:46 +08:00
@L42y 谢谢

1. 有个疑问,factory就不是单例了吗?

2&3. 指的是一个网站有不同的模块,比如blog的文章列表和用户中心

6. 就是angular的provider衍生出来那一系列东西
scarlex
2013-12-12 16:37:34 +08:00
#1 http://iffycan.blogspot.com/2013/05/angular-service-or-factory.html
我大部分情况下都是用 factory。

#2 + #3
不太清楚,或者可以参考下 angular-ui ?

#4
directive 详细版的参数有好多,scope,restrict, templateUrl, controller, compile, link 之类的。具体可以参考下http://www.cnblogs.com/lcllao/archive/2012/09/09/2677190.html
里面也有谈pre,post。
当然,你也可以看看官方文档

#5
DOM 操作基本都要写成 directive ,这也是官方推荐的做法。

#6
不太清楚,orz
dagger
2013-12-12 20:35:37 +08:00
2. http://codingsmackdown.tv/blog/2013/04/19/angularjs-modules-for-great-justice/
这篇让我比较有感觉

3. 前面的那篇里面有例子,新建一个app然后把需要的module导进去,比如
angular.module('homepageApp', ['postApp', 'userApp']);

4. 引述 http://zouyesheng.com/angular.html
“link 函数是由两部分组成,所谓的 preLink 和 postLink 。区别在于执行顺序,特别是在指令层级嵌套的结构之下, postLink 是在所有的子级指令 link 完成之后才最后执行的。 compile 如果只返回一个函数,则这个函数被作为 postLink 使用”
也就是说如果一个directive的template里面还有directive,那么它自己的postLink得等template里面那个directive的postLink执行完才能执行(link默认就是postLink)

5. 如果自己感觉把它变成DOM实体比较舒服那就用directive,一般来说DOM都是独立实体(单独的controller,它的scope相当于directive里的scope: true)
marrow
2013-12-12 23:58:35 +08:00
L42y
2013-12-13 01:12:52 +08:00
@akinoniku

#1 所有 service 都是 singleton 的,官方有考虑在以后的版本中加入非 singleton 的 Service,不过原来的那份 Google Doc 我没翻出来,抱歉。像 @pythoner 所说,你可以把 Service 理解成 ORM,用来存储一些全局共享的数据,Factory 用于存放其他东西,你可以选择 expose 哪些东西,而其他的东西不 return。

#2 & #3 我目前的做法是分成很多个 module,方便测试和复用,比如一个网站分成 config, utility, auth, user, post 之类的几个大模块,每个模块下有更多的模块,比如 config.routes 构成这样的代码:angular.module('namespace', ['namespace.config']);angular.module('namespace.config', ['namespace.config.routes']);

#6 我倾向于都放在框架里完成,比如你的
L42y
2013-12-13 01:14:41 +08:00
呃,好像我在 Mac 下打了个 栗子 的图标结果后面的内容都被吞了 cc @Livid
L42y
2013-12-13 01:17:41 +08:00
补充一下,框架可以让你以(个人偏好的)更优方式组织代码,如果你已经选择了 AngularJS,为什么不按它的方式来完成这件事呢?
akinoniku
2013-12-13 17:46:05 +08:00
@L42y 谢谢,就是说同一个factory可以当普通的class用,new 一堆出来咯?
ThomasChan
2013-12-13 21:41:48 +08:00
ThomasChan
2013-12-13 21:43:10 +08:00
ThomasChan
2013-12-13 21:48:39 +08:00
luikore
2013-12-14 02:40:40 +08:00
angular 简单说就是 半个jquery + rivetsjs + backbone + DI
angular 教程视频这么多都无数人学不会, DI 有一定功劳. 不考虑老浏览器的话可以去掉 backbone model. 最后简简单单一个 rivetsjs 绑定原生对象就够了.
lyric
2013-12-31 14:32:29 +08:00
复杂 WebApp (单页面上绑定数超过2000个)不要使用 Angular,dirty checking 对性能有严重影响
akinoniku
2013-12-31 15:08:24 +08:00
@lyric 这么说用ng-view分离功能页面,每个页面保持专注简洁,大概就能萌
bigbee
2014-11-01 19:21:08 +08:00
创业团队求angularjs的熟手,有兴趣创业的请联系我,mymojing at 163 dot com

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX