首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRUD应用程序的理想代码/文件夹结构

CRUD应用程序的理想代码/文件夹结构
EN

Stack Overflow用户
提问于 2014-09-19 17:18:45
回答 1查看 872关注 0票数 0

作为学习angular的一部分,我决定创建一个简单的bug跟踪应用程序,使用ng-boilerplate作为起点,因为我喜欢他们的文件夹结构方法。我已经得到了认证,并转移到了“成员区域”,该区域列出了所有用户的项目,并允许他们创建新项目,并最终向每个项目添加bug。

关于以“angular方式”构建代码,我有一点分析瘫痪。到目前为止,我有:

代码语言:javascript
复制
- member
— add-project
—— add.js
—— add.tpl.html
- member.tpl.html
- member.js

在member.js中,我有一个memberctrl,它列出用户的项目并添加一个新项目,调用一个名为ProjectsService (也在member.js中)的工厂来完成这两项工作。ProjectsService目前有两个方法,query()和add(),尽管很明显这会增加到包括update,delete等。

add- add.js文件夹中的项目目前看起来有点多余,但我担心成员控制器会增长(编辑项目,添加bug,编辑bug等),那么未来理想的结构是什么?我是否应该在add.js中有一个单独的addProjectCtrl来单独添加项目?我是否应该从ProjectsService中删除add(),并将其也移到add.js中自己的工厂中?

member.js的代码如下

代码语言:javascript
复制
.controller('MemberCtrl', function MemberCtrl($scope, $location,ProjectsService) {
        $scope.projects = [];
        $scope.refresh = function () {
            ProjectsService.query()
                .then(function (data) {
                    $scope.projects = data;
                });
        };


    $scope.addProject = function (project) {
        ProjectsService.add(project).then(function (data) {
            $scope.projects = data;
            $location.path("/member");
        });
    };


    //is this just going to get bigger and bigger?

    $scope.refresh();
})

.factory('ProjectsService', ['$http', '$q', function ($http, $q) {
    return {
        query: function () {
            var deferred = $q.defer();
            $http.get('/api/get-projects')
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data) {
                    deferred.reject(data);
                });

            return deferred.promise;
        },
        add: function (project) {
            var deferred = $q.defer();
            $http.post('/api/create-project', project)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data) {
                    deferred.reject(data);
                });

            return deferred.promise;
        }

    };
}])

和add.js的代码

代码语言:javascript
复制
angular.module( 'ngBoilerplate.member.add-project', [
    'ui.router',
    'placeholders',
    'ui.bootstrap',
    'ngBoilerplate.config',
    'ngBoilerplate.member'
])


    .config(function config( $stateProvider,USER_ROLES ) {
        $stateProvider.state( 'member.add-project', {
            url: '/add-project',
            views: {
                "main": {
                    templateUrl: 'member/add-project/add.tpl.html'
                }
            },
            data:{ pageTitle: 'Add Project'

            }
        });
    })


;
EN

回答 1

Stack Overflow用户

发布于 2014-09-19 17:25:00

看看official angular-seed project,或者Yeoman angular generator,它将为你开始你的angular项目提供一个基本的结构。

通常一个好的做法是将控制器/服务/指令拆分到不同的文件中。

有关更详细的代码指南,请阅读流行的angular-style-guide。从其中提取,下面是一个结构示例:

代码语言:javascript
复制
.
├── app
│   ├── app.js
│   ├── controllers
│   │   ├── home
│   │   │   ├── FirstCtrl.js
│   │   │   └── SecondCtrl.js
│   │   └── about
│   │       └── ThirdCtrl.js
│   ├── directives
│   │   ├── home
│   │   │   └── directive1.js
│   │   └── about
│   │       ├── directive2.js
│   │       └── directive3.js
│   ├── filters
│   │   ├── home
│   │   └── about
│   └── services
│       ├── CommonService.js
│       ├── cache
│       │   ├── Cache1.js
│       │   └── Cache2.js
│       └── models
│           ├── Model1.js
│           └── Model2.js
├── partials
├── lib
└── test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25930502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档