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 de underscore_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.
  • Utilize o JSHint code linter para verificar bugs e erros de estilo no seu código. JSHint irá rodar quando você executar os testes JavaScript. Nós também recomendamos instalar o JSHint no seu editor de textos.
  • 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

O admin do Django usa o framework jQuery para aumentar as capacidades da interface de administração. Além disso, existe uma ênfase na performance do JavaScript do admin e em minimizar o tamanho de arquivos de media do admin. Servir versões comprimidas ou “minificadas” dos arquivos JavaScript é considerado uma boa prática nesse quesito.

Por isso, patches para arquivos JavaScript devem incluir tanto código original para futuro desenvolvimento (e.g. foo.js), quanto uma versão comprimida para uso em produção (e.g. foo.min.js). Quaisquer links para o arquivo no projeto devem apontar para a versão comprimida.

Comprimindo JavaScript

Para simplificar o processo de fornecimento de código JavaScript otimizado, O Django inclui um script Python extremamente útil que deve ser utilizado na criação da versão “minificada”. Para executá-lo:

$ pip install closure
$ python django/contrib/admin/bin/compress.py
...\> pip install closure
...\> py django\contrib\admin\bin\compress.py

Por trás das cortinas, compress.py é um front-end para o Compilador Closure `_ do Google que é escrito em Java. A biblioteca do Compilador Closure não é distribuída com o Django, mas você pode instalá-la usando pip como feito acima. A biblioteca do Compilador Closure requer `Java 7 ou versões maiores.

Por favor não se esqueça de rodar o compress.py e incluir o diff dos scripts minificados quando estiver enviando os seus patches para o JavaScript do Django.

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() {
        var $ = django.jQuery;
        $('#qunit-fixture').append('<button class="button"></button>');
    }
});

QUnit.test('removeOnClick removes button on click', function(assert) {
    var $ = 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) {
    var $ = 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 de um browser

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:

Testando da linha de comando

Para executar os testes da linha de comando, você precisará ter o Node.js instalado.

Depois de instalar o Node.js, instale as dependências dos testes em JavaScript executando o comando seguinte do diretório raiz no qual o código fonte do Django foi baixado:

$ npm install
...\> npm install

E então rode os testes com:

$ npm test
...\> npm test
Back to Top