1. Parler
Un jour, le moniteur de classe a déclaré que les étudiants voulaient que je développe un carnet d'adresses qui pouvait partager l'emplacement, ils ont donc simplement conçu la fonction elles-mêmes. Y compris les rôles des utilisateurs, publier sur Weibo, partager des emplacements, etc. Cette fois, j'étais un peu égoïste. Afin d'exercer mon AngularJS récemment regardé, j'ai choisi de manière décisive la solution Node.js + MongoDB + Angular.js. Bien sûr, l'expérience du développement de Node.js devient de plus en plus profonde. N'oubliez pas que l'année dernière, le leader m'a dit que je devrais essayer de faire de chaque service de support de nœud une seule fonction commerciale, afin qu'il puisse être plus pratique à maintenir. À ce moment-là, je voulais vraiment rendre un service de nœud très puissant. Maintenant, il semble que l'approche du leader soit correcte, et je préfère distinguer les fonctions de service de nœud ...
2. Téléchargez directement les produits secs
Le service de base de données est déployé sur Alibaba Cloud; Le serveur de fichiers statique utilise la page GitHub.
Adresse du projet GitHub: https://github.com/vczero/ourtimes
Adresse d'expérience en ligne: http://vczero.github.io/tuban/main.html#/
Je n'ai pas de photo pour dire une balle, laissez-moi vous montrer deux captures d'écran:
(1) Page d'accueil
(2) Carnet d'adresses
...... plus d'expérience en ligne ...
Iii. Projet
Projet total: https://github.com/vczero/ourtimes
Développé les services requis: https://github.com/vczero/ourtimes/tree/master/server
Ouvrez le client Web PC: https://github.com/vczero/ourtimes/tree/master/client-web
Un système de gestion backend simple a été développé: https://github.com/vczero/ourtimes/tree/master/client-admin
Tout le monde est le bienvenu à Fork, suivez et partagez du code pour travailler ensemble pour construire le frontal.
4. Joindre le code de fichier d'entrée du terminal Web-PC Angular
La copie de code est la suivante:
var app = angular.module ('app', ['ui.router', 'ngcookies']);
var server_base_url = 'http://127.0.0.1:3000/';
// Initialiser la configuration
app.run (['$ rootscope', fonction ($ rootscope) {
$ rootscope.appname = 'tuban.com';
$ rootscope.desc = 'livre d'adresses basé sur la localisation';
$ rootscope.author = 'Ghost Rumor';
$ rootscope._email = '[email protected]';
}]);
// Liste des services vérifiés
app.Constant ('ServiceConfig', {
wei_content: server_base_url + 'wei / get',
wei_zan: server_base_url + 'wei / zan',
wei_comment: server_base_url + 'wei / comment',
wei_create: server_base_url + 'wei / création',
user_get: server_base_url + 'user / get',
user_login: server_base_url + 'user / ligin',
user_register: server_base_url + 'utilisateur / registre',
user_common: server_base_url + 'user / getCommon',
user_ben: server_base_url + 'user / getben',
user_self: server_base_url + 'user / getfelf',
user_common_update: server_base_url + 'utilisateur / updatecommon',
user_ben_update: server_base_url + 'user / updateben',
user_ben_get_name: server_base_url + 'utilisateur / singleben / name',
user_common_get_nickname: server_base_url + 'user / getCommon / name',
user_ben_get_realname: server_base_url + 'utilisateur / singleben / name',
wei_get_token_page: server_base_url + 'wei / getbytoken',
wei_delete: server_base_url + 'wei / delete',
user_update_password: server_base_url + 'user / updatepassword',
Article_get: server_base_url + 'article / get',
Article_detail: server_base_url + 'article / get / id',
AMAP_URL: 'http://webapi.amap.com/maps?v=1.3&key=ad925c5003760094713775d64748d872&callback=init'
});
// JSON Analyse
app.config (['$ httpprovider', fonction ($ httpprovider) {
$ httpprovider.defaults.heders.post ['Content-Type'] = 'Application / X-WWW-Form-Urlencoded; charSet = UTF-8';
$ httpprovider.defaults.heders.put ['Content-Type'] = 'Application / x-www-form-urlencoded; charset = utf-8';
$ httpprovider.defaults.transformRequest = [fonction (data) {
var obj = [];
pour (clé var dans les données) {
obj.push (key + '=' + data [key]);
}
retour obj.join ('&');
}];
}]);
// Configuration de routage
app.config (['$ stateprovider', '$ urlrouterprovider',
fonction ($ stateprovider, $ urlrouterprovider) {
/ * Routage d'URL * /
$ urlrouterprovider.wore ("/");
/ * Configuration d'état * /
$ StateProvider
// première page
.State ('index', {
URL: '/',
Vues: {
'': {
TemplateUrl: «View / index / index.html»,
},
'en-tête @ index': {
TemplateUrl: «Views / header.html»,
Contrôleur: «HerecController»
},
'pied @ index': {
TemplateUrl: «Views / Footer.html»,
Contrôleur: ''
},
'Weibo @ index': {
TemplateUrl: «Views / index / Weibo.html»,
Contrôleur: «Weibocontroller»
},
'Article @ index': {
TemplateUrl: «View / index / article.html»,
Contrôleur: «ArticleController»
},
'post @ index': {
TemplateUrl: «View / index / post.html»,
Contrôleur: «Postweibocontroller»
}
}
})
.State ('Login', {
URL: '/ Login',
Vues: {
'': {
TemplateUrl: «Vues / Login / Login.html»,
contrôleur: «LoginController»
}
}
})
.State ('registre', {
URL: «/ registre»,
Vues: {
'': {
TemplateUrl: «View / Register / Register.html»,
Contrôleur: «RegisterController»
}
}
})
.State ('contacts', {
URL: «/ contacts»,
Vues: {
'': {
TemplateUrl: «Views / Contacts / Contacts.html»,
Contrôleur: ''
},
'Header @ Contacts': {
TemplateUrl: «Views / header.html»,
Contrôleur: «HerecController»
},
'userInfo @ contacts': {
TemplateUrl: «Views / Contacts / UserInfo.html»,
Contrôleur: «UserInfocontroller»
},
'map @ contacts': {
TemplateUrl: «Views / Contacts / map.html»,
Contrôleur: «MapController»
},
'search @ contacts': {
TemplateUrl: «Views / Contacts / Search.html»,
Contrôleur: 'SearchUserController'
}
}
})
.State ('ucenter', {
URL: '/ ucenter',
Vues: {
'': {
TemplateUrl: 'vues / ucenter / ucenter.html',
Contrôleur: ''
},
'Header @ Ucenter': {
TemplateUrl: «Views / header.html»,
Contrôleur: «HerecController»
},
'userweibo @ ucenter': {
TemplateUrl: 'Views / Ucenter / Weibo.html',
Contrôleur: «Ucweibocontroller»
},
'userdetailinfo @ ucenter': {
TemplateUrl: 'Views / ucenter / user.html',
Contrôleur: «UCuserController»
},
'pied @ ucenter': {
TemplateUrl: «Views / Footer.html»,
Contrôleur: ''
}
}
})
.State ('Article', {
URL: '/ article /: id',
Vues: {
'': {
TemplateUrl: «Vues / Article / Article.html»,
Contrôleur: ''
},
'Header @ Article': {
TemplateUrl: «Views / header.html»,
Contrôleur: «HerecController»
},
'Article_content @ Article': {
TemplateUrl: «Vues / Article / Article_Content.html»,
Contrôleur: «ArticleDetailController»
},
'pied @ article': {
TemplateUrl: «Views / Footer.html»,
Contrôleur: ''
}
}
})
.State ('Article_index', {
URL: «/ article»,
Vues: {
'': {
TemplateUrl: «Vues / Article / Article.html»,
Contrôleur: ''
},
'tête @ article_index': {
TemplateUrl: «Views / header.html»,
Contrôleur: «HerecController»
},
'Article_content @ Article_index': {
TemplateUrl: «Vues / Article / Article_Content.html»,
Contrôleur: «ArticleDetailController»
},
'pied @ article_index': {
TemplateUrl: «Views / Footer.html»,
Contrôleur: ''
}
}
});
}]);