Doc
  • Comece Já
  • Academia
  • Biblioteca
  • Languages iconPortuguês
    • English

›Website

Academy

  • Visão Geral
  • Introdução
  • Backoffice
  • Poliglota
  • Apps
  • API
  • Estratégia
  • Demo Application

    • Configuração
    • Formulário
    • Relacionar Dados
    • Serviço
    • Interface & Design
  • Próximos Passos
  • Primeira aplicação

Explore

  • Configuração
  • Centralized Terminal
  • Linha de Comandos
  • Serviços
  • Indústria
  • Graphical Interface

    • Conheça a interface gráfica
    • Formulários
    • Campos
    • Queries Interface

User Interface

  • Modal Form
  • Implementar tabelas e gráficos
  • Eventos do Ciclo de Vida

Server

    Database

    • Excel
    • H2Database
    • MSSQL
    • Múltiplas bases de dados
    • PostgreSQL
    • DB Connection Pool

    Services

    • Serviços Web REST
    • WebSocket
    • JWT Token
    • OpenAPI
    • CORS
    • Queries Programaticamente
    • Gerar Unique ID's (UID/GUID)
    • Envio de e-mails
    • XLS - Excel
    • PDF
  • Actions
  • Cron Jobs
  • Custom URLs
  • Setup dos Dados
  • Monitor e Alertas
  • Templates
  • Desenvolvimento e debug em Java
  • Integração com NGINX

Website

  • ReactJS Create
  • Pages & Routers

ReactJS Create

Aplicação ReactJS

Na raíz da sua aplicação Netuno, execute:

npx create-react-app website

Este comando irá criar um novo diretório denominado website onde estará contida a aplicação ReactJS. Após ter criado a aplicação ReactJS inicie-a da seguinte forma:

cd website
npm run start

Isto fará com que a aplicação seja iniciada no endereço http://localhost:3000.

Para terminar a aplicação ReactJS em qualquer altura, no terminal, basta pressionar CTRL+C simultaneamente

Instalação de Dependências

Aconselhamos vivamente que instale os seguintes pacotes NPM, visto serem bastante úteis para o desenvolvimento de aplicações ReactJS com Netuno (clique em cada link para obter mais informações sobre cada um):

  • react-router-dom
  • antd
  • @ant-design/icons
  • craco-less
  • @netuno/service-client

Para instalar os pacotes acima listados basta correr o seguinte conjunto de comandos no terminal:

npm install --save react-router-dom
npm install --save antd
npm install --save @ant-design/icons
npm install --save craco-less --force
npm install --save @netuno/service-client

Em alternativa também pode instalar todos os pacotes de uma única vez:

npm i -S --force react-router-dom antd @ant-design/icons craco-less @netuno/service-client

Configurações

Após correr os comandos acima, para a compilação funcionar corretamente dirija-se a 📂 website/package.json e altere onde se encontra o seguinte excerto:

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
},

Para o seguinte:

"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "craco eject",
    "watch": "craco start --watch"
},

É necessário criar um novo ficheiro 📂 website/craco.config.js, que permitirá também realizar customizações de style no Ant.Design, o conteúdo inicial pode ser:

const CracoLessPlugin = require('craco-less');

module.exports = {
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: {
              '@primary-color': '#1178FF',
              '@font-size-base': '16px',
              '@border-radius-base': '20px'
            },
            javascriptEnabled: true,
          },
        },
      },
    },
  ],
};

Less

Altere todos os ficheiros .css que estão em website/src para a extensão .less.

O LESS pertime um desenvolvimento mais estruturado e moderno do CSS.

E no seu ficheiro LESS principal, por exemplo no App.less, importe o CSS do Ant.Desig:

@import '~antd/dist/antd.less';

Dark Theme

Também é possível utilizar o tema escuro do Ant.Design, para isto basta importar o LESS do dark mode no seu App.less:

@import '~antd/lib/style/themes/dark.less';

Restyle

Repare que nos exemplos de código do 📂 website/craco.config.js acima é possível alterar facilmente as variáveis do Ant.Design definidas no Less, mais sobre a customização do Ant.Design:

  • Customize Theme
  • Less Variables

Início automático da aplicação ReactJS com o Netuno

O Netuno permite-lhe iniciar a aplicação em ReactJS juntamente com o processo de servidor da aplicação Netuno.

Todas as mensagens de compilação da aplicação em ReactJS estarão integradas no mesmo terminal que a aplicação Netuno.

Para tal basta adicionar à configuração commands da aplicação Netuno em 📂 config/_development.json o seguinte:

{
    ...
    "commands": [
        ...,
        {
            "path": "website",
            "command": "npm run start",
            "install": "npm install --force",
            "enabled": true
        }
    ]
}

Sempre que editar ficheiros de configuração da aplicação Netuno será necessário reiniciar a aplicação para que esta possa assumir as novas alterações.

Por fim inicie/reinicie a sua aplicação Netuno para comprovar o seu funcionamento.

Configuração de CORS (Cross-Origin Resource Sharing)

Para configurar o CORS para evitar possíveis erros entre comunicação da aplicação ReactJS com a aplicação Netuno através de serviços, dirija-se a:

  • 📂 config/_development.json

Repare se já existe a configuração de cors ou adicione este exemplo:

{
    ...
    "cors": [
        {
            "enabled": true,
            "origins": [ "http://localhost:3000" ]
        }
    ],
    ...
}

Se o origins conter um * quer dizer que qualquer endereço de front-end será suportado, por exemplo:

  • "origins": [ "*" ]

Estando esta configuração implementada pode criar os serviços que pretender sem encontrar erros de CORS.

Mais sobre CORS

HTTP OPTIONS

O browser executa uma chamada com o método OPTIONS do protocolo HTTP para o mesmo endereço do serviço, para realizar a validação se pode ou não realmente executar o serviço.

Assim os serviços precisam responder para o método OPTIONS do protocolo HTTP para funcionar sem problemas.

Para tal certifique que junto aos serviços utilizados no website tem a versão do código para options, que pode ser feito da seguinte forma para um serviço de exemplo:

  • 📂 server/services/exemplo/options.js
  • 📂 server/services/exemplo.options.js

O conteúdo poderá ser apenas:

_out.json(_val.map().set("result", true))

Mais sobre métodos HTTP e os Serviços.

Variáveis de Ambiente

Pode ser definida a configuração das variávies de ambiente através da criação do ficheiro website/.env, com as definições das variáveis, por exemplo:

PORT=3001
WDS_SOCKET_PORT=21031
DANGEROUSLY_DISABLE_HOST_CHECK=true

Ou através da configuração da aplicação do Netuno, por exemplo em:

  • 📂 config/_development.json

E definindo as variáveis de ambiente na configuração do comando na parametrização env, por exemplo:

{
    ...
    "commands": [
        ...,
        {
            "env": ["PORT=3001", "WDS_SOCKET_PORT=21031", "DANGEROUSLY_DISABLE_HOST_CHECK=true"]
            "path": "website",
            "command": "npm run start",
            "install": "npm install --force",
            "enabled": true
        }
    ]
}

Definir o Porto do Front-end

Pode definir qual será o porto utilizado pelo front-end em vez do porto padrão 3000.

Para definir outro porto para executar o front-end, defina a variável de ambiente PORT, como por exemplo:

PORT=3001

Depois de definir a variável de ambiente deve reiniciar o servidor do frontend e o problema deverá ser ultrapassado.

Definir Porto Externo do WebSocket

Caso o front-end não atualize automaticamente as alterações realizadas em código, pode querer dizer que a conexão com o WebSocket do webpack está a falhar.

Veja na console do browser se aparece a seguinte mensagem de erro:

WebSocket connection to 'ws://my.host.com:3000/ws' failed: WebSocketClient

Isto acontece quando utilizamos roteamento de portos, ou seja o porto do front-end acedido pelo browser não é o padrão 3000, então temos que sinalizar qual é o porto do front-end para ser utilizado com o WebSocket do webpack.

Para definir o porto do front-end para as conexões de WebSocket, defina a variável de ambiente WDS_SOCKET_PORT, como por exemplo:

WDS_SOCKET_PORT=21031

Depois de definir a variável de ambiente deve reiniciar o servidor do frontend e o problema deverá ser ultrapassado.

Permitir Host "Inválido"

Caso o servidor do frontend que utiliza o webpack gerar uma página de erro com a seguinte mensagem:

Invalid Host Header

Isto quer dizer que o acesso está sendo feito externamente, o qual não é permitido.

Para forçar a permissão de que pode aceitar acessos externos, deve ser configurada a variável de ambeinte DANGEROUSLY_DISABLE_HOST_CHECK, por exemplo:

DANGEROUSLY_DISABLE_HOST_CHECK=true

Depois de definir a variável de ambiente deve reiniciar o servidor do frontend e o problema deverá ser ultrapassado.

← Integração com NGINXNext →
  • Aplicação ReactJS
  • Instalação de Dependências
  • Configurações
    • Less
    • Dark Theme
  • Início automático da aplicação ReactJS com o Netuno
  • Configuração de CORS (Cross-Origin Resource Sharing)
    • HTTP OPTIONS
  • Variáveis de Ambiente
    • Definir o Porto do Front-end
    • Definir Porto Externo do WebSocket
    • Permitir Host "Inválido"

Open Source

Download

admin@netuno.org

support@netuno.org

Copyright © Sitana 2022