Importação de funções
30/07/2023
0
Estou estudando JavaScript com o Node.js.
Tenho experiência com a linguagem Java, apesar da lógica ser parecida, estou enfrentando problemas com a sintaxe.
Tenho dois arquivos:
- Calc.js
- soma.js
Consegui fazer a importação de um array de objetos, porém, estou com problemas para fazer importação de várias funções.
Como eu consigo, acessar as funções do arquivo soma dentro do arquivo calc?
Uma importação do tipo: calc.soma(); calc.divisão();
Estão no mesmo diretório.
Tenho uma base de sintaxe, mas esta ocorrendo erros.
Não estou usando .html. A integração é apenas nos arquivos .js.
Estou usando o node.
Alguem por gentileza, poderia me ajudar?
Leandro Felipe
Posts
02/08/2023
Diego Marinho
Há dois tipos de instruções p/ fazer esse tipo de coisa -> via "require" e via "import".
O "require" é a forma antiga de fazer isso que vc pretende e o "import" é a forma mais atualizada.
Dentro destas duas instruções, há uma série de formas de fazer esse tipo de importação.
Vou te dar um exemplo em cada tipo de instrução :
PRIMEIRO PELO "IMPORT"
Vamos supor que temos dois arquivos.
soma.js
calc.js
--------------------------------------------------------------
no arquivo calc.js só temos o código seguinte :
class calc { }
---------------------------------------------------------------------
No arquivo soma.js temos uma function de somar valores :
function somar( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) }
estou usando uma function com reduce , mas poderia ser qualquer outra função ou classe
-----------------------------------------------------------------------
Agora como eu importaria ?
No final do arquivo soma.js eu acrescentaria um export{ soma }
function somar( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } export
---------------------------------------------------------------
Já no arquivo calc.js eu usaria o "import" da seguinte forma
import from './somar' class calc { }
OBS 1 :
Estou colocando um ponto antes da barra "./", por supor que o arquivo está na mesma pasta,
se não estiver provavelmente levará dois pontos antes da barra.
OBS 2 :
Dentro das chaves após o "import" o nome do importado deve igual ao nome do exportado no arquivo soma.js.
-----------------------------------------------------------------------
O soma já está disponível.
Como você quer chamar a partir do calc, como no exemplo dado calc.soma(), eu te aconselho a usar o prototype... ficaria assim :
import from './somar' class calc { } calc.prototype.somar = somar // AQUI VC INCORPORARIA A FUNÇÃO SOMA PRA DENTRO DA SUA CLASSE let calculadora = new calc() // AQUI VOCE DARIA UM "NEW" , IGUAL A JAVA let armazendoValor = calculadora.somar(1,2,3) // AQUI VC CONSEGUIRIA CHAMAR O SOMA APATIR DO CALC console.log( armazendoValor ) //IMPRIMENDO VALOR NO CONSOLE
Caso você queira chama mais de uma função do outro arquivo vc deve fazer o seguinte :
Vamos imaginar agora outros dois arquivos o calc.js e o operacoes.js
Você conseguiria importar todas as operações da seguinte formar :
//operacoes.js function somar( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } function subtrair( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } function dividir( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } function multiplicar( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } export{somar, subtrair, dividir, multiplicar}
//calc.js import {somar, subtrair, multiplicar, dividir } from './soma' class calc { }
Me alonguei muito, vê se vc consegue fazer isso usando "import" , caso vc esteja usando "require", ai vc me diz que eu explico ...
02/08/2023
Diego Marinho
Bugou e não saiu uma parte do código do export, que é export
function somar( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } export // AGORA TÁ CERTO
Esqueci de trocar os operadores e deixei tudo somando, mas claro é assim :
//operacoes.js function somar( ...numeros){ return numeros.reduce( ( a, b )=> a+b, 0) } function subtrair( ...numeros){ return numeros.reduce( ( a, b )=> a-b, 0) } function dividir( ...numeros){ return numeros.reduce( ( a, b )=> a/b, 0) } function multiplicar( ...numeros){ return numeros.reduce( ( a, b )=> a*b, 0) } export{somar, subtrair, dividir, multiplicar}
02/08/2023
Diego Marinho
Clique aqui para fazer login e interagir na Comunidade :)