1. Hablando
Un día, el monitor de clase dijo que los estudiantes querían que desarrollara una libreta de direcciones que pudiera compartir la ubicación, por lo que simplemente diseñaron la función ellos mismos. Incluyendo roles de usuario, publicar en Weibo, compartir ubicaciones, etc. Esta vez era un poco egoísta. Para ejercer mis AngularJS recientemente visto, elegí decisivamente la solución Node.js + MongoDB + Angular.js. Por supuesto, la experiencia de desarrollar Node.js se está volviendo cada vez más profunda. Recuerde, el año pasado, el líder me dijo que debería intentar hacer que cada servicio de soporte de nodo solo una función comercial, para que pueda ser más conveniente de mantener. En ese momento, realmente quería hacer que un servicio de nodo fuera muy poderoso. Ahora parece que el enfoque del líder es correcto, y prefiero destacar las funciones de servicio de nodo ...
2. Cargue directamente los productos secos
El servicio de la base de datos se implementa en Alibaba Cloud; El servidor de archivos estáticos utiliza la página GitHub.
Dirección del proyecto GitHub: https://github.com/vczero/ourtimes
Dirección de experiencia en línea: http://vczero.github.io/tuban/main.html#/
No tengo una foto para decir una pelota, déjame mostrarte dos capturas de pantalla:
(1) Página de inicio
(2) Libra de direcciones
...... Más experiencia en línea ...
Iii. Proyecto
Proyecto total: https://github.com/vczero/ourtimes
Desarrolló los servicios requeridos: https://github.com/vczero/ourtimes/tree/master/server
Abra el cliente de PC web: https://github.com/vczero/ourtimes/tree/master/client-web
Se ha desarrollado un sistema de gestión de backend simple: https://github.com/vczero/ourtimes/tree/master/client-admin
Todos son bienvenidos a Fork, sigan y compartan código para trabajar juntos para construir el front-end.
4. Adjunte el código de archivo de entrada del terminal Web-PC Angular
La copia del código es la siguiente:
var app = angular.module ('app', ['ui.router', 'ngcookies']);
var server_base_url = 'http://127.0.0.1:3000/';
// Inicializar la configuración
app.run (['$ rootscope', function ($ rootscope) {
$ rootscope.appname = 'tuban.com';
$ rootscope.desc = 'Libro de direcciones basado en la ubicación';
$ rootscope.author = 'rumor fantasma';
$ rootscope._email = '[email protected]';
}]);
// Lista de servicio marcada
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/create',
user_get: server_base_url + 'user/get',
user_login: server_base_url + 'user/inicio de sesión,
user_register: server_base_url + 'user/registro',
user_common: server_base_url + 'user/getcommon',
user_ben: server_base_url + 'user/getben',
user_self: server_base_url + 'user/getSelf',
user_common_update: server_base_url + 'user/updateCommon',
user_ben_update: server_base_url + 'user/updateBen',
user_ben_get_name: server_base_url + 'user/singleben/name',
user_common_get_nickname: server_base_url + 'user/getcommon/name',
user_ben_get_realname: server_base_url + 'user/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',
Artículo_get: server_base_url + 'artículo/get',
artículo_detail: server_base_url + 'artículo/get/id',
AMAP_URL: 'http://webapi.amap.com/maps?v=1.3&key=ad925c5003760094713775d64748d872&callback=init'
});
// JSON PARSE
app.config (['$ httprovider', function ($ httpprovider) {
$ httpprovider.defaults.headers.post ['content-type'] = 'application/x-www-form-urlencoded; charset = utf-8';
$ httpprovider.defaults.headers.put ['content-type'] = 'Application/x-www-form-urlencoded; charset = utf-8';
$ httpprovider.defaults.transformRequest = [function (data) {
var obj = [];
for (clave var en datos) {
obj.push (key + '=' + data [key]);
}
regresar obj.Join ('&');
}];
}]);
// Configuración de enrutamiento
app.config (['$ stateProvider', '$ urlrouterProvider',
función ($ stateProvider, $ urlrouterProvider) {
/*Enrutamiento de URL*/
$ urlrouterProvider.otherwise ("/");
/*Configuración de estado*/
$ StateProvider
//página delantera
.state ('índice', {
URL: '/',
Vistas: {
'': {
TemplateUrl: 'Vistas/index/index.html',
},
'Header@index': {
TemplateUrl: 'Vistas/Header.html',
Controlador: 'HeaderController'
},
'Footer@index': {
TEMPLATURL: 'Vistas/footer.html',
Controlador: ''
},
'weibo@index': {
TemplateUrl: 'Vistas/index/weibo.html',
Controlador: 'Weibocontroller'
},
'Artículo@index': {
TEMPLATURL: 'Vistas/index/artículo.html',
Controlador: 'articlecontroller'
},
'Post@index': {
TemplateUrl: 'Vistas/index/post.html',
Controlador: 'PostWeibocontroller'
}
}
})
.state ('Login', {
URL: '/Iniciar sesión,
Vistas: {
'': {
TEMPLATURL: 'Vistas/login/login.html',
Controlador: 'logincontroller'
}
}
})
.state ('registrar', {
URL: '/Registrarse',
Vistas: {
'': {
TemplateUrl: 'Vistas/registro/registro.html',
Controlador: 'RegisterController'
}
}
})
.state ('Contactos', {
URL: '/Contactos',
Vistas: {
'': {
TemplateUrl: 'Vistas/contactos/contactos.html',
Controlador: ''
},
'Header@Contacts': {
TemplateUrl: 'Vistas/Header.html',
Controlador: 'HeaderController'
},
'userInfo@contactos': {
TemplateUrl: 'Vistas/contactos/userInfo.html',
Controlador: 'UserInfocontroller'
},
'map@contactos': {
TemplateUrl: 'Vistas/contactos/map.html',
Controlador: 'MapController'
},
'Buscar@contactos': {
TemplateUrl: 'Vistas/contactos/search.html',
Controlador: 'SearchuserController'
}
}
})
.State ('Ucenter', {
URL: '/UCENTER',
Vistas: {
'': {
TemplateUrl: 'Vistas/UCenter/Ucenter.html',
Controlador: ''
},
'Header@Ucenter': {
TemplateUrl: 'Vistas/Header.html',
Controlador: 'HeaderController'
},
'userweibo@Ucenter': {
TemplateUrl: 'Vistas/Ucenter/Weibo.html',
Controlador: 'UCWeibocontroller'
},
'UserDetailinfo@UCenter': {
TEMPLATURL: 'Vistas/Ucenter/user.html',
Controlador: 'UcuserController'
},
'Footer@Ucenter': {
TEMPLATURL: 'Vistas/footer.html',
Controlador: ''
}
}
})
.state ('artículo', {
url: '/artículo/: id',
Vistas: {
'': {
TEMPLATURL: 'Vistas/artículo/artículo.html',
Controlador: ''
},
'Header@Artículo': {
TemplateUrl: 'Vistas/Header.html',
Controlador: 'HeaderController'
},
'Artículo_content@artículo': {
TEMPLATURL: 'Vistas/Artículo/Artículo_Content.html',
Controlador: 'ArticledetailController'
},
'pie de página@artículo': {
TEMPLATURL: 'Vistas/footer.html',
Controlador: ''
}
}
})
.state ('Artículo_index', {
URL: '/Artículo',
Vistas: {
'': {
TEMPLATURL: 'Vistas/artículo/artículo.html',
Controlador: ''
},
'Header@Artículo_index': {
TemplateUrl: 'Vistas/Header.html',
Controlador: 'HeaderController'
},
'Artículo_content@artículo_index': {
TEMPLATURL: 'Vistas/Artículo/Artículo_Content.html',
Controlador: 'ArticledetailController'
},
'Footer@artículo_index': {
TEMPLATURL: 'Vistas/footer.html',
Controlador: ''
}
}
});
}]);