javascript - with - title attribute html




Cliente no nó: UnEught ReferenceError: require não está definido (3)

Isso ocorre porque require() não existe no JavaScript do navegador / cliente.

Agora você terá que fazer algumas escolhas sobre o gerenciamento de script JavaScript do lado do cliente.

Você tem três opções:

  1. Use a tag <script> .
  2. Use uma implementação do CommonJS . Dependências síncronas como o Node.js
  3. Use uma implementação AMD .

As implementações do lado do cliente CommonJS incluem:

(a maioria deles requer uma etapa de compilação antes de você implantar)

  1. Browserify - Você pode usar a maioria dos módulos do Node.js no navegador. Este é o meu favorito pessoal.
  2. Webpack - Faz tudo (pacotes JS, CSS, etc). Tornou-se popular pelo surto de React.js. Notório por sua difícil curva de aprendizado.
  3. Rollup - Novo concorrente. Aproveita os módulos do ES6. Inclui habilidades de agitar a árvore (remove código não utilizado).

Você pode ler mais sobre minha comparação do Browserify vs Component .

Implementações AMD incluem:

  1. RequireJS - Muito popular entre os desenvolvedores JavaScript do lado do cliente. Não meu gosto por causa de sua natureza assíncrona.

Note, em sua busca por escolher qual escolher, você lerá sobre Bower . O Bower é apenas para dependências de pacotes e não é publicado em definições de módulo como CommonJS e AMD.

Espero que isso ajude alguns.

Então, estou escrevendo um aplicativo com o combo node / express + jade.

Eu tenho client.js , que é carregado no cliente. Nesse arquivo eu tenho código que chama funções de outros arquivos JavaScript. Minha tentativa foi usar

var m = require('./messages');

a fim de carregar o conteúdo de messages.js (assim como eu faço no lado do servidor) e, mais tarde, as funções de chamada desse arquivo. No entanto, require não está definido no lado do cliente e gera um erro no formulário Uncaught ReferenceError: require is not defined .

Esses outros arquivos JS também são carregados no tempo de execução no cliente porque eu coloco os links no cabeçalho da página da Web. Portanto, o cliente conhece todas as funções que são exportadas desses outros arquivos.

Como faço para chamar essas funções desses outros arquivos JS (como messages.js ) no arquivo client.js principal que abre o soquete para o servidor?


Mesmo usando isso não vai funcionar, acho que a melhor solução é browserify:

-common.js-
module.exports = {
  func1: function () {
   console.log("I am function 1");
  },
  func2: function () {
    console.log("I am function 2");
  }
};

-getFunc1.js-
var common = require('./common');
common.func1();

ES6: Em html, inclua o arquivo js principal usando o atributo type="module" ( suporte ao navegador ):

<script type="module" src="script.js"></script>

E no arquivo script.js inclua outro arquivo como esse:

import { hello } from './module.js';
...
// alert(hello());

Em 'module.js' você deve exportar a função / classe que você importará

export function hello() {
    return "Hello World";
}

Exemplo de trabalho aqui .





pug