Este é um painel de controle JavaScript isomórfico completo, escrito sobre o NodeJS e o React. O objetivo deste painel de controle é servir como exemplo ou código de caldeira para outros, pois é totalmente de pleno direito e muito flexível. Escrevi o código para ser facilmente adaptável para diferentes casos de uso e tipos de banco de dados e estruturas.
Você pode encontrar soluções escritas por mim para muitos problemas relacionados à renderização do servidor, reagir, manusear o busto de cache de recursos voláteis em trabalhadores de serviços e lidar com sessões manualmente no código -fonte deste aplicativo.
O código usa as funções de seta do ES6 e prometa muito, então familiarize -se com esses conceitos, se você ainda não estiver!
Tentei comentar o máximo possível para explicar o funcionamento do aplicativo no código -fonte, no entanto, se as coisas não estiverem claras, sinta -se à vontade para perguntar.
Informações de login:
Nome de usuário: Jonas
Senha: teste
Clique aqui para a demonstração.
Clique aqui para as imagens no caso que a demonstração não está funcionando.
v6.11.3 ou mais tarde5.6.5 ou posterior, se você deseja usar o banco de dados de amostra.sudo npm install -g node-gypnpm install --global --production windows-build-toolsgit clone https://github.com/zeus2198/node.ucp OU
Faça o download do repositório manualmente do botão Green Clone or Download localizado na parte superior direita do repositório e extraia o conteúdo em uma pasta vazia. 3. Verifique se você está na raiz do projeto e digite o seguinte comando para instalar os pacotes necessários para o aplicativo:
npm install A instalação dos pacotes pode levar algum tempo. 5. Importe o banco de dados de amostra ( ./sample-database.sql ) para o seu servidor MySQL. 4. Open ./config/config.json e edite o arquivo de configuração conforme as configurações do seu sistema.
Modo de desenvolvedor:
Para iniciar o aplicativo no modo desenvolvedor, use o seguinte comando:
npm run start-devNo modo de desenvolvedor, as seguintes coisas acontecem:
./src .global.css em vez de global.min.css , que não é armazenado em cache por padrão. Observe que, se você decidir usar nginx para servir o arquivo estático (como descrito posteriormente), poderá cache os arquivos .css, dependendo da configuração do NGINX../public/js/sw.js ) e o arquivo de pacote é substituído em nosso cache!Modo de produção:
Antes de iniciar o aplicativo no modo de produção, você precisa agrupar o cliente compartilhado parte do aplicativo em um arquivo para que ele possa ser servido ao cliente, para fazer isso, use o seguinte comando:
npm run make Observe que o comando acima também minimizará o conteúdo do ./public/css/global.css e armazená -lo como ./public/css/global.min.css .
Depois que o pacote é feito, use o seguinte comando para iniciar o aplicativo:
npm startNo modo de produção, as seguintes coisas acontecem:
global.min.css e não global.css , que é um recurso em cache.npm run make .Você pode encontrar os arquivos do Photoshop da obra de arte usada neste projeto daqui
./src/shared/ contém o código comum na parte do cliente e do servidor. Certifique -se de não expor nenhuma informação confidencial nesta seção../public/js/sw.js e edite a string de versão. Em seguida, feche toda a guia Aplicativo aberta no navegador e abra o aplicativo novamente. Use isso para limpar global.min.css para fora do cache ao editar o arquivo global.css . O arquivo ./src/db/db.api.abstract.js contém uma classe abstrata para nossa API de banco de dados, leia os comentários para especificações do método. Em seguida, exija esse arquivo em sua camada de API de banco de dados personalizada e substitua os métodos abstratos. Consulte ./src/db/mysql.api.js arquivo de implementação. Observe que cada método deve retornar uma promessa.
Depois de terminar a API de gravação para o seu banco de dados, acesse ./config/config.json e edite a opção databaseAPI para corresponder ao nome do arquivo que contém sua camada de API do banco de dados. O arquivo deve ser colocado no diretório ./src/db/ .
Eu recomendo o uso do NGINX para servir arquivos estáticos em vez de nodejs. Para fazer isso, você pode adicionar o seguinte bloco de localização à sua configuração de bloco severado:
location /public {
alias /path/to/your/app/public;
}
Se você decidir ir com o NGINX para servir arquivos estáticos, também poderá mudar a compactação GZIP para o seu aplicativo para o NGINX. Se você fizer isso, o que você deve, desative a compactação no lado do aplicativo, comentando as duas linhas a seguir do arquivo ./node.ucp.js :
//./node.ucp.js
// comment out the following lines if you use nginx for gzip compression
import compression from 'compression' ;
app . use ( compression ( ) ) ;No modo de produção, você pode querer ter um gerenciador de processos que possa reiniciar o aplicativo, se ele travar, recomendo usar o PM2 para esse fim. Instale o PM2 usando o seguinte comando:
npm install pm2 -gAgora, antes de usar o PM2 para iniciar seu aplicativo no modo de produção, verifique se o aplicativo é realmente iniciado e executa, caso contrário, seu aplicativo ficará preso no loop de início e reinicialização.
Eu já criei um arquivo de configuração para PM2 para iniciar o aplicativo, para iniciar o aplicativo no modo de produção com o tipo PM2:
pm2 start node.ucp.pm2.json