虽然Django的大部分内核是Python,但是admin
和gis
contrib应用程序包含JavaScript代码。
在编写JavaScript代码以包含在Django中时,请遵循这些编码标准。
.editorconfig
文件中指定的缩进样式。 我们建议使用带有EditorConfig支持的文本编辑器来避免缩进和空格问题。 大多数JavaScript文件使用4个空格缩进,但有一些例外。camelCase
而不是underscore_case
。
不同的JavaScript文件有时使用不同的代码样式。 请尝试符合每个文件的代码样式。$('body')。on('click', 选择器, func) t3 >
而不是$(selector).click(func)
。 这使得项目更容易使用JavaScript来扩展Django的默认行为。Django的管理系统利用jQuery框架来增加管理界面的功能。 总而言之,强调管理JavaScript性能并最大限度地减少整体管理媒体文件大小。 提供压缩或“缩小”版本的JavaScript文件在这方面被认为是最佳做法。
为此,JavaScript文件的修补程序应包括将来开发的原始代码(例如foo.js
)和用于生产使用的压缩版本(例如foo.min.js
代码库中文件的任何链接都应指向压缩版本。
为了简化提供优化的JavaScript代码的过程,Django包含一个方便的Python脚本,用于创建一个“最小化”版本。 运行它:
$ pip install closure
$ python django/contrib/admin/bin/compress.py
在幕后,compress.py
是用Java编写的Closure Compiler的前端。 Closure Compiler库没有与Django捆绑在一起,但是您可以使用如上所述的pip来安装它。 Closure Compiler库需要Java 7或更高版本。
在提交Django JavaScript的修补程序时,请不要忘记运行compress.py
并包含最小化脚本的diff
。
Django的JavaScript测试可以在浏览器或命令行中运行。
测试位于顶级js_tests
目录中。
Django的JavaScript测试使用QUnit。 这是一个示例测试模块:
module('magicTricks', {
beforeEach: function() {
var $ = django.jQuery;
$('#qunit-fixture').append('<button class="button"></button>');
}
});
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);
});
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);
});
有关QUnit支持的断言的类型的信息,请参考QUnit文档。
JavaScript测试可以从Web浏览器或从命令行运行。
要从Web浏览器运行测试,请在浏览器中打开js_tests/tests.html
。
要测试运行测试时的代码覆盖率,您需要通过HTTP查看该文件。 查看代码覆盖率:
python -m http.server
(或python SimpleHTTPServer
在Python 2)从根目录(不是从js_tests
内)。2017年9月6日