Use Vue2
e Flask
para construir um blog pessoal RESTful com front-end e back-end separados.
Algumas instruções sobre o projeto podem ser encontradas aqui Sobre o IdealYard Caso não encontre o que precisa, por favor comunique via email ou Problemas;
Este blog é apenas para aprender princípios. A página front-end não implementa layout responsivo. Ainda não tenho energia para implementá-lo e não tenho tempo para cuidar do conteúdo do blog. Blogs sobre registros diários são atualizados principalmente em Biyuan Pastoral Records.
Se você é iniciante no Flask, recomendo um livro chinês: "Flask Web Development in Practice: Getting Started, Advanced and Principle Analysis". Ao mesmo tempo, é recomendável visitar mais este site: HelloFlask - Local de coleta de recursos do Flask
Devido à expiração do servidor, este blog não possui função de demonstração. Se alguém o tiver implantado online e puder fornecer um link de demonstração, ficaria muito grato. Por enquanto, clique no link abaixo para assistir a uma demonstração funcional simples. Use Vue e Flask para construir uma exibição de função de blog pessoal RESTful que separa o front e o back ends_bilibili(゜-゜)つロCheers~-bilibili
Pelas razões mencionadas aqui, Flask-RESTful não é mais uma boa escolha. Talvez flask-restx e Apiflask <desenvolvimento chinês> (nota: como esta estrutura está em desenvolvimento ativo, avalie cuidadosamente ao usá-la) sejam uma alternativa mais confiável. .Bom substituto. Se precisar aprender, também é recomendável migrar para uma extensão que seja mantida de forma mais ativa.
Preste atenção para distinguir a diferença entre extensões e estruturas. Consulte: Não compare Flask e FastAPI juntos |
Visto que "FastAPI deve ser comparado com a estrutura de API da Web baseada em Flask", quais são os objetos de comparação adequados? Embora Flask-RESTX, Flask-Rebar, flask-apispec, flask-smorest, Flask-RESTful e APIFairy tentem ser estruturas, eles ainda são extensões do Flask em termos de implementação específica.
Perceber
Se não for necessário, considere cuidadosamente se deseja aderir! Alguns alunos entraram no grupo e depois saíram do grupo sem dizer uma palavra. Esta operação de se inscrever para entrar no grupo e depois sair do grupo me causaria transtornos desnecessários.
3,6+
mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper
ou
[root@python] # mysql --version
mysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1
Banco de dados em modo de desenvolvimento: iyblog_dev
, você pode modificar a configuração aqui
CREATE USER ' USERNAME '@ ' localhost ' IDENTIFIED BY ' PASSWORD ' ;
-- 如果需要支持emoji,则设置utf8mb4编码。否则使用utf-8编码即可
CREATE DATABASE DATABASENAME CHARSET = utf8mb4;
grant all privileges on DATABASENAME. * to USERNAME@localhost identified by ' PASSWORD ' ;
flush privileges;
Depois de entrar no diretório atual, primeiro instale o pacote de gerenciamento pipenv por meio do pip
pip install pipenv [--user]
Instale dependências do Python
pipenv install
Configurar variáveis de ambiente
vi .flaskenv
Edite o arquivo dot.env, configure variáveis de ambiente e renomeie-o para .env
vi dot.env
mv dot.env .env # 参考 master 分支
Procure tutoriais na Internet para instalar e alterar as fontes do nó e do npm/yarn por conta própria.
A parte de implantação do front-end é demonstrada usando npm
como uma ferramenta de gerenciamento de pacotes. Se você usar yarn
para gerenciamento de pacotes, modifique-o você mesmo (se você usar o fio, definitivamente não encontrará package.json
).
Para configuração de comando front-end, consulte o capítulo scripts
em front/package.json
.
npm install
front/config/dev.env.js
para o endereço real da APInpm run dev
cd front
BASE_API
do ambiente prod
// /idealyard/front/config/prod.env.js
module . exports = {
NODE_ENV : '"production"' ,
BASE_API : '"http://192.168.116.21:5000/api"' // TODO:修改为真实API地址
}
router
para modo history
// path: front/src/router/index.js:16
const router = new VueRouter ( {
// https://router.vuejs.org/zh/guide/essentials/history-mode.html#html5-history-%E6%A8%A1%E5%BC%8F
// mode: 'history',
routes : [ ]
} )
npm run build
Consulte o arquivo document/deploy.md
para saber mais.
passar
Devido a limitações de tempo, ainda existem alguns problemas que não foram resolvidos. Consulte aqui para obter detalhes. Se algum aluno precisar de PR
, você também pode consultar os problemas não resolvidos conhecidos e as folhas bug
aqui.
Em vez de olhar para outro lugar, é melhor ficar ombro a ombro aqui. Para obter instruções e configuração do modo de desenvolvimento, consulte mais documentos
Estrutura de diretório e estatísticas de volume de código consulte aqui
Graças ao incentivo da Sra. G @Sabiner, tive a ideia de escrever um blog pessoal. Tudo começou à tarde, quando Qiu Chuji passou pela vila de Niujia...
Agradeça também a @LeiWong pelo tempo que gastou ajudando a encontrar bug
e resolver problemas quando encontrou problemas durante o desenvolvimento.
Um ser humano deveria ser capaz de trocar uma fralda, planejar uma invasão, abater um porco, comandar um navio, projetar um prédio, escrever um soneto, equilibrar contas, construir um muro, fixar um osso, confortar os moribundos, receber ordens, dar ordenar, cooperar, agir sozinho, resolver equações, analisar um novo problema, lançar esterco, programar um computador, preparar uma refeição saborosa, lutar com eficiência, morrer galantemente.
Um homem deveria ser capaz de trocar uma fralda, planejar uma guerra, matar um porco, navegar um navio, projetar uma casa, escrever um soneto, acertar contas, construir um muro, conectar ossos deslocados, confortar um moribundo, obedecer ordens, emitir ordens e trabalhar em conjunto, agir de forma independente, resolver equações matemáticas, analisar novos problemas, remover estrume, programar computadores, preparar refeições deliciosas, ser bom em lutar e morrer com bravura. Apenas os insetos estão restritos a uma categoria.
- Robert Anson Heinlein, "Tempo suficiente para amar"