1. Conversando
Um dia, o monitor da turma disse que os alunos queriam que eu desenvolvesse um catálogo de endereços que pudesse compartilhar o local, então eles simplesmente projetaram a função. Incluindo funções de usuário, postar no Weibo, compartilhar locais, etc. Desta vez, eu era um pouco egoísta. Para exercitar meus angulares recentemente assistidos, escolhi decisivamente a solução Node.js + mongodb + angular.js. Obviamente, a experiência de desenvolver node.js está se tornando cada vez mais profunda. Lembre -se, no ano passado, o líder me disse que eu deveria tentar fazer com que cada serviço do nó suportasse apenas uma função de negócios, para que possa ser mais conveniente manter. Naquela época, eu realmente queria tornar um serviço de nós muito poderoso. Agora parece que a abordagem do líder está correta, e eu prefiro destacar as funções de serviço do nó ...
2. Carregue diretamente os produtos secos
O serviço de banco de dados é implantado no Alibaba Cloud; O servidor de arquivos estático usa a página do GitHub.
Endereço do projeto do GitHub: https://github.com/vczero/ourtimes
Endereço de experiência on -line: http://vczero.github.io/tuban/main.html#/
Não tenho uma foto para dizer uma bola, deixe -me mostrar duas capturas de tela:
(1) Página inicial
(2) Livro de endereços
...... mais experiência online ...
Iii. Projeto
Projeto Total: https://github.com/vczero/ourtimes
Desenvolveu os serviços necessários: https://github.com/vczero/ourtimes/tree/master/server
Abra o Web PC Client: https://github.com/vczero/ourtimes/tree/master/client-web
Um sistema de gerenciamento de back-end simples foi desenvolvido: https://github.com/vczero/ourtimes/tree/master/client-admin
Todos são bem-vindos a Fork, Siga e compartilham o código para trabalhar juntos para construir o front-end.
4. Anexe o código do arquivo de entrada do terminal Web-PC Angular
A cópia do código é a seguinte:
var app = angular.module ('app', ['ui.router', 'ngcookies']);
var server_base_url = 'http://127.0.0.1:3000/';
// Inicialize a configuração
App.run (['$ Rootscope', função ($ rootscope) {
$ rootscope.appname = 'tuban.com';
$ rootscope.desc = 'Livro de endereços baseado em localização';
$ rootscope.author = 'rumor fantasma';
$ rootscope._email = '[email protected]';
}]);
// Lista de serviços verificados
App.Constant ('ServiceConfig', {
wei_content: server_base_url + 'wei/get',
wei_zan: server_base_url + 'wei/zan',
wei_comment: server_base_url + 'wei/comentário',
wei_create: server_base_url + 'wei/create',
user_get: server_base_url + 'user/get',
user_login: server_base_url + 'user/login',
user_register: server_base_url + 'user/register',
user_common: server_base_url + 'user/getCommon',
user_ben: server_base_url + 'user/getben',
user_self: server_base_url + 'user/getShy',
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/nome',
wei_get_token_page: server_base_url + 'wei/getbytoken',
wei_delete: server_base_url + 'wei/delete',
user_update_password: server_base_url + 'user/updatePassword',
artigo_get: server_base_url + 'artigo/get',
artigo_detail: server_base_url + 'artigo/get/id',
AMAP_URL: 'http://webapi.amap.com/maps?v=1.3&key=ad925c5003760094713775d64748d872&callback=init'
});
// JSON Parse
App.config (['$ httpprovider', função ($ httpprovider) {
$ httpprovider.defaults.headers.post ['content-type'] = 'Application/x-www-forma-urlencoded; charset = utf-8';
$ httpprovider.defaults.headers.put ['content-type'] = 'Application/x-www-forma-urlencoded; charset = utf-8';
$ httpprovider.defaults.transformRequest = [function (dados) {
var obj = [];
para (tecla var em dados) {
obj.push (chave + '=' + dados [key]);
}
retornar obj.join ('&');
}];
}]);
// configuração de roteamento
App.config (['$ stateprovider', '$ urlouterprovider',
função ($ stateprovider, $ urlrouterprovider) {
/*Roteamento de url*/
$ urlouterprovider.otherwise ("/");
/*Configuração de status*/
$ StateProvider
// Página inicial
.state ('índice', {
url: '/',
Visualizações: {
'': {
templateurl: 'Views/Index/Index.html',
},
'Cabeçalho@index': {
templateurl: 'Views/header.html',
Controlador: 'Headercontroller'
},
'Footer@index': {
templateurl: 'Views/Footer.html',
Controlador: ''
},
'weibo@index': {
templateurl: 'Views/Index/weibo.html',
Controlador: 'Weibocontroller'
},
'Artigo@index': {
templateurl: 'Views/Index/Article.html',
Controlador: 'ArticleController'
},
'Post@index': {
templateurl: 'Views/Index/Post.html',
Controlador: 'Pós -Weibocontroller'
}
}
})
.state ('login', {
url: '/login',
Visualizações: {
'': {
templateurl: 'Views/Login/Login.html',
Controlador: 'Logincontroller'
}
}
})
.State ('Register', {
URL: '/registra',
Visualizações: {
'': {
templateurl: 'Views/Register/Register.html',
Controlador: 'Registercontroller'
}
}
})
.state ('contatos', {
URL: '/contatos',
Visualizações: {
'': {
templateurl: 'Views/contacts/contacts.html',
Controlador: ''
},
'Cabeçalho@contatos': {
templateurl: 'Views/header.html',
Controlador: 'Headercontroller'
},
'Userinfo@contatos': {
templateurl: 'Views/contats/userinfo.html',
Controlador: 'userInfocontroller'
},
'mapa@contatos': {
templateurl: 'Views/contacts/map.html',
Controlador: 'mapcontroller'
},
'Search@contatos': {
templateurl: 'Views/contacts/Search.html',
Controlador: 'SearchUserController'
}
}
})
.State ('UCENTER', {
URL: '/UCENTER',
Visualizações: {
'': {
templateurl: 'views/ucenter/ucenter.html',
Controlador: ''
},
'Cabeçalho@uCenter': {
templateurl: 'Views/header.html',
Controlador: 'Headercontroller'
},
'userweibo@ucenter': {
templateurl: 'views/ucenter/weibo.html',
Controlador: 'ucweibocontroller'
},
'UserDetailInfo@ucenter': {
templateurl: 'Views/uCenter/user.html',
Controlador: 'UcuserController'
},
'Footer@uCenter': {
templateurl: 'Views/Footer.html',
Controlador: ''
}
}
})
.State ('Artigo', {
URL: '/artigo/: id',
Visualizações: {
'': {
templateurl: 'visualizações/artigo/artigo.html',
Controlador: ''
},
'Header@Artigo': {
templateurl: 'Views/header.html',
Controlador: 'Headercontroller'
},
'Artigo_content@artigo': {
templateurl: 'Views/Artigo/Artigo_content.html',
Controlador: 'articletailcontroller'
},
'Footer@artigo': {
templateurl: 'Views/Footer.html',
Controlador: ''
}
}
})
.State ('artigo_index', {
URL: '/artigo',
Visualizações: {
'': {
templateurl: 'visualizações/artigo/artigo.html',
Controlador: ''
},
'Header@artigo_index': {
templateurl: 'Views/header.html',
Controlador: 'Headercontroller'
},
'Artigo_content@artigo_index': {
templateurl: 'Views/Artigo/Artigo_content.html',
Controlador: 'articletailcontroller'
},
'Footer@artigo_index': {
templateurl: 'Views/Footer.html',
Controlador: ''
}
}
});
}]);