请问多人协作开发一个 angularjs 项目时,如何避免互相影响?

2016-03-06 13:20:43 +08:00
 mistershi

我们正在用 angularjs 开发一个项目,前端是 mvc 的结构,有一个统一的入口文件 index.html

每个功能模块的逻辑都在不同的 controller 里面, index.html 会加载所有的 controller 文件

可是,多人协作开发过程中时,如 Dev A 的 controller 里面 js 出错了,就会导致 Dev B 无法正常调试。

请问大家如何解决这个问题的呢?

3327 次点击
所在节点    程序员
17 条回复
forsigner
2016-03-06 13:35:39 +08:00
只要组件化做的好, controller 的分层做的好, Dev A 的 controller 里的 js 出错是不会影响 Dev B 的调试的
crysislinux
2016-03-06 15:28:03 +08:00
按楼上说的分层做好,然后提交之前都确认下调试器 console 里有 js error 不。我感觉你是在说有人的 js 出错了,导致 js 整个不运行了
mistershi
2016-03-06 15:59:41 +08:00
@crysislinux 是的。我说的就是这个意思。
mistershi
2016-03-06 16:00:20 +08:00
@crysislinux 请问这个问题,如何处理呢?
SoloCompany
2016-03-06 16:03:58 +08:00
开发环境不要打成一个包不就得了?
litefy
2016-03-06 16:59:48 +08:00
觉得可以用 git 来解决
hosealee
2016-03-06 23:51:46 +08:00
做懒加载,用好依赖注入
sfree2005
2016-03-07 05:57:04 +08:00
1. 可以参考这个 style guide ,各种依赖更清晰更结构化: https://github.com/johnpapa/angular-styleguide/tree/master/a1
2. 使用 git ,我想这个你们已经做了吧
3. 使用 TTD 。 写 unit test 在先, 用 ngmock mock 下其他 Dev 的依赖,调试自己的就好 。
sfree2005
2016-03-07 06:05:33 +08:00
补充上一条: 其实也不一定要 TTD (个人觉得这个是最好), 你也可以开始调试的时候写 Unit test 也行。各种 testing 按照网上的教程就好, unit test 就是要 ngmock mock 掉那些依赖
crysislinux
2016-03-07 14:18:04 +08:00
@mistershi 不知道你们的任务是怎么分的。可以按照 route 切分任务,不同的人负责不同 route 下的实现,这样只要打包工具能跑过,且你不跑到其他人的 route 下,即使其他人的代码运行时会错误,你也应该也不会有问题
mistershi
2016-03-07 15:46:56 +08:00
@crysislinux

我们的任务是按照大功能分的。每人负责一个大功能。例如 A 负责用户(包括用户注册、登录、退出等等), B 负责文章(包括文章列表、显示、评论等等)。

我们的 index.html 是入口文件。这个文件里加载了所有人写的 js 功能文件。例如:
controller/user.js (由 A 编写)
model/user.js (由 A 编写)
controller/articel.js (由 B 编写)
model/articel.js (由 B 编写)

调试时,每个人都是用浏览器看效果。打开的方式是:
http://server_ip/index.html#/user
http://server_ip/index.html#/article

---------

现在的问题是:
在开发过程中,如果 A 用户写的 user.js 出现了错误(例如语法错误),那么就会导致 B 用户无法在浏览器中调试。因为大家的 js 文件都是被 index.html 统一加载进来的。

我想问的就是,如何解决这个互相冲突的问题

(也不知道我说明白了没有)
sfree2005
2016-03-08 08:48:43 +08:00
看了你的描述,我的想法是: 每个 Dev 都有自己的 Working Copy , 也就是

Dev A 调试在 http://serverA_ip/index.html#/user
Dev B 调试在 http://serverB_ip/index.html#/article

大家都把调试好的功能 git merge 到
http://server_ip/

这就需要团队各个成员明白 git workflow ,这样就不会互相干扰。

如果 Dev B 调试时需要 Dev A 的正在调试的某个依赖,就用 Unit Testing 来 mock
mistershi
2016-03-08 10:16:19 +08:00
@sfree2005 这个方法比较靠谱,可以解决我们的问题,感谢!。
crysislinux
2016-03-08 20:18:10 +08:00
看上面说的,你们开发的时候看效果都是部署在一起的么?
mistershi
2016-03-09 13:08:07 +08:00
@crysislinux 现在的确是部署在一起的。只有一个环境。
crysislinux
2016-03-09 14:37:59 +08:00
@mistershi 这样就不太好。最好是开发的时候自己是自己的,然后合并到 develop 分支的时候再部署到测试服务器,测试好了再合并到 master
mistershi
2016-03-09 14:59:01 +08:00
@crysislinux 是的。以前没想到,现在正在向这个模式去改变。

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

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

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

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

© 2021 V2EX