JavaScript 代码¶
虽然大部分 Django 核心是 Python,但admin
和gis
贡献应用程序包含 JavaScript 代码。
在编写用于包含在 Django 中的 JavaScript 代码时,请遵循以下编码标准。
代码风格¶
请遵守
.editorconfig
文件中指定的缩进样式。我们建议使用支持EditorConfig的文本编辑器,以避免缩进和空格问题。大多数 JavaScript 文件使用 4 个空格进行缩进,但也有一些例外。命名变量时,请使用
camelCase
而不是underscore_case
。不同的 JavaScript 文件有时会使用不同的代码风格。请尝试符合每个文件的代码风格。使用ESLint 代码 linter 检查代码中的错误和样式错误。运行 JavaScript 测试时将运行 ESLint。我们还建议在文本编辑器中安装 ESLint 插件。
如果可能,请编写即使页面结构稍后使用 JavaScript 更改也能工作的代码。例如,在绑定点击处理程序时,请使用
$('body').on('click', selector, func)
而不是$(selector).click(func)
。这使得项目更容易使用 JavaScript 扩展 Django 的默认行为。
JavaScript 补丁¶
Django 的管理系统利用 jQuery 框架来增强管理界面的功能。同时,也强调管理 JavaScript 的性能和最大限度地减少整体管理媒体文件大小。
JavaScript 测试¶
Django 的 JavaScript 测试可以在浏览器或命令行中运行。测试位于顶级js_tests目录中。
编写测试¶
Django 的 JavaScript 测试使用QUnit。这是一个示例测试模块
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);
});
请参阅QUnit
文档,了解有关QUnit 支持的断言类型的信息。
运行测试¶
JavaScript 测试可以在 Web 浏览器或命令行中运行。
在 Web 浏览器中进行测试¶
要在 Web 浏览器中运行测试,请在浏览器中打开js_tests/tests.html。
在运行测试时测量代码覆盖率,需要通过 HTTP 查看该文件。要查看代码覆盖率
从根目录(不是从
js_tests
内部)执行python -m http.server
。在 Web 浏览器中打开http://localhost:8000/js_tests/tests.html。
从命令行进行测试¶
要在命令行中运行测试,需要安装Node.js。
安装Node.js
后,通过从 Django 检出的根目录运行以下命令来安装 JavaScript 测试依赖项
$ npm install
...\> npm install
然后使用以下命令运行测试:
$ npm test
...\> npm test