{"title":"JavaScript code","version":"5.1","locale":"ko","docname":"internals/contributing/writing-code/javascript","url":"/ko/5.1/internals/contributing/writing-code/javascript/","canonical":"https://djangodocs.dev/ko/5.1/internals/contributing/writing-code/javascript/","summary":"Django 코어의 대부분은 Python이지만 “admin” 및 “gis” 기여 앱에는 JavaScript 코드가 포함되어 있습니다. Django에 포함하기 위해 JavaScript 코드를 작성할 때 이러한 코딩 표준을 따르십시오. 코드 스타일 Link to this heading #…","html":"<h1>JavaScript code<a class=\"heading-anchor\" href=\"#javascript-code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django 코어의 대부분은 Python이지만 “admin” 및 “gis” 기여 앱에는 JavaScript 코드가 포함되어 있습니다.</p>\n<p>Django에 포함하기 위해 JavaScript 코드를 작성할 때 이러한 코딩 표준을 따르십시오.</p>\n<section id=\"code-style\">\n<h2>코드 스타일<a class=\"heading-anchor\" href=\"#code-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p>“.editorconfig” 파일에 명시된 들여쓰기 스타일을 준수하십시오. 들여쓰기 및 공백 문제를 방지하려면 “EditorConfig”_ 지원 텍스트 편집기를 사용하는 것이 좋습니다. 대부분의 JavaScript 파일은 들여쓰기에 4개의 공백을 사용하지만 일부 예외가 있습니다.</p></li>\n<li><p>변수 이름을 지정할 때 “underscore_case” 대신 “camelCase”를 사용합니다. JavaScript 파일마다 다른 코드 스타일을 사용하는 경우가 있습니다. 각 파일의 코드 스타일을 준수하도록 하십시오.</p></li>\n<li><p>ESLint_code linter를 사용하여 코드에 버그와 스타일 오류가 있는지 확인합니다. ESLint는 JavaScript 테스트를 실행할 때 실행됩니다. 또한 텍스트 편집기에 ESLint 플러그인을 설치하는 것이 좋습니다.</p></li>\n<li><p>가능한 경우 나중에 JavaScript로 페이지 구조가 변경되더라도 작동하는 코드를 작성합니다. 예를 들어 클릭 핸들러를 바인딩할 때는 “$(selector)” 대신 “$(‘body’).on(‘click’, selector, func)”을 사용합니다.(func)’를 클릭합니다. 이렇게 하면 프로젝트가 JavaScript를 사용하여 Django의 기본 동작을 쉽게 확장할 수 있습니다.</p></li>\n</ul>\n</section>\n<section id=\"javascript-patches\">\n<span id=\"id1\"></span><h2>JavaScript 패치<a class=\"heading-anchor\" href=\"#javascript-patches\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django의 관리 시스템은 jQuery 프레임워크를 활용하여 관리 인터페이스의 기능을 향상시킵니다. 이와 함께 관리 JavaScript 성능을 강조하고 전체 관리 미디어 파일 크기를 최소화합니다.</p>\n</section>\n<section id=\"javascript-tests\">\n<span id=\"id2\"></span><h2>자바스크립트 테스트<a class=\"heading-anchor\" href=\"#javascript-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django’s JavaScript tests can be run in a browser or from the command line.\nThe tests are located in a top level <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/5.1.x/js_tests\">js_tests</a> directory.</p>\n<section id=\"writing-tests\">\n<h3>쓰기 테스트<a class=\"heading-anchor\" href=\"#writing-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django의 JavaScript 테스트에서는 “QUnit”을 사용합니다. 다음은 테스트 모듈의 예입니다.</p>\n<div class=\"code-block\" data-language=\"javascript\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">JavaScript</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"JavaScript code\"><code><span class=\"nx\">QUnit</span><span class=\"p\">.</span><span class=\"nx\">module</span><span class=\"p\">(</span><span class=\"s1\">&#39;magicTricks&#39;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nx\">beforeEach</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"kd\">function</span><span class=\"p\">()</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"kd\">const</span><span class=\"w\"> </span><span class=\"nx\">$</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nx\">django</span><span class=\"p\">.</span><span class=\"nx\">jQuery</span><span class=\"p\">;</span>\n<span class=\"w\">        </span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;#qunit-fixture&#39;</span><span class=\"p\">).</span><span class=\"nx\">append</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;button class=&quot;button&quot;&gt;&lt;/button&gt;&#39;</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">});</span>\n\n<span class=\"nx\">QUnit</span><span class=\"p\">.</span><span class=\"nx\">test</span><span class=\"p\">(</span><span class=\"s1\">&#39;removeOnClick removes button on click&#39;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kd\">function</span><span class=\"p\">(</span><span class=\"nx\">assert</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"kd\">const</span><span class=\"w\"> </span><span class=\"nx\">$</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nx\">django</span><span class=\"p\">.</span><span class=\"nx\">jQuery</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"nx\">removeOnClick</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"nx\">assert</span><span class=\"p\">.</span><span class=\"nx\">equal</span><span class=\"p\">(</span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">).</span><span class=\"nx\">length</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mf\">1</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">).</span><span class=\"nx\">click</span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"nx\">assert</span><span class=\"p\">.</span><span class=\"nx\">equal</span><span class=\"p\">(</span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">).</span><span class=\"nx\">length</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mf\">0</span><span class=\"p\">);</span>\n<span class=\"p\">});</span>\n\n<span class=\"nx\">QUnit</span><span class=\"p\">.</span><span class=\"nx\">test</span><span class=\"p\">(</span><span class=\"s1\">&#39;copyOnClick adds button on click&#39;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kd\">function</span><span class=\"p\">(</span><span class=\"nx\">assert</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"kd\">const</span><span class=\"w\"> </span><span class=\"nx\">$</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nx\">django</span><span class=\"p\">.</span><span class=\"nx\">jQuery</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"nx\">copyOnClick</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"nx\">assert</span><span class=\"p\">.</span><span class=\"nx\">equal</span><span class=\"p\">(</span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">).</span><span class=\"nx\">length</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mf\">1</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">).</span><span class=\"nx\">click</span><span class=\"p\">();</span>\n<span class=\"w\">    </span><span class=\"nx\">assert</span><span class=\"p\">.</span><span class=\"nx\">equal</span><span class=\"p\">(</span><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"s1\">&#39;.button&#39;</span><span class=\"p\">).</span><span class=\"nx\">length</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mf\">2</span><span class=\"p\">);</span>\n<span class=\"p\">});</span>\n</code></pre></div>\n<p>Please consult the <code class=\"docutils literal notranslate\"><span class=\"pre\">QUnit</span></code> documentation for information on the types of\n<a class=\"reference external\" href=\"https://api.qunitjs.com/assert/\">assertions supported by QUnit</a>.</p>\n</section>\n<section id=\"running-tests\">\n<h3>테스트 실행<a class=\"heading-anchor\" href=\"#running-tests\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>JavaScript 테스트는 웹 브라우저 또는 명령줄에서 실행할 수 있습니다.</p>\n<section id=\"testing-from-a-web-browser\">\n<h4> 브라우저에서 테스트합니다.<a class=\"heading-anchor\" href=\"#testing-from-a-web-browser\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>To run the tests from a web browser, open up <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/5.1.x/js_tests/tests.html\">js_tests/tests.html</a> in your\nbrowser.</p>\n<p>테스트를 실행할 때 코드 범위를 측정하려면 HTTP를 통해 해당 파일을 확인해야 합니다. 코드 적용 범위를 보려면 다음과 같이 하십시오.</p>\n<ul class=\"simple\">\n<li><p>루트 디렉토리에서 “python -m http.server”를 실행합니다(‘js_tests’ 내부가 아님).</p></li>\n<li><p>웹 브라우저에서 <a class=\"reference external\" href=\"http://localhost:8000/js_tests/tests\">http://localhost:8000/js_tests/tests</a>.html을 엽니다.</p></li>\n</ul>\n</section>\n<section id=\"testing-from-the-command-line\">\n<h4>명령줄에서 테스트합니다.<a class=\"heading-anchor\" href=\"#testing-from-the-command-line\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>명령줄에서 테스트를 실행하려면 “Node.js”_가 설치되어 있어야 합니다.</p>\n<p>“Node.js”를 설치한 후 Django 체크아웃의 루트에서 다음을 실행하여 JavaScript 테스트 종속성을 설치합니다.</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>npm<span class=\"w\"> </span>install\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> npm install\n</code></pre></div></div></div>\n<p>그런 다음 다음을 사용하여 테스트를 실행합니다.</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>npm<span class=\"w\"> </span><span class=\"nb\">test</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> npm test\n</code></pre></div></div></div>\n</section>\n</section>\n</section>","rootId":"javascript-code","toc":[{"title":"코드 스타일","anchor":"code-style","children":[]},{"title":"JavaScript 패치","anchor":"javascript-patches","children":[]},{"title":"자바스크립트 테스트","anchor":"javascript-tests","children":[{"title":"쓰기 테스트","anchor":"writing-tests","children":[]},{"title":"테스트 실행","anchor":"running-tests","children":[{"title":" 브라우저에서 테스트합니다.","anchor":"testing-from-a-web-browser","children":[]},{"title":"명령줄에서 테스트합니다.","anchor":"testing-from-the-command-line","children":[]}]}]}],"breadcrumbs":[{"docname":"internals/index","title":"Django internals","url":"/ko/5.1/internals/"},{"docname":"internals/contributing/index","title":"장고에 기여하기","url":"/ko/5.1/internals/contributing/"},{"docname":"internals/contributing/writing-code/index","title":"Contributing code","url":"/ko/5.1/internals/contributing/writing-code/"}],"prev":{"docname":"internals/contributing/writing-code/coding-style","title":"코딩 스타일","url":"/ko/5.1/internals/contributing/writing-code/coding-style/"},"next":{"docname":"internals/contributing/committing-code","title":"코드 커밋","url":"/ko/5.1/internals/contributing/committing-code/"},"formats":{"html":"/ko/5.1/internals/contributing/writing-code/javascript/","markdown":"/ko/5.1/internals/contributing/writing-code/javascript.md","json":"/ko/5.1/internals/contributing/writing-code/javascript.json"},"source":"https://github.com/django/django/blob/stable/5.1.x/docs/internals/contributing/writing-code/javascript.txt","official":"https://docs.djangoproject.com/ko/5.1/internals/contributing/writing-code/javascript/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}