我们正在用 angularjs 开发一个项目,前端是 mvc 的结构,有一个统一的入口文件 index.html
每个功能模块的逻辑都在不同的 controller 里面, index.html 会加载所有的 controller 文件
可是,多人协作开发过程中时,如 Dev A 的 controller 里面 js 出错了,就会导致 Dev B 无法正常调试。
请问大家如何解决这个问题的呢?
1
forsigner 2016-03-06 13:35:39 +08:00
只要组件化做的好, controller 的分层做的好, Dev A 的 controller 里的 js 出错是不会影响 Dev B 的调试的
|
2
crysislinux 2016-03-06 15:28:03 +08:00
按楼上说的分层做好,然后提交之前都确认下调试器 console 里有 js error 不。我感觉你是在说有人的 js 出错了,导致 js 整个不运行了
|
3
mistershi OP @crysislinux 是的。我说的就是这个意思。
|
4
mistershi OP @crysislinux 请问这个问题,如何处理呢?
|
5
SoloCompany 2016-03-06 16:03:58 +08:00 via iPhone
开发环境不要打成一个包不就得了?
|
6
litefy 2016-03-06 16:59:48 +08:00 via Android
觉得可以用 git 来解决
|
7
hosealee 2016-03-06 23:51:46 +08:00
做懒加载,用好依赖注入
|
8
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 的依赖,调试自己的就好 。 |
9
sfree2005 2016-03-07 06:05:33 +08:00
补充上一条: 其实也不一定要 TTD (个人觉得这个是最好), 你也可以开始调试的时候写 Unit test 也行。各种 testing 按照网上的教程就好, unit test 就是要 ngmock mock 掉那些依赖
|
10
crysislinux 2016-03-07 14:18:04 +08:00
@mistershi 不知道你们的任务是怎么分的。可以按照 route 切分任务,不同的人负责不同 route 下的实现,这样只要打包工具能跑过,且你不跑到其他人的 route 下,即使其他人的代码运行时会错误,你也应该也不会有问题
|
11
mistershi OP @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 统一加载进来的。 我想问的就是,如何解决这个互相冲突的问题 (也不知道我说明白了没有) |
12
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 |
14
crysislinux 2016-03-08 20:18:10 +08:00
看上面说的,你们开发的时候看效果都是部署在一起的么?
|
15
mistershi OP @crysislinux 现在的确是部署在一起的。只有一个环境。
|
16
crysislinux 2016-03-09 14:37:59 +08:00
@mistershi 这样就不太好。最好是开发的时候自己是自己的,然后合并到 develop 分支的时候再部署到测试服务器,测试好了再合并到 master
|
17
mistershi OP @crysislinux 是的。以前没想到,现在正在向这个模式去改变。
|