JavaScript¶
Embora a maior parte do núcleo do Django seja escrito em Python, alguns apps como o admin
e gis
contém código JavaScript.
Por favor siga esses padrões de código quando estiver escrevendo código em JavaScript para inclusão no Django.
Estilo de código¶
- Por favor adapte-se ao estilo de identação ditado no arquivo
.editorconfig
. Nós recomendamos usar o editor de textos com suporte a EditorConfig para evitar problemas com identação e espaços em branco. A maioria dos arquivos JavaScript usam 4 espaços para identação, mas existem algumas exceções. - Quando estiver nomeando variáveis, use
camelCase
ao invés deunderscore_case
. Arquivos JavaScript diferentes algumas vezes usam estilos de código diferentes. Por favor tente se adequar aos padrões de estilo de cada arquivo. - Use the ESLint code linter to check your code for bugs and style errors. ESLint will be run when you run the JavaScript tests. We also recommended installing a ESLint plugin in your text editor.
- Where possible, write code that will work even if the page structure is later
changed with JavaScript. For instance, when binding a click handler, use
$('body').on('click', selector, func)
instead of$(selector).click(func)
. This makes it easier for projects to extend Django’s default behavior with JavaScript.
Patches JavaScript¶
Django’s admin system leverages the jQuery framework to increase the capabilities of the admin interface. In conjunction, there is an emphasis on admin JavaScript performance and minimizing overall admin media file size.
Testes JavaScript¶
Os testes para o JavaScript do Django podem ser rodados em um browser ou diretamente da linha de comando. Os testes estão localizados no diretório js_tests
.
Escrevendo testes¶
Os testes em JavaScript do Django utilizam QUnit. Segue um exemplo de teste de um módulo.
QUnit.module('magicTricks', {
beforeEach: function() {
const $ = django.jQuery;
$('#qunit-fixture').append('<button class="button"></button>');
}
});
QUnit.test('removeOnClick removes button on click', function(assert) {
const $ = django.jQuery;
removeOnClick('.button');
assert.equal($('.button').length, 1);
$('.button').click();
assert.equal($('.button').length, 0);
});
QUnit.test('copyOnClick adds button on click', function(assert) {
const $ = django.jQuery;
copyOnClick('.button');
assert.equal($('.button').length, 1);
$('.button').click();
assert.equal($('.button').length, 2);
});
Please consult the QUnit
documentation for information on the types of
assertions supported by QUnit.
Rodando testes¶
Os testes JavaScript pode ser executados de um browser ou diretamente da linha de comando.
Testando a partir de um navegador web¶
Para executar os testes através de um browser, abra o arquivo js_tests/tests.html
dentro do seu browser.
Para medir a cobertura de código quando estiver executando os testes, você precisará visualizar o arquivo através de um servidor HTTP. Para ver a cobertura de código:
- Execute
python -m http.server
from the root directory (not from insidejs_tests
). - Acesse o endereço http://localhost:8000/js_tests/tests.html no seu browser.
Testando a partir da linha de comando¶
Para executar os testes da linha de comando, você precisará ter o Node.js instalado.
After installing Node.js
, install the JavaScript test dependencies by
running the following from the root of your Django checkout:
$ npm install
...\> npm install
E então rode os testes com:
$ npm test
...\> npm test