https://www.youtube.com/watch?v=TTLHd3IyErM - 드림코딩 Front-end 로드맵 영상
JavaScript
2. Browser APIs
browser API (or Web API)는 브라우저에게 기본으로 제공되는 API를 말한다. DOM 조작, 네트워크 통신을 요청, 클라이언트 측 저장소를 관리, 장치 미디어 스트림 검색 등을 위한 다양한 API가 있다.
.
DOM manipulation
DOM이란 HTML 및 XML 문서를 위한 프로그래밍 인터페이스로 프로그램이 문서 구조, 스타일, 내용을 변경할 수 있도록 페이지를 나타내며 문서를 노드와 객체로 나타내 프로그래밍 언어가 페이지에 연결할 수 있도록 하는 인터페이스.
/*==== Element 생성 ====*/
const div = document.createElement('div')
/*==== Element 추가 ====*/
const div = document.createElement('div')
const p = document.createElement('p')
p.append('test') // TEXT 추가
div.append(p) // p태그(요소) 추가
const div = document.createElement('div')
const p = document.createElement('p')
div.appendChild(p) // p태그(요소) 추가
/*==== Element 조회 ====*/
const one = document.querySelector('.list') // class가 list인 Element 중 첫번째 노드
const all = document.querySelecotr('.list') // class가 list인 Element 노드 전체
const id = document.getElementById('name') // id가 name인 Element 노드
/*==== Element 수정 ====*/
// '홍길동' 으로 value 속성 추가
document.getElementById('name').setAttribute('value', '홍길동')
// class 에 test 추가
document.getElementById('name').classList.add('test')
// text 값을 가져오거나 text을 수정
element.textContent = 'update'
element.innerHTML = 'update'
.
Events API
마우스나 키보드를 조작하여 어떠한 기능을 실행하는 것을 이벤트라고 하며 이러한 이벤트를 감지하고 특정 코드를 실행할 수 있도록 하는 API
const btn1 = docu,ent.getElementById('btn1')
const btn2 = docu,ent.getElementById('btn2')
const monitor = document.getElementById('monitor')
btn1.addEventListener('click', clickBtn1)
btn2.addEventListener('click' function () {
monitor.innerHTML = 'btn2 click!!!'
})
function clickBtn1 () {
monitor.innerHTML = 'btn1 click!!!'
}
/*
btn1 을 클릭하면 monitor 요소에 'btn1 click!!!' 이 보여진다.
btn2 를 클릭하면 monitor 요소에 'btn2 click!!!' 이 보여진다.
*/
.
Fetch API
Fetch API는 브라우저에서 네트워크 요청을 수행하는데 사용된다.
// GET
fetch('https://api.test.com/posts')
.then(response => response.json())
.then(json => console.log(json))
// POST
fetch('https://api.test.com/posts', {
method: 'POST',
body: JSON.stringify({
title: 'title',
body: 'body',
userId: 1
}),
credentials: 'include',
headers: {
'Content-type': 'application/json; charset=UTF-8'
}
})
.then(response => response.json())
.then(json => console.log(json))
// PUT
fetch('https://api.test.com/posts/1', {
method: 'PUT',
body: JSON.stringify({
id: 1,
title: 'title',
body: 'body',
userId: 1
}),
credentials: 'include',
headers: {
'Content-type': 'application/json; charset=UTF-8'
}
})
.then(response => response.json())
.then(json => console.log(json))
// DELETE
fetch('https://api.test.com/posts/1', {
method: 'DELETE'
})
.
Canvas API
Canvas API는 javascript 및 HTML을 사용하여 그래픽을 그리는 데 사용된다. 사진 조작, 비디오 처리, 데이터 시각화 및 게임 개발과 같은 분야에서 사용된다.
<!DOCTYPE html>
<html>
<head>Canvas API demo</head>
<body>
<canvas id="canvas"> </canvas>
<script>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
// draw rectangle
ctx.fillStyle = 'yellow';
ctx.fillRect(10, 10, 150, 100);
// draw circle
var centerX = canvas.width / 2;
var centerY = 65;
var radius = 50;
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
ctx.fillStyle = 'red';
ctx.fill();
// draw triangle
ctx.beginPath();
ctx.moveTo(350, 10);
ctx.lineTo(350, 200);
ctx.lineTo(500, 200);
ctx.closePath();
ctx.fillStyle = 'blue';
ctx.fill();
</script>
</body>
</html>
See the Pen JS Canvas Exam by Byeongyeong Kim (@beark93) on CodePen.
.
Fullscreen API
Fullscreen API는 특정 DOM 요소를 전체 화면으로 전환할 수 있는 API
async function goFullScreen() {
document.getElementById('fullscreen')
.requestFullscreen()
.then((res) => {
console.log('Went full screen');
})
.catch((err) => {
console.log('Fullscreen error: ', err);
});
}
async function handleExitFullScreen() {
document.exitFullscreen()
.then((res) => {
console.log('Exit full screen success');
})
.catch((err) => {
console.log('Fullscreen error: ', err);
});
}
.
Clipboard API
Clipboard API는 Clipboard에 쓰기/읽기 작업을 할 수 있도록 하는 API
// Write text data to the clipboard
async function copyText(){
try{
await navigator.clipboard.writeText(document.getElementById('val').value)
alert('Copied to clipboard');
}
catch(err){
console.log('Copied to clipboard err: ',err);
}
}
// Read text data from the clipboard
async function pasteText(){
try{
const readText = await navigator.clipboard.readText()
document.querySelector('#pasted-value').innerText += readText
}
catch(err){
console.log('paste text error: ',err)
}
}
// Write data (eg: text/plain, image/png etc) to the clipboard
async function copyData(){
try{
const data = await fetch('https://i.imgur.com/RGuxleZ.png');
const blob = await data.blob();
await navigator.clipboard.write([
new ClipboardItem({[blob.type]: blob})
]);
alert('Image copied.');
}
catch(err){
console.log('Error occured when copying image data: ',err)
}
}
// Read data (eg: text/plain, image/png etc) from the clipboard
function pasteData(){
// Requesting explicit permission of the user
navigator.permissions.query({name: 'clipboard-read'}).then(async result => {
// If the permission is already granted or the user will be prompted to allow it
if (result.state == 'granted' || result.state == 'prompt') {
try {
const clipboardItems = await navigator.clipboard.read();
for (const clipboardItem of clipboardItems) {
for (const type of clipboardItem.types) {
if(type === 'image/png'){
const blob = await clipboardItem.getType(type);
document.getElementById('pasted-img').src= URL.createObjectURL(blob)
}
}
}
} catch (err) {
console.error(err.name, err.message);
}
}
});
}
.
Geolocation API
Geolocation API는 사용자가 Web Application에 자신의 위치를 알릴 수 있다. 위치 검색 전 개인정보보호를 위해 명시적으로 허가를 요청한다.
<html>
<body>
<button id="location">location</button>
<button id="track">track</button>
<div id="status">Status</div>
</body>
<script
const status = document.querySelector("#status");
function getCurrentLocation() {
if (navigator.geolocation) {
status.textContent = "Locating…";
navigator.geolocation.getCurrentPosition(success, error);
} else {
status.textContent = "Geolocation is not supported by your browser";
}
}
function trackUserLocation() {
if (navigator.geolocation) {
status.textContent = "Locating…";
navigator.geolocation.watchPosition(success, error);
} else {
status.textContent = "Geolocation is not supported by your browser";
}
}
function success(position) {
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
status.textContent = `Latitude: ${latitude} °, Longitude: ${longitude} °`;
}
function error() {
status.textContent = "Unable to retrieve your location";
}
document.querySelector("#location").addEventListener("click", getCurrentLocation);
document.querySelector("#track").addEventListener("click", trackUserLocation);
</script>
</html>
See the Pen JS Geolocation Exam by Byeongyeong Kim (@beark93) on CodePen.
.
참조
https://javascript.plainenglish.io/6-browser-apis-you-need-to-know-as-a-front-end-developer-76752633280b