码迷,mamicode.com
首页 > 数据库 > 详细

AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero)

时间:2014-12-27 01:33:14      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

一、闲扯

有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能。包括用户角色、发表微博、共享位置等等。这次也是有点私心的,为了锻炼最近看的angularjs,于是果断选择Node.js + MongoDB + angular.js的方案。当然,开发Node.js的体会越来越深刻。记得,去年leader告诉我说尽量让node的每一个服务只支撑一个业务功能,这样才能更方便的维护。当时特别想把一个Node服务做的特别强大。现在看来leader的做法是对的,我更加倾向于把node服务功能单一化...

二、直接上干货

数据库服务部署在阿里云;静态文件服务器采用的是Github page。

Github项目地址:https://github.com/vczero/OurTimes

线上体验地址:http://vczero.github.io/tuban/main.html#/

没图说个球啊,上图给大家看看2张截图:

(1)首页

技术分享

(2)通讯录

技术分享

 ....更多去线上体验...

三、项目

总项目: https://github.com/vczero/OurTimes

开发了所需要的服务:https://github.com/vczero/OurTimes/tree/master/server

开了web pc client: https://github.com/vczero/OurTimes/tree/master/client-web

开发了简易的后台管理系统:https://github.com/vczero/OurTimes/tree/master/client-admin

欢迎大家fork ,follow和共享代码,一起构建前端而努力。

 

四、附上web-pc端Angular的入口文件代码

技术分享
  1 var app = angular.module(‘app‘, [‘ui.router‘, ‘ngCookies‘]);
  2 var SERVER_BASE_URL = ‘http://127.0.0.1:3000/‘;
  3 
  4 //初始化配置
  5 app.run([‘$rootScope‘, function($rootScope) {
  6     $rootScope.appName = ‘图班网‘;
  7     $rootScope.desc = ‘基于位置的通讯录‘;
  8     $rootScope.author = ‘鬼谣‘;
  9     $rootScope._email = ‘wlhmyit@126.com‘;
 10 }]);
 11 
 12 
 13 
 14 //调用的服务列表
 15 app.constant(‘ServiceConfig‘, {
 16     wei_content: SERVER_BASE_URL + ‘wei/get‘,
 17     wei_zan: SERVER_BASE_URL + ‘wei/zan‘,
 18     wei_comment: SERVER_BASE_URL + ‘wei/comment‘,
 19     wei_create: SERVER_BASE_URL + ‘wei/create‘,
 20     user_get: SERVER_BASE_URL + ‘user/get‘,
 21     user_login: SERVER_BASE_URL + ‘user/login‘,
 22     user_register: SERVER_BASE_URL + ‘user/register‘,
 23     user_common: SERVER_BASE_URL + ‘user/getCommon‘,
 24     user_ben: SERVER_BASE_URL + ‘user/getBen‘,
 25     user_self: SERVER_BASE_URL + ‘user/getSelf‘,
 26     user_common_update: SERVER_BASE_URL + ‘user/updateCommon‘,
 27     user_ben_update: SERVER_BASE_URL + ‘user/updateBen‘,
 28     user_ben_get_name: SERVER_BASE_URL + ‘user/singleBen/name‘,
 29     user_common_get_nickname: SERVER_BASE_URL + ‘user/getCommon/name‘,
 30     user_ben_get_realname: SERVER_BASE_URL + ‘user/singleBen/name‘,
 31     wei_get_token_page: SERVER_BASE_URL + ‘wei/getByToken‘,
 32     wei_delete: SERVER_BASE_URL + ‘wei/delete‘,
 33     user_update_password: SERVER_BASE_URL + ‘user/updatePassword‘,
 34     article_get: SERVER_BASE_URL + ‘article/get‘,
 35     article_detail: SERVER_BASE_URL + ‘article/get/id‘,
 36     amap_url: ‘http://webapi.amap.com/maps?v=1.3&key=ad925c5003760094713775d64748d872&callback=init‘
 37 });
 38 
 39 
 40 //JSON parse
 41 app.config([‘$httpProvider‘, function($httpProvider) {
 42     $httpProvider.defaults.headers.post[‘Content-Type‘] = ‘application/x-www-form-urlencoded;charset=utf-8‘;
 43     $httpProvider.defaults.headers.put[‘Content-Type‘] = ‘application/x-www-form-urlencoded;charset=utf-8‘;
 44     $httpProvider.defaults.transformRequest = [function(data) {
 45         var obj = [];
 46         for (var key in data) {
 47             obj.push(key + ‘=‘ + data[key]);
 48         }
 49         return obj.join(‘&‘);
 50     }];
 51 
 52 }]);
 53 
 54 //路由配置
 55 app.config([‘$stateProvider‘, ‘$urlRouterProvider‘, 
 56 function($stateProvider, $urlRouterProvider) {
 57     /*URL路由*/
 58     $urlRouterProvider.otherwise("/");
 59     /*状态配置*/
 60     $stateProvider
 61     //首页
 62     .state(‘index‘, {
 63         url: ‘/‘,
 64         views: {
 65             ‘‘: {
 66                 templateUrl: ‘views/index/index.html‘,
 67             },
 68             ‘header@index‘: {
 69                 templateUrl: ‘views/header.html‘,
 70                 controller: ‘HeaderController‘
 71             },
 72             ‘footer@index‘: {
 73                 templateUrl: ‘views/footer.html‘,
 74                 controller: ‘‘
 75             },
 76             ‘weibo@index‘: {
 77                 templateUrl: ‘views/index/weibo.html‘,
 78                 controller: ‘WeiboController‘
 79             },
 80             ‘article@index‘: {
 81                 templateUrl: ‘views/index/article.html‘,
 82                 controller: ‘ArticleController‘
 83             },
 84             ‘post@index‘: {
 85                 templateUrl: ‘views/index/post.html‘,
 86                 controller: ‘PostWeiboController‘
 87             }
 88         }
 89     })
 90 
 91     .state(‘login‘, {
 92         url: ‘/login‘,
 93         views: {
 94             ‘‘: {
 95                 templateUrl: ‘views/login/login.html‘,
 96                 controller: ‘LoginController‘
 97             }
 98         }
 99     })
100 
101     .state(‘register‘, {
102         url: ‘/register‘,
103         views: {
104             ‘‘: {
105                 templateUrl: ‘views/register/register.html‘,
106                 controller: ‘RegisterController‘
107             }
108         }
109     })
110 
111     .state(‘contacts‘, {
112         url: ‘/contacts‘,
113         views: {
114             ‘‘: {
115                 templateUrl: ‘views/contacts/contacts.html‘,
116                 controller: ‘‘
117             },
118             ‘header@contacts‘: {
119                 templateUrl: ‘views/header.html‘,
120                 controller: ‘HeaderController‘
121             },
122             ‘userinfo@contacts‘: {
123                 templateUrl: ‘views/contacts/userinfo.html‘,
124                 controller: ‘UserInfoController‘
125             },
126             ‘map@contacts‘: {
127                 templateUrl: ‘views/contacts/map.html‘,
128                 controller: ‘MapController‘
129             },
130             ‘search@contacts‘: {
131                 templateUrl: ‘views/contacts/search.html‘,
132                 controller: ‘SearchUserController‘
133             }
134         }
135     })
136     
137     .state(‘ucenter‘, {
138         url: ‘/ucenter‘,
139         views: {
140             ‘‘: {
141                 templateUrl: ‘views/ucenter/ucenter.html‘,
142                 controller: ‘‘
143             },
144             ‘header@ucenter‘: {
145                 templateUrl: ‘views/header.html‘,
146                 controller: ‘HeaderController‘
147             },
148             ‘userWeibo@ucenter‘: {
149                 templateUrl: ‘views/ucenter/weibo.html‘,
150                 controller: ‘UcWeiboController‘
151             },
152             ‘userDetailInfo@ucenter‘: {
153                 templateUrl: ‘views/ucenter/user.html‘,
154                 controller: ‘UcUserController‘
155             },
156             ‘footer@ucenter‘: {
157                 templateUrl: ‘views/footer.html‘,
158                 controller: ‘‘
159             }
160         }
161     })
162     
163     .state(‘article‘, {
164         url: ‘/article/:id‘,
165         views: {
166             ‘‘: {
167                 templateUrl: ‘views/article/article.html‘,
168                 controller: ‘‘
169             },
170             ‘header@article‘: {
171                 templateUrl: ‘views/header.html‘,
172                 controller: ‘HeaderController‘
173             },
174             ‘article_content@article‘: {
175                 templateUrl: ‘views/article/article_content.html‘,
176                 controller: ‘ArticleDetailController‘
177             },
178             ‘footer@article‘: {
179                 templateUrl: ‘views/footer.html‘,
180                 controller: ‘‘
181             }
182         }
183     })
184     
185     .state(‘article_index‘, {
186         url: ‘/article‘,
187         views: {
188             ‘‘: {
189                 templateUrl: ‘views/article/article.html‘,
190                 controller: ‘‘
191             },
192             ‘header@article_index‘: {
193                 templateUrl: ‘views/header.html‘,
194                 controller: ‘HeaderController‘
195             },
196             ‘article_content@article_index‘: {
197                 templateUrl: ‘views/article/article_content.html‘,
198                 controller: ‘ArticleDetailController‘
199             },
200             ‘footer@article_index‘: {
201                 templateUrl: ‘views/footer.html‘,
202                 controller: ‘‘
203             }
204         }
205     });
206 
207 
208 }]);
View Code

 技术分享

AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero)

标签:

原文地址:http://www.cnblogs.com/vczero/p/tuban_1.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!