diff --git a/.github/workflows/markdown-lint-fix.yml b/.github/workflows/markdown-lint-fix.yml index 61b8eb91770af8..7440889f0d406d 100644 --- a/.github/workflows/markdown-lint-fix.yml +++ b/.github/workflows/markdown-lint-fix.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn @@ -44,7 +44,7 @@ jobs: path: mdn/content - name: Setup Node.js environment for mdn/content - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "yarn" diff --git a/.github/workflows/markdown-lint.yml b/.github/workflows/markdown-lint.yml index 63e7cdad0b97fd..c74fffebc7b90c 100644 --- a/.github/workflows/markdown-lint.yml +++ b/.github/workflows/markdown-lint.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn diff --git a/.github/workflows/pr-check-lint_content.yml b/.github/workflows/pr-check-lint_content.yml index 643cfd81a9afd6..9b0910d33d6f58 100644 --- a/.github/workflows/pr-check-lint_content.yml +++ b/.github/workflows/pr-check-lint_content.yml @@ -69,7 +69,7 @@ jobs: - name: Setup Node.js environment if: ${{ env.DIFF_DOCUMENTS }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn diff --git a/.github/workflows/pr-check_json.yml b/.github/workflows/pr-check_json.yml index 2426af09d6461e..d56d8ecd0bee5f 100644 --- a/.github/workflows/pr-check_json.yml +++ b/.github/workflows/pr-check_json.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn diff --git a/.github/workflows/pr-check_redirects.yml b/.github/workflows/pr-check_redirects.yml index a8015f16ddaca8..090e956c7e5c97 100644 --- a/.github/workflows/pr-check_redirects.yml +++ b/.github/workflows/pr-check_redirects.yml @@ -24,7 +24,7 @@ jobs: path: mdn/content - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "yarn" diff --git a/.github/workflows/pr-check_yml.yml b/.github/workflows/pr-check_yml.yml index c6ac78d8b92034..230ad516169117 100644 --- a/.github/workflows/pr-check_yml.yml +++ b/.github/workflows/pr-check_yml.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index cec98bebb4f1a0..436097ca663866 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -41,7 +41,7 @@ jobs: path: mdn/content - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "yarn" diff --git a/.github/workflows/sync-translated-content.yml b/.github/workflows/sync-translated-content.yml index 9a2da220f6b783..d12f4af5ca66d2 100644 --- a/.github/workflows/sync-translated-content.yml +++ b/.github/workflows/sync-translated-content.yml @@ -39,7 +39,7 @@ jobs: path: mdn/content - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: "yarn" diff --git a/.gitignore b/.gitignore index bf14aa8a6b5866..c8e645ae63bbdf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ _githistory.json .DS_Store .idea +.vscode mdn/content yarn-debug.log* yarn-error.log* diff --git a/docs/ko/fully_untranslated_files/Learn_Forms_Sending_and_retrieving_form_data.md b/docs/ko/fully_untranslated_files/Learn_Forms_Sending_and_retrieving_form_data.md index 42310097e096ee..a50a0b909e2975 100644 --- a/docs/ko/fully_untranslated_files/Learn_Forms_Sending_and_retrieving_form_data.md +++ b/docs/ko/fully_untranslated_files/Learn_Forms_Sending_and_retrieving_form_data.md @@ -9,7 +9,7 @@ slug: Learn/Forms/Sending_and_retrieving_form_data ### 클라이언트/서버 구조 -웹은 간단히 말하면 클라이언트(파이어폭스, 크롬, 사파리, IE 등)는 서버(아파치, Nginx, IIS, 톰켓 등)로 HTTP프로토콜을 사용해 요청을 하는 클라이언트/서버 구조를 기본으로 작동된다. 서버 응답은 요청과 똑같은 프로토콜을 사용한다. +웹은 간단히 말하면 클라이언트(Firefox, 크롬, Safari, IE 등)는 서버(아파치, Nginx, IIS, 톰켓 등)로 HTTP프로토콜을 사용해 요청을 하는 클라이언트/서버 구조를 기본으로 작동된다. 서버 응답은 요청과 똑같은 프로토콜을 사용한다. ![A basic schema of the Web client/server architecture](/files/4291/client-server.png) @@ -109,7 +109,7 @@ say=Hi&to=Mom Content-Length 헤더는 바디의 크기를 나태내고, Content-Type 헤더는 서버에 보낼 리소스의 종류 나태낸다. 우리는 비트(bit/조금씩?)에서 이러한 헤더를 설명 할 것이다. -물론 http 요청은 절대 사용자에게 표시되지 않는다(파이어폭스 웹 콘솔이나 크롬 개발자 툴을 이용하지 않는이상). 사용자에게 보여지는 것은 호출한 URL뿐이다. 그래서 GET 요청은 사용자에게 URL바에서 데이터를 볼 수있지만, POST 요청은 그러지 못한다. 이것은 두가지 이유에서 매우 중요하다. +물론 http 요청은 절대 사용자에게 표시되지 않는다(Firefox 웹 콘솔이나 크롬 개발자 툴을 이용하지 않는이상). 사용자에게 보여지는 것은 호출한 URL뿐이다. 그래서 GET 요청은 사용자에게 URL바에서 데이터를 볼 수있지만, POST 요청은 그러지 못한다. 이것은 두가지 이유에서 매우 중요하다. 1. 만약 패스워드를 전송해야 되는 경우(또는 민간한 데이터의 부분), 절대 URL 바에 데이터를 출력하는 GET 방식을 사용해서는 안된다. 2. 만약 거대한 데이터를 보내는경우 POST 방식이 선호 된다. 왜냐하면 몇몇 브라우저는 URL들의 크기를 제한하기 떄문이다. 또한 많은 서버들이 URL들의 길이를 제한한다. diff --git a/docs/ko/fully_untranslated_files/Learn_JavaScript_Client-side_web_APIs_Client-side_storage.md b/docs/ko/fully_untranslated_files/Learn_JavaScript_Client-side_web_APIs_Client-side_storage.md index a27bb3739b4de6..17f13eb642d1a0 100644 --- a/docs/ko/fully_untranslated_files/Learn_JavaScript_Client-side_web_APIs_Client-side_storage.md +++ b/docs/ko/fully_untranslated_files/Learn_JavaScript_Client-side_web_APIs_Client-side_storage.md @@ -37,7 +37,7 @@ slug: Learn/JavaScript/Client-side_web_APIs/Client-side_storage 우리는 다른 MDN 학습영역에서 [정적인 사이트](/ko/docs/Learn/Server-side/First_steps/Client-Server_overview#Static_sites)와 [동적인 사이트](/ko/docs/Learn/Server-side/First_steps/Client-Server_overview#Dynamic_sites)에 대해 이미 설명하였습니다. 현대의 대부분의 웹사이트들은 어떤 데이터베이스(서버의 저장소)를 이용하여 서버에 데이터를 저장하고, 필요한 데이터를 찾아오기 위해 [서버-사이드](/ko/docs/Learn/Server-side) 코드를 돌리고, 정적인 페이지 템플릿에 데이터를 삽입하고, HTML 결과물을 사용자의 브라우저에 표시될 수 있게 제공합니다 - 즉 동적입니다. -클라이언트-사이드 저장소는 비슷한 원리로 작동하지만, 다르게 쓰입니다. 이것은 개발자가 클라이언트 측(사용자의 컴퓨터 등)에 데이터를 저장할 수 있고 필요할 때 가져올 수 있게 해주는 자바스크립트 API로 구성되어 있습니다. 이것의 다양한 용도는 다음과 같습니다. +클라이언트-사이드 저장소는 비슷한 원리로 작동하지만, 다르게 쓰입니다. 이것은 개발자가 클라이언트 측(사용자의 컴퓨터 등)에 데이터를 저장할 수 있고 필요할 때 가져올 수 있게 해주는 JavaScript API로 구성되어 있습니다. 이것의 다양한 용도는 다음과 같습니다. - 웹사이트에 대한 선호를 개인화하기(사용자가 선택한 커스텀 위젯, 배색, 폰트 크기로 보여주기) - 이전 활동 기록 저장하기(이전 세션에 담았던 장바구니 목록 저장하기, 로그인 유지하기) diff --git a/docs/ko/fully_untranslated_files/Learn_Server-side_Express_Nodejs_Introduction.md b/docs/ko/fully_untranslated_files/Learn_Server-side_Express_Nodejs_Introduction.md index ef687cd859052b..141a245df75025 100644 --- a/docs/ko/fully_untranslated_files/Learn_Server-side_Express_Nodejs_Introduction.md +++ b/docs/ko/fully_untranslated_files/Learn_Server-side_Express_Nodejs_Introduction.md @@ -34,13 +34,13 @@ slug: Learn/Server-side/Express_Nodejs/Introduction ## Express와 Node란? -[Node](https://nodejs.org/) (또는 더 공식적으로는 Node.js) 는 오픈소스, 크로스 플랫폼이며, 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 [JavaScript](/ko/docs/Glossary/JavaScript)로 만들수 있도록 해주는 런타임 환경이다.런타임은 브라우져 영역 밖에서도 사용할수 있도록 의도했다.(예를들면 서버 OS 또는 컴퓨터에서 직접적으로 실행되는). 이와 같이, 이 환경에서 특정 브라우져에서의 자바스트립트 API들을 제외시키고 , HTTP 와 파일 시스템 라이브러리들을 포함하여 더 많은 전형적인 OS API들을 추가했다. +[Node](https://nodejs.org/) (또는 더 공식적으로는 Node.js) 는 오픈소스, 크로스 플랫폼이며, 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 [JavaScript](/ko/docs/Glossary/JavaScript)로 만들수 있도록 해주는 런타임 환경이다.런타임은 브라우져 영역 밖에서도 사용할수 있도록 의도했다.(예를들면 서버 OS 또는 컴퓨터에서 직접적으로 실행되는). 이와 같이, 이 환경에서 특정 브라우져에서의 JavaScript API들을 제외시키고 , HTTP 와 파일 시스템 라이브러리들을 포함하여 더 많은 전형적인 OS API들을 추가했다. 웹 서버 관점에서 노드는 많은 장점들을 가진다: - 훌륭한 퍼포먼스! Node는 단위시간당 처리량과 어플리케이션에서 확장성을 최적화 시키고, 많은 공통적인 웹 개발 문제들을 맞먹는다.(예를들면 실시간 웹 어플리케이션들) -- 코드는 순수한 자바스크립트로 작성된다, 이는 당신이 각각 브라우져와 웹 서버 코드를 작성할때 언어들 사이에 "context shift" 를 다루는 시간을 적게 할수 있을을 의미한다. -- 자바스크립트는 비교적 새로운 프로그래밍 언어이고 또다른 전통적인 웹서버 언어들과 비교할때 언어적 설계에서 향상의 이득을 가진다. 많은 다른 새롭거나 인기있는 언어들은 자바스크립트로 컴파일하거나 변환한다 그래서 또한 당신은 커피스크립트, 클로져스크립트, 스칼라, 라이브 스크립트 등등을 사용할 수 있다. +- 코드는 순수한 JavaScript로 작성된다, 이는 당신이 각각 브라우져와 웹 서버 코드를 작성할때 언어들 사이에 "context shift" 를 다루는 시간을 적게 할수 있을을 의미한다. +- JavaScript는 비교적 새로운 프로그래밍 언어이고 또다른 전통적인 웹서버 언어들과 비교할때 언어적 설계에서 향상의 이득을 가진다. 많은 다른 새롭거나 인기있는 언어들은 JavaScript로 컴파일하거나 변환한다 그래서 또한 당신은 커피스크립트, 클로져스크립트, 스칼라, 라이브 스크립트 등등을 사용할 수 있다. - 노드 패키지 매니저(NPM)는 수천만개의 재사용가능한 패키지에 접근할 수 있도록 한다. 이것은 최고의 의존성 해결과 또한 수많은 빌드 툴체인이 자동화되도록 한다. - 이것은 마이크로소프트 윈도우, OS X, 룩스, 솔라리스, FreeBSD, OpenBSD, WebOS, 그리고 NonStop OS 등에서 돌아가는 버전과 같이 포터플하다. 더군다나, 이것은 특정한 인프라구조를 지원하고 Node 사이트 호스팅을 위한 문서를 제공하는 많은 웹 호스팅 공급자들에 의해서 잘 지원되고 있다. - 도움을 주고자 하는 수많은 사람들이 존재하는 아주 활발한 개발 생태계와 커뮤니티를 지니고 있다. diff --git a/docs/ko/fully_untranslated_files/Web_API_IndexedDB_API_Basic_Terminology.md b/docs/ko/fully_untranslated_files/Web_API_IndexedDB_API_Basic_Terminology.md index cd99c3b550577b..39d599e156c436 100644 --- a/docs/ko/fully_untranslated_files/Web_API_IndexedDB_API_Basic_Terminology.md +++ b/docs/ko/fully_untranslated_files/Web_API_IndexedDB_API_Basic_Terminology.md @@ -31,7 +31,7 @@ IndexedDB는 "키"로 인덱싱된 객체를 저장하고 검색할 수 있습 - **IndexedDB는 결과를 사용할 수 있을 때 DOM 이벤트를 통해 통지합니다.** DOM 이벤트는 항상 `type` 프로퍼티를 가집니다 (IndexedDB에서는 거의 대부분 `"success"` 또는 `"error"`로 설정됩니다.). DOM 이벤트는 이벤트가 향하는 곳이 어디인지를 나타내는 `target` 프로퍼티도 가집니다. 대부분의 경우에, 이벤트의 `target` 프로퍼티는 데이터베이스 동작의 결과로 생성된 `IDBRequest` 객체를 가리킵니다. 성공 이벤트는 버블링을 일으키지 않으며, 취소될 수 없습니다. 에러 이벤트는 반대로 버블링을 일으키고, 취소될 수도 있습니다. 에러 이벤트는 취소되지 않는 한 실행 중인 모든 트랜잭션을 중단하므로 이는 매우 중요합니다. - **IndexedDB는 객체지향적입니다.** IndexedDB는 행과 열의 컬렉션으로 대표되는 테이블을 사용하는 관계형 데이터베이스가 아닙니다. 이는 어플리케이션을 설계하고 구축하는 방식에 영향을 끼치는 중요하고 근본적인 차이입니다. - 전통적인 관계형 데이터 저장소에서는 데이터 행의 컬렉션과 명명된 자료형의 데이터 열을 저장하는 테이블을 갖습니다. 반면에 IndexedDB는 특정 타입의 데이터를 저장할 객체 저장소를 생성하고, 자바스크립트 객체를 저장소에 저장합니다. 각 객체 저장소는 쿼리와 순회를 효율적으로 만들어주는 인덱스 컬렉션을 갖습니다. 만약 객체지향 데이터베이스 관리 시스템에 친숙하지 않다면, [객체지향 데이터베이스에 대한 Wikipedia 문서](https://en.wikipedia.org/wiki/Object_database)를 읽어보세요. + 전통적인 관계형 데이터 저장소에서는 데이터 행의 컬렉션과 명명된 자료형의 데이터 열을 저장하는 테이블을 갖습니다. 반면에 IndexedDB는 특정 타입의 데이터를 저장할 객체 저장소를 생성하고, JavaScript 객체를 저장소에 저장합니다. 각 객체 저장소는 쿼리와 순회를 효율적으로 만들어주는 인덱스 컬렉션을 갖습니다. 만약 객체지향 데이터베이스 관리 시스템에 친숙하지 않다면, [객체지향 데이터베이스에 대한 Wikipedia 문서](https://en.wikipedia.org/wiki/Object_database)를 읽어보세요. - **IndexedDB does not use Structured Query Language (SQL).** It uses queries on an index that produces a cursor, which you use to iterate across the result set. If you are not familiar with NoSQL systems, read the [Wikipedia article on NoSQL](https://en.wikipedia.org/wiki/NoSQL). - **IndexedDB adheres to a same-origin policy**. An origin is the domain, application layer protocol, and port of a URL of the document where the script is being executed. Each origin has its own associated set of databases. Every database has a name that identifies it within an origin. diff --git a/docs/ko/fully_untranslated_files/Web_API_Service_Worker_API_Using_Service_Workers.md b/docs/ko/fully_untranslated_files/Web_API_Service_Worker_API_Using_Service_Workers.md index 249190cca1a916..dcc91253e4db49 100644 --- a/docs/ko/fully_untranslated_files/Web_API_Service_Worker_API_Using_Service_Workers.md +++ b/docs/ko/fully_untranslated_files/Web_API_Service_Worker_API_Using_Service_Workers.md @@ -17,7 +17,7 @@ slug: Web/API/Service_Worker_API/Using_Service_Workers > **참고:** Firefox 44에서 [AppCache](/ko/docs/Web/HTML/Using_the_application_cache) 를 사용해서 페이지의 오프라인 지원을 제공할 경우 콘솔에 [서비스 워커](/ko/docs/Web/API/Service_Worker_API/Using_Service_Workers) 를 대신 사용하는것에 대한 제안이 경고로 표시됩니다. ([Firefox bug 1204581](https://bugzil.la/1204581)) -서비스 워커는 최종적으로 이러한 문제를 해결해야 합니다. 서비스 워커 구문은 [AppCache](/ko/docs/Web/HTML/Using_the_application_cache) 보다 복잡하지만, 자바스크립트를 사용해서 세밀하게 [AppCache](/ko/docs/Web/HTML/Using_the_application_cache) 의 암묵적인 동작들을 제어할 수 있으므로 이 문제 그 이상을 처리 할 수 있습니다. 서비스 워커를 사용하면 먼저 캐싱된 리소스를 사용하도록 앱을 설정해서 오프라인일 경우에도 일관적인 경험을 제공한다음 네트워크 연결이 돌아올 때 더 많은 데이터를 불러오게 할 수 있습니다. (보통 [오프라인 우선](http://offlinefirst.org/) 이라고 함) 이 기능은 네이티브 앱에서는 이미 널리 사용되는 구현법이며, 이는 네이티브 앱이 웹 앱 대신 선택되는 주된 이유 중 하나입니다. +서비스 워커는 최종적으로 이러한 문제를 해결해야 합니다. 서비스 워커 구문은 [AppCache](/ko/docs/Web/HTML/Using_the_application_cache) 보다 복잡하지만, JavaScript를 사용해서 세밀하게 [AppCache](/ko/docs/Web/HTML/Using_the_application_cache) 의 암묵적인 동작들을 제어할 수 있으므로 이 문제 그 이상을 처리 할 수 있습니다. 서비스 워커를 사용하면 먼저 캐싱된 리소스를 사용하도록 앱을 설정해서 오프라인일 경우에도 일관적인 경험을 제공한다음 네트워크 연결이 돌아올 때 더 많은 데이터를 불러오게 할 수 있습니다. (보통 [오프라인 우선](http://offlinefirst.org/) 이라고 함) 이 기능은 네이티브 앱에서는 이미 널리 사용되는 구현법이며, 이는 네이티브 앱이 웹 앱 대신 선택되는 주된 이유 중 하나입니다. ## 서비스워커 개발을 위한 환경 설정 @@ -36,7 +36,7 @@ slug: Web/API/Service_Worker_API/Using_Service_Workers 1. {{domxref("serviceWorkerContainer.register()")}}을 통해서 서비스 워커 URL을 가져오고, 등록합니다. 2. 등록에 성공하면, {{domxref("ServiceWorkerGlobalScope") }} 범위에서 서비스 워커가 실행됩니다. 이는 (메인 스크립트 실행 쓰레드를 running off하면서) 기본적으로 DOM 접근이 없는 작업 문맥을 갖습니다. 3. 이제 서비스 워커는 이벤트를 처리할 준비가 되었습니다. -4. 서비스 워커가 제어하는 페이지들에 연속적으로 접근하게 될 때 서비스 워커 설치를 시도하게 됩니다. 서비스 워커는 항상 처음으로 설치 이벤트를 받습니다.(설치 이벤트는 IndexedDB를 생성하고, 사이트 assets을 캐싱하는 처리를 시작할 때 사용될 수 있습니다.) 설치 이벤트는 모든 것을 오프라인에서 사용할 수 있게 하는, 네이티브 또는 파이어폭스 OS 앱을 설치하는 프로시저와 같은 종류입니다. +4. 서비스 워커가 제어하는 페이지들에 연속적으로 접근하게 될 때 서비스 워커 설치를 시도하게 됩니다. 서비스 워커는 항상 처음으로 설치 이벤트를 받습니다.(설치 이벤트는 IndexedDB를 생성하고, 사이트 assets을 캐싱하는 처리를 시작할 때 사용될 수 있습니다.) 설치 이벤트는 모든 것을 오프라인에서 사용할 수 있게 하는, 네이티브 또는 Firefox OS 앱을 설치하는 프로시저와 같은 종류입니다. 5. `oninstall` 핸들러가 완료되면, 서비스 워커가 설치되었다고 할 수 있습니다. 6. 다음은 활성(activation) 이벤트입니다. 서비스 워커가 설치되면, 활성 이벤트를 받게 됩니다. `onactivate` 는 이전 버전의 서비스 워커 스크립트에서 사용된 리소스들을 삭제하는 용도로서 주로 사용됩니다. 7. 이제 서비스 워커가 페이지들을 제어하게 될 것이지만, 오직 `register()` 가 성공적으로 수행된 후에 페이지들이 열리게 될 것입니다. 즉, 문서는 서비스 워커와 함께, 또는 없이도 라이프를 시작하고 유지합니다. 따라서 문서는 실제로 서비스 워커에 제어되기 위해서 재시작 되어야 할 것입니다. diff --git a/docs/ko/fully_untranslated_files/Web_API_Web_Storage_API_Using_the_Web_Storage_API.md b/docs/ko/fully_untranslated_files/Web_API_Web_Storage_API_Using_the_Web_Storage_API.md index 4f08f01f3cc599..cdcb6ab6732627 100644 --- a/docs/ko/fully_untranslated_files/Web_API_Web_Storage_API_Using_the_Web_Storage_API.md +++ b/docs/ko/fully_untranslated_files/Web_API_Web_Storage_API_Using_the_Web_Storage_API.md @@ -11,7 +11,7 @@ Web Storage API는 브라우저에서 쿠키를 사용하는 것보다 훨씬 ## 기본 컨셉 -Storage 객체는 단순한 key-value 저장소이며, 이는 객체와 비슷합니다. 하지만 이 데이터들은 페이지 로딩에도 온전하게 유지됩니다. key와 그 value는 항상 문자열입니다. (만약 정수로 키를 사용할 경우 이는 자동으로 string으로 변경됩니다, 자바스크립트 객체의 동작방식을 생각해보세요) 객체를 사용하듯이 쉽게 값에 접근할 수 있으며, 이 때 {{domxref("Storage.getItem()")}}과 {{domxref("Storage.setItem()")}} 메서드를 사용할 수 있습니다. 아래 세 줄은 (동일한) colorSetting 엔트리에 값을 설정하는 방법입니다. +Storage 객체는 단순한 key-value 저장소이며, 이는 객체와 비슷합니다. 하지만 이 데이터들은 페이지 로딩에도 온전하게 유지됩니다. key와 그 value는 항상 문자열입니다. (만약 정수로 키를 사용할 경우 이는 자동으로 string으로 변경됩니다, JavaScript 객체의 동작방식을 생각해보세요) 객체를 사용하듯이 쉽게 값에 접근할 수 있으며, 이 때 {{domxref("Storage.getItem()")}}과 {{domxref("Storage.setItem()")}} 메서드를 사용할 수 있습니다. 아래 세 줄은 (동일한) colorSetting 엔트리에 값을 설정하는 방법입니다.
localStorage.colorSetting = '#a4509b'; localStorage['colorSetting'] = '#a4509b'; @@ -35,7 +35,7 @@ localStorage를 사용하려면 먼저 현재 브라우징 세션에서 지원 ### 사용 가능 검사 -localStorage를 지원하는 브라우저는 windows 객체에 localStorage라는 property가 존재 합니다. 그러나 여러 가지 이유로 인해 예외가 발생할 수 있습니다. 존재한다 해도 다양한 브라우저가 localStorage를 비활성화하는 설정을 제공하기 때문에 localStorage가 실제로 사용 가능하다는 보장은 없습니다. 따라서 브라우저가 localStorage를 지원한다고 해도 스크립트에서 사용 하지 못 할 수도 있습니다. 예를 들어 사파리 브라우저의 사생활 보호 모드에서 할당량이 0 인 빈 localStorage 개체를 제공하므로 효과적으로 사용할 수 없게 만듭니다. 이때 QuotaExceededError를 얻을 수도 있습니다. 이는 사용가능한 저장공간을 모두 소모 했다는 의미로, localStorage를 사용할 수 없음을 뜻합니다. 이러한 시나리오를 고려하여 사용가능 여부를 검사하여야 합니다. +localStorage를 지원하는 브라우저는 windows 객체에 localStorage라는 property가 존재 합니다. 그러나 여러 가지 이유로 인해 예외가 발생할 수 있습니다. 존재한다 해도 다양한 브라우저가 localStorage를 비활성화하는 설정을 제공하기 때문에 localStorage가 실제로 사용 가능하다는 보장은 없습니다. 따라서 브라우저가 localStorage를 지원한다고 해도 스크립트에서 사용 하지 못 할 수도 있습니다. 예를 들어 Safari 브라우저의 사생활 보호 모드에서 할당량이 0 인 빈 localStorage 개체를 제공하므로 효과적으로 사용할 수 없게 만듭니다. 이때 QuotaExceededError를 얻을 수도 있습니다. 이는 사용가능한 저장공간을 모두 소모 했다는 의미로, localStorage를 사용할 수 없음을 뜻합니다. 이러한 시나리오를 고려하여 사용가능 여부를 검사하여야 합니다. 다음은 localStorage가 지원되고 사용 가능한지 여부를 감지하는 함수입니다. diff --git a/docs/ko/fully_untranslated_files/Web_API_Web_Workers_API_Using_web_workers.md b/docs/ko/fully_untranslated_files/Web_API_Web_Workers_API_Using_web_workers.md index 300135c697e327..bb0506c5924c6a 100644 --- a/docs/ko/fully_untranslated_files/Web_API_Web_Workers_API_Using_web_workers.md +++ b/docs/ko/fully_untranslated_files/Web_API_Web_Workers_API_Using_web_workers.md @@ -7,7 +7,7 @@ slug: Web/API/Web_Workers_API/Using_web_workers ## Web Workers API -Worker는 생성자(예를 들면 {{domxref("Worker.Worker", "Worker()")}})를 사용하여 생성된 객체이며 이름있는 자바스크립트 파일(이 파일은 Worker 스레드에서 실행하는 코드를 가집니다)을 실행합니다. 또한 Worker는 현재의 {{domxref("window")}}와는 다른 글로벌 컨텍스트에서 실행됩니다. 따라서 {{domxref("Worker")}} 내에서 현재의 글로벌 스코프를 접근하기 위해 ({{domxref("window.self","self")}} 대신에) {{domxref("window")}}를 사용해도 오류가 돌아옵니다. +Worker는 생성자(예를 들면 {{domxref("Worker.Worker", "Worker()")}})를 사용하여 생성된 객체이며 이름있는 JavaScript 파일(이 파일은 Worker 스레드에서 실행하는 코드를 가집니다)을 실행합니다. 또한 Worker는 현재의 {{domxref("window")}}와는 다른 글로벌 컨텍스트에서 실행됩니다. 따라서 {{domxref("Worker")}} 내에서 현재의 글로벌 스코프를 접근하기 위해 ({{domxref("window.self","self")}} 대신에) {{domxref("window")}}를 사용해도 오류가 돌아옵니다. Worker의 콘텍스트는 Dedicated Workers(한 개의 스크립트가 이용하는 표준적인 Workers)일 경우{{domxref("DedicatedWorkerGlobalScope")}} 객체로 제공됩니다. (Shared Workers의 경우는 {{domxref("SharedWorkerGlobalScope")}}). Dedicated Worker 는 Worker 를 처음에 생성한 스크립트만 액세스 할 수 있습니다. 반면에 Shared Worker는, 복수의 스크립트에서 액세스 할 수 있습니다. diff --git a/docs/ko/fully_untranslated_files/Web_JavaScript_Reference_Lexical_grammar.md b/docs/ko/fully_untranslated_files/Web_JavaScript_Reference_Lexical_grammar.md index 042d87ff86299e..34ad978e988b00 100644 --- a/docs/ko/fully_untranslated_files/Web_JavaScript_Reference_Lexical_grammar.md +++ b/docs/ko/fully_untranslated_files/Web_JavaScript_Reference_Lexical_grammar.md @@ -80,7 +80,7 @@ slug: Web/JavaScript/Reference/Lexical_grammar ## 개행 문자 -공백문자와 더불어, 개행 문자는 소스 본문의 가독성을 향상시킵니다. 하지만, 몇몇 상황에서 개행 문자는 코드 내부에 숨겨지기 때문에 자바스크립트 코드 실행에 영향을 미칩니다. 개행 문자는 자동 새미콜론 삽입([automatic semicolon insertion](#Automatic_semicolon_insertion)) 규칙에도 영향을 줍니다. 개행 문자는 표준 표현방식([regular expressions](/ko/docs/Web/JavaScript/Guide/Regular_Expressions))의 클래스인 \s로 매치됩니다. +공백문자와 더불어, 개행 문자는 소스 본문의 가독성을 향상시킵니다. 하지만, 몇몇 상황에서 개행 문자는 코드 내부에 숨겨지기 때문에 JavaScript 코드 실행에 영향을 미칩니다. 개행 문자는 자동 새미콜론 삽입([automatic semicolon insertion](#Automatic_semicolon_insertion)) 규칙에도 영향을 줍니다. 개행 문자는 표준 표현방식([regular expressions](/ko/docs/Web/JavaScript/Guide/Regular_Expressions))의 클래스인 \s로 매치됩니다. 아래의 유니코드 문자만이 ECMAScript에서 라인 종결자로 다뤄지며, 라인을 바꾸는 다른 문자들은 공백으로 생각하시면 됩니다(예를 들어, Next Line, NEL, U+0085는 공백으로 간주). @@ -93,15 +93,15 @@ slug: Web/JavaScript/Reference/Lexical_grammar ## 주석 -주석은 힌트, 필기, 제안이나 주의할 점들을 자바스크립트 코드에 넣을 때 사용합니다. 이는 더 쉽게 읽고 이해할 수 있게 도와줍니다. 또한 특정 코드가 실행되지 않도록 막아주기도 합니다. 따라서 주석은 유용한 디버깅 도구라고도 할 수 있습니다. +주석은 힌트, 필기, 제안이나 주의할 점들을 JavaScript 코드에 넣을 때 사용합니다. 이는 더 쉽게 읽고 이해할 수 있게 도와줍니다. 또한 특정 코드가 실행되지 않도록 막아주기도 합니다. 따라서 주석은 유용한 디버깅 도구라고도 할 수 있습니다. -자바스크립트에는 코드 속에 주석을 쓰는 두 가지 방식이 있습니다. +JavaScript에는 코드 속에 주석을 쓰는 두 가지 방식이 있습니다. 첫 번째, '//'로 첨언하기입니다. 이는 아래의 예시처럼 같은 줄에 있는 모든 코드를 주석으로 바꿉니다. ```js function comment() { - // 자바스크립트의 각주 한 줄입니다. + // JavaScript의 각주 한 줄입니다. console.log("Hello world!"); } comment(); @@ -113,7 +113,7 @@ comment(); ```js function comment() { - /* 자바스크립트 각주 한 줄입니다. */ + /* JavaScript 각주 한 줄입니다. */ console.log("Hello world!"); } comment(); diff --git a/files/es/learn/html/introduction_to_html/getting_started/index.md b/files/es/learn/html/introduction_to_html/getting_started/index.md index bb650450aed0e3..b9e7791eb95681 100644 --- a/files/es/learn/html/introduction_to_html/getting_started/index.md +++ b/files/es/learn/html/introduction_to_html/getting_started/index.md @@ -1,72 +1,75 @@ --- -title: Empezar con HTML +title: Primeros pasos con HTML slug: Learn/HTML/Introduction_to_HTML/Getting_started +l10n: + sourceCommit: 194ea6cb5ddaf20e4f551cc93574be50b8b4f339 --- {{LearnSidebar}}{{NextMenu("Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML", "Learn/HTML/Introduction_to_HTML")}} -En este artículo vamos a exponer lo más básico del HTML. Para comenzar definiremos elementos, atributos y el resto de términos importantes que quizá ya te suenen y qué función cumplen dentro del lenguaje. También explica dónde encajan estos en HTML. Aprenderás cómo se estructuran los elementos HTML, cómo se estructura una página HTML típica y otras características básicas importantes del lenguaje. Por el camino, también iremos practicando con algo de HTML. +En este artículo, cubrimos los conceptos básicos de HTML. Para empezar, este artículo define elementos, atributos y todos los demás términos importantes que puedas haber escuchado. También explica dónde encajan en HTML. Aprenderás cómo se estructuran los elementos HTML, cómo se estructura una página HTML típica y otras características importantes del lenguaje básico. ¡En el camino, también tendrás la oportunidad de jugar con HTML!
Prerrequisitos: | +Requisitos previos: | - Conocimientos básicos de informática, - - tener instalado el software básico - - y conocimientos básicos de cómo - - trabajar con archivos - . + Conocimientos informáticos básicos, + software básico instalado, y conocimientos básicos de + trabajar con archivos. |
---|---|---|
Objetivo: | - Familiarizarte con el lenguaje HTML, y adquirir algo de práctica - escribiendo unos pocos elementos HTML. + Para obtener una familiaridad básica con HTML y practicar la escritura de algunos + elementos HTML |
Mi gato es muy gruñón
``` -> **Nota:** Las etiquetas en HTML no distinguen entre mayúsculas y minúsculas. Así que se pueden escribir tanto en mayúsculas como en minúsculas. Por ejemplo, una etiqueta {{htmlelement("title")}} se puede escribir como `Mi gato es muy gruñón
.](grumpy-cat-small.png) -Las principales partes de nuestro elemento son: +La anatomía de nuestro elemento es: -- La **etiqueta de apertura**: consiste en el nombre del elemento (en este caso, `p`), encerrado entre **paréntesis angulares** de apertura y cierre. Esta etiqueta de apertura marca dónde comienza el elemento o comienza a tener efecto. En este ejemplo, precede al comienzo del texto del párrafo. -- El **contenido**: Este es el contenido del elemento. En este ejemplo, es el texto del párrafo. -- La **etiqueta de cierre**: Es lo mismo que la etiqueta de apertura, excepto que incluye una barra diagonal antes del nombre del elemento. Esto indica dónde termina el elemento; en este caso, dónde finaliza el párrafo. No incluir una etiqueta de cierre es un error común de principiante, y puede conducir a extraños resultados. +- **La etiqueta de apertura:** Consiste en el nombre del elemento (en este ejemplo, _p_ para el párrafo), envuelto en corchetes angulares de apertura y cierre. Esta etiqueta de apertura marca dónde inicia o comienza a surtir efecto el elemento. En este ejemplo, precede al inicio del texto del párrafo. +- **El contenido:** Este es el contenido del elemento. En este ejemplo, es el texto del párrafo. +- **La etiqueta de cierre:** Esta es la misma que la etiqueta de apertura, excepto que incluye una barra diagonal delante del nombre del elemento. Esto marca donde termina el elemento. No incluir una etiqueta de cierre es un error común para principiantes que puede producir resultados peculiares. -El **elemento** lo conforman la etiqueta de apertura, seguida del contenido, seguido de la etiqueta de cierre. +El elemento es la etiqueta de apertura, seguida del contenido, seguida de la etiqueta de cierre. ### Aprendizaje activo: crear tu primer elemento HTML -Edita la siguiente línea en el área _Entrada_ envolviéndola con las etiquetas `` y ``. Para _abrir el elemento_, coloca la etiqueta de apertura `` al principio de la línea. Para _cerrar el elemento_, coloca la etiqueta de cierre `` al final de la línea. ¡Obtienes una línea en cursiva! Puedes ver tus cambios actualizados automáticamente en la caja de texto de _Salida_. +Edite la siguiente línea en el área "Código editable" envolviéndola con las etiquetas `` y `.` Para _abrir el elemento_, coloque la etiqueta de apertura `` al comienzo de la línea. Para _cerrar el elemento_, coloque la etiqueta de cierre `` al final de la línea. ¡Hacer esto debería darle formato de texto en cursiva a la línea! Consulta la actualización de tus cambios en vivo en el área de*Salida en vivo*. -Si te equivocas, siempre puedes volver al código anterior mediante el botón _Restablecer_. Si te quedas realmente atascado, pulsa el botón _Mostrar la solución_ para ver la solución. +Si comete un error, puede borrar su trabajo utilizando el botón*Restablecer*. Si te quedas realmente atascado, pulsa el botón*Mostrar solución* para ver la respuesta. ```html hidden- Pulsa Esc para quitar el foco del área de código (Tab inserta un carácter de + Pulse Esc para alejar el foco del área de código (Tab inserta un carácter de tabulación).
Mi gato es muy gruñón.
``` -Hay una forma correcta e incorrecta de anidar. En el ejemplo anterior, primero abrimos el elemento `p`, luego abrimos el elemento `strong`. Para un anidamiento adecuado, primero debemos cerrar el elemento `strong`, antes de cerrar el `p`. +Hay una forma correcta e incorrecta de anidar. En el ejemplo anterior, abrimos primero el elemento `p`, luego abrimos el elemento `strong`. Para una anidación adecuada, primero debemos cerrar el elemento `strong`, antes de cerrar `p`. El siguiente es un ejemplo de la forma _incorrecta_ de anidar: -```html example-bad +```html-nolint example-badMi gato es muy gruñón.
``` -Los elementos tienen que abrirse y cerrarse correctamente para que estén claramente dentro o fuera el uno del otro. Con el tipo de superposición en el ejemplo anterior, el navegador tiene que adivinar tu intención. Este tipo de adivinanzas puede producir resultados inesperados. - -### Elementos de bloque y elementos en línea - -Hay dos categorías importantes de elementos en HTML — Estos son los elementos de bloque y los elementos en línea. - -- Los elementos de bloque forman un bloque visible en la página. Aparecerán en una línea nueva después de cualquier contenido anterior. Cualquier contenido que vaya después también aparecerá en una línea nueva. Los elementos a nivel de bloque suelen ser elementos estructurales de la página. Por ejemplo, un elemento a nivel de bloque puede representar encabezados, párrafos, listas, menús de navegación o pies de página. Un elemento a nivel de bloque no estaría anidado dentro de un elemento en línea, pero podría estar anidado dentro de otro elemento a nivel de bloque. -- Los elementos en línea están contenidos dentro de elementos de bloque y delimitan solo pequeñas partes del contenido del documento; (no párrafos enteros o agrupaciones de contenido) Un elemento en línea no hará que aparezca una nueva línea en el documento. Suele utilizarse con texto. Por ejemplo es el caso de un elemento {{htmlelement("a")}} (hipervínculo) o elementos de énfasis como {{htmlelement("em")}} o {{htmlelement("strong")}}. - -Considera el siguiente ejemplo: - -```html -primerosegundotercero - -cuarto
-quinto
-sexto
-``` - -{{htmlelement("em")}} es un elemento en línea. Así, como puedes observar, los tres primeros elementos se sitúan en la misma línea, uno tras otro sin espacio entre ellos. Por otro lado, {{htmlelement("p")}} es un elemento a nivel de bloque. Cada elemento _p_ aparece en una nueva línea, con un espacio arriba y abajo. (El espaciado se debe al [estilo CSS](/es/docs/Learn/CSS/First_steps) predeterminado que el navegador aplica a los párrafos). - -{{ EmbedLiveSample('Elementos_de_bloque_y_elementos_en_línea', 700, 200, "", "") }} - -> **Nota:** HTML5 redefinió las categorías de elementos: consulta [Categorías de contenido de elementos](https://html.spec.whatwg.org/multipage/indices.html#element-content-categories). Si bien estas definiciones son más precisas y menos ambiguas que sus predecesoras, las nuevas definiciones son mucho más complicadas de entender que _block_ e _inline_ . Este artículo seguirá con estos dos términos. - -> **Nota:** Los términos «en bloque» (block) y «en línea» (inline), tal como se usan en este tema, no se deberían confundir con [los tipos de casillas de CSS](/es/docs/Learn/CSS/Introduction_to_CSS/Box_model#Types_of_CSS_boxes) que se conocen con el mismo nombre. Aunque de manera predeterminada están relacionados, el hecho de cambiar el tipo de aspecto visual del CSS no cambia la categoría del elemento ni afecta a aquellos elementos que pueda contener. Una de las razones por las que HTML5 abandonó el uso de estos términos fue para evitar este tipo de confusión. - -> **Nota:** Puedes encontrar referencias útiles que incluyen listas de elementos de bloque y elementos en línea. Consulta [Elementos en bloque](/es/docs/Glossary/Block-level_content) y [Elementos en línea](/es/docs/orphaned/Web/HTML/Inline_elements). +Las **etiquetas tienen que abrirse y cerrarse de manera que estén dentro o fuera la una de la otra**. Con el tipo de superposición en el ejemplo anterior, el navegador tiene que adivinar tu intención. Este tipo de adivinanzas puede dar lugar a resultados inesperados. ### Elementos vacíos -No todos los elementos siguen el patrón de etiqueta de apertura, contenido y etiqueta de cierre. Algunos elementos consisten solo en una etiqueta única, que se utiliza generalmente para insertar/incrustar algo en el documento en el lugar donde se le quiere incluir. Por ejemplo, el elemento {{htmlelement("img")}} inserta una imagen en la página: +No todos los elementos siguen el patrón de una etiqueta de apertura, contenido y una etiqueta de cierre. Algunos elementos consisten en una sola etiqueta, que normalmente se utiliza para insertar/incrustar algo en el documento. Dichos elementos se denominan {{glossary("void element", "elementos vacíos")}}. Por ejemplo, el elemento {{htmlelement ("img")}} incrusta un archivo de imagen en una página: ```html + src="https://raw.githubusercontent.com/mdn/beginner-html-site/gh-pages/images/firefox-icon.png" + alt="Icono de Firefox" /> ``` -Este texto mostrará lo siguiente en tu página: +Esto daría como resultado lo siguiente: -{{ EmbedLiveSample('Elementos_vacíos', 700, 300, "", "", "hide-codepen-jsfiddle") }} +{{ EmbedLiveSample('elementos_vacíos', 700, 300, "", "") }} -> **Nota:** Los elementos vacíos en ocasiones también se llaman elementos _nulos_ o _vanos_ (_void elements_). +> **Nota:** En HTML, no es necesario añadir un `/` al final de la etiqueta de un elemento vacío, por ejemplo: ``. Sin embargo, también es una sintaxis válida, y puede hacerlo cuando desee que su HTML sea XML válido. ## Atributos -Los elementos también pueden tener atributos. Los atributos tienen este aspecto: +Los elementos también pueden tener atributos. Los atributos se ven así: -![atributo html](grumpy-cat-attribute-small.png) +![etiqueta de párrafo con el atributo 'class="editor-note"' enfatizado](grumpy-cat-attribute-small.png) -Los atributos contienen información extra sobre el elemento que no se mostrará en el contenido. En este caso, el atributo `class` asigna al elemento un identificador que se puede utilizar para dotarlo de información de estilo. +Los atributos contienen información adicional sobre el elemento que no aparecerá en el contenido. En este ejemplo, el atributo **`class`** es un nombre de identificación utilizado para identificar el elemento con información de estilo. -Un atributo debería tener: +Un atributo debe tener: -- Un espacio entre este y el nombre del elemento. (Para un elemento con más de un atributo, los atributos también deben estar separados por espacios). -- El nombre del atributo, seguido por un signo igual. -- Un valor del atributo, rodeado de comillas de apertura y cierre. +- Un espacio entre él y el nombre del elemento. (Para un elemento con más de un atributo, los atributos también deben estar separados por espacios). +- El nombre del atributo, seguido de un signo igual. +- Un valor de atributo, envuelto con comillas de apertura y cierre. -### Aprendizaje activo: Añadir atributos a un elemento +### Aprendizaje activo: añadir atributos a un elemento -Otro ejemplo de un elemento es {{htmlelement("a")}}. Esto significa _ancla_. Una ancla puede convertir el texto que encierra en un hipervínculo. Las anclas pueden tener varios atributos, pero varios son como sigue: +El elemento `` puede tomar una serie de atributos, que incluyen: -- `href` - - : El valor de este atributo indica la dirección web a la que se quiere que apunte el enlace, que será hacia donde nos lleve el navegador cuando se haga clic sobre el elemento. Por ejemplo, `href="https://www.mozilla.org/"`. -- `title` - - : El atributo `title` añade información adicional sobre el enlace, como puede ser el título de la página que vinculas. Por ejemplo, `title="La página de inicio de Mozilla"`. Esta información aparecerá cuando se le pase el ratón por encima. -- `target` - - : El atributo `target` especifica el contexto de navegación que va a usar para mostrar el enlace. Por ejemplo, `target="_blank"` abrirá el enlace en una nueva pestaña. Si quieres mostrar el enlace en la pestaña activa, simplemente omite este atributo. +- `src` + - : El atributo `src` es un atributo **requerido** que especifica la ubicación de la imagen. Por ejemplo: `src="https://raw.githubusercontent.com/mdn/beginner-html-site/gh-pages/images/firefox-icon.png"`. +- `alt` + - : El atributo `alt` especifica una descripción de texto de la imagen. Por ejemplo: `alt="El icono de Firefox"`. +- `width` + - : El atributo `width` especifica el ancho de la imagen con la unidad en píxeles. Por ejemplo: `width="300"`. +- `height` + - : El atributo `height` especifica la altura de la imagen con la unidad en píxeles. Por ejemplo: `height="300"`. -Edita la línea de abajo en el área de _Entrada_ para convertirlo en un enlace a tu sitio web favorito. +Edita la siguiente línea en el área del _Input_ para convertirla en una imagen. -1. Añade el elemento ``. -2. Añade el atributo `href` y el atributo `title`. -3. Especifica el atributo `target` para abrir el enlace en una nueva pestaña. +1. Encuentra tu imagen favorita en línea, haz clic con el botón derecho y pulsa _Copiar enlace/dirección de imagen_. +2. De vuelta en el área de abajo, añade el atributo `src` y rellénalo con el enlace del paso 1. +3. Establece el atributo `alt`. +4. Añade los atributos `width` y `height`. -Los cambios se actualizarán inmediatamente en la zona de _Salida_. Deberías ver un enlace que mostrará el contenido del atributo `title` cuando pases el ratón encima, y que te llevará a la dirección web indicada por el atributo `href` cuando hagas clic. Recuerda que debes incluir un espacio entre el nombre del elemento y cada atributo. +Podrás ver los cambios en vivo en el área de _Salida_. -Si te equivocas, siempre puedes restablecer el código anterior pulsando el botón _Restablecer_. Si te quedas realmente atascado, pulsa el botón _Mostrar la solución_ para ver la solución. +Si comete un error, siempre puede restablecerlo utilizando el botón _Restablecer_. Si te quedas realmente atascado, pulsa el botón _Mostrar solución_ para ver la respuesta. ```html hidden- Pulsa Esc para quitar el foco del área de código (Tab inserta un carácter de + Pulse Esc para alejar el foco del área de código (Tab inserta un carácter de tabulación).