λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

JavaScript26

js μ—μ„œ ν•œκΈ€ κΈ€μž 수 μ„ΈκΈ° νŒŒμΌμ„ 첨뢀할 λ•Œ 파일λͺ…을 λ³΄μ—¬μ£ΌλŠ” input λ°•μŠ€ 길이 보닀 파일λͺ…이 더 κΈΈ 경우, 파일λͺ…이 μ˜€λ²„λ˜μ–΄ μΌλΆ€λ§Œ 좜λ ₯λ˜λŠ” ν˜„μƒμ΄ λ°œμƒν–ˆλ‹€. 파일λͺ…μ˜ κΈ€μž 수λ₯Ό μ œν•œν•˜μ—¬ 파일λͺ…이 input λ°•μŠ€ λ‚΄μ—μ„œ μž˜λ¦¬μ§€ μ•Šκ²Œ 좜λ ₯ν•΄μ•Ό ν–ˆλ‹€. 파일λͺ…에 ν•œκΈ€μ΄ μžˆλŠ” 경우, ν•œκΈ€μ€ λͺ¨μŒ/자음 λ‹¨μœ„λ‘œ length κ°€ κ³„μ‚°λ˜κ³  μžˆμ—ˆλ‹€. 예λ₯Ό λ“€μ–΄, 파일λͺ…이 "μ•„moya" 라고 ν•œλ‹€λ©΄, μ•„ λΌλŠ” κΈ€μžμ˜ length λŠ” 1둜 μ²˜λ¦¬λ˜μ–΄μ•Ό ν•˜μ§€λ§Œ 'γ…‡' κ³Ό 'ㅏ' κ°€ 각각 κ³„μ‚°λ˜μ–΄ 길이가 2둜 좜λ ₯λœλ‹€. 파일λͺ… 값이 λ“  λ³€μˆ˜λ₯Ό μœ λ‹ˆμ½”λ“œ μ •κ·œν™”(normalize) ν•΄μ£Όλ‹ˆ ν•œκΈ€ length 길이가 1둜 μ²˜λ¦¬λ˜λŠ” 것을 확인할 수 μžˆλ‹€. // 파일λͺ… μ •κ·œν™” var fileName = orgFileName.normalize('NFC'); μ‚¬μš©.. 2022. 10. 13.
window.postMessage 둜 μœˆλ„μš° 컨트둀 ν•˜κΈ° 순수 js 둜 μž‘μ—…ν•œ A μœˆλ„μš°μ—μ„œ μ–΄λ–€ 메뉴λ₯Ό ν΄λ¦­ν•˜λ©΄ a λ‹€μ΄μ–Όλ‘œκ·Έκ°€ 좜λ ₯λ˜λŠ”λ°, a λ‹€μ΄μ–Όλ‘œκ·Έ μ•ˆμ— μžˆλŠ” 확인 λ²„νŠΌ(okBtn)을 ν΄λ¦­ν•˜λ©΄ B μœˆλ„μš°κ°€ νŒμ—…μœΌλ‘œ μ—΄λ¦°λ‹€. (μ΄λ•Œ Bμœˆλ„μš°λŠ” λ¦¬μ•‘νŠΈλ‘œ μž‘μ—…ν•œ λΆ€λΆ„) A μœˆλ„μš°μ˜ a λ‹€μ΄μ–Όλ‘œκ·Έμ—λŠ” μ·¨μ†Œ λ²„νŠΌ(closeBtn) 도 μžˆλŠ”λ°, μ·¨μ†Œ λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ B μœˆλ„μš°κ°€ λ‹«ν˜€μ•Ό ν•œλ‹€. 그런데 Bκ°€ μœˆλ„μš° νŒμ—…μ΄λΌ λ‹€λ₯Έ 탭에 κ·ΈλŒ€λ‘œ λ‚¨μ•„μžˆμ–΄μ„œ ν•΄λ‹Ή 뢀뢄을 μ·¨μ†Œ λ²„νŠΌ 클릭 μ‹œ μžλ™μœΌλ‘œ λ‹«νžˆκ²Œ μˆ˜μ •ν•΄μ•Ό ν–ˆλ‹€. μ²˜μŒμ— κ²€μƒ‰ν•˜λ©΄μ„œ 크둬 λ‚΄μ—μ„œλŠ” 도메인이 λ‹€λ₯Έ μœˆλ„μš°λ₯Ό 닫을 수 μ—†λ‹€λŠ” 글을 λ΄€μ—ˆλŠ”λ°, κ·Έ λ•Œλ¬Έμ— ν˜Όλž€μ΄ μ™€μ„œ ν•΄κ²°ν•  방법이 κ³Όμ—° μžˆλŠ”κ±΄μ§€ λͺ‡ μ‹œκ°„μ„ κ³ λ―Όν–ˆλ‹€ γ… γ…  순수 js 기반 μœˆλ„μš° λ‚΄μ—μ„œ λ¦¬μ•‘νŠΈ μœˆλ„μš°λ₯Ό 컨트둀 ν•  수 μžˆλŠ”μ§€λ„ λͺ¨λ₯΄κ² κ³ .. λ©˜λΆ•μ΄μ—ˆ.. 2022. 8. 17.
window κ°μ²΄λž€ 무엇인가? μ½”λ“œλ₯Ό 훑어보닀가 μ•„λž˜μ™€ 같이 window 객체에 ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό λ§Œλ“  μ½”λ“œλ₯Ό λ°œκ²¬ν–ˆλ‹€. 보톡은 λ³€μˆ˜λ‘œ ν•¨μˆ˜ μ„ μ–Έ 및 ν˜ΈμΆœν•˜λŠ” 방식을 μ‚¬μš©ν•˜λŠ”λ° window 객체둜 ν˜ΈμΆœν•˜λŠ” 방식이라 μ‹ κΈ°ν•΄μ„œ ν•œλ²ˆ μ•Œμ•„λ³΄κ³ μž ν•œλ‹€. window κ°μ²΄λž€? λΈŒλΌμš°μ € 전체λ₯Ό λ‹΄λ‹Ήν•˜λŠ” 객체 λͺ¨λ“  객체의 쑰상(μ „μ—­ 객체) μ΅œμƒμœ„μ— μžˆλŠ” 객체이기 λ•Œλ¬Έμ— μ–΄λ””μ„œλ“  접근이 κ°€λŠ₯ν•˜λ‹€. λ˜ν•œ μ „μ—­ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  경우 μ‹€μ œλ‘œλŠ” window.ν•¨μˆ˜λͺ…이 λ˜μ§€λ§Œ, window κ°€ μƒλž΅λ˜λŠ” 것이라고 ν•œλ‹€. "이 ν¬μŠ€νŒ…μ€ 쿠팑 νŒŒνŠΈλ„ˆμŠ€ ν™œλ™μ˜ μΌν™˜μœΌλ‘œ, 이에 λ”°λ₯Έ μΌμ •μ•‘μ˜ 수수료λ₯Ό μ œκ³΅λ°›μŠ΅λ‹ˆλ‹€." 2022. 5. 23.
쑰건문 쀄이기(feat. 클린 μ½”λ“œ) 였늘 νšŒμ‚¬μ—μ„œ μ½”λ“œ 리뷰? μœ μ§€λ³΄μˆ˜ μ½”λ“œ κ°œμ„  λ°©μ•ˆ 회의λ₯Ό ν–ˆλŠ”λ° μ‹ μž…μ΄λΌμ„œ λ‚˜λ„ μ°Έκ΄€ν–ˆλ‹€! κ·Έ 쀑에 기얡에 λ‚¨λŠ” 뢀뢄은 쑰건문을 μ€„μ΄λŠ” λ°©μ•ˆμ— κ΄€ν•œ 것이닀. κ°œμ„ ν•΄μ•Ό ν•˜λŠ” 뢀뢄은 맀번 같은 λ‘œμ§μ„ νƒ€μ§€λ§Œ μΌ€μ΄μŠ€ λ³„λ‘œ κ°’λ§Œ λ‹€λ₯΄κ²Œ λ°”λ€ŒλŠ” μƒνƒœμ—¬μ„œ μΌ€μ΄μŠ€λ³„λ‘œ switch-case λ˜λŠ” if 문으둜 μž‘μ„±λ˜μ–΄μ„œ κ·Έ μ•ˆμ—μ„œ κ°’λ§Œ λ°”κΏ”μ£Όκ³  μžˆμ—ˆλ‹€. μ½”λ“œκ°€ μ΄λ ‡κ²Œ μž‘μ„±λ˜μ–΄ 있으면 ν˜Ήμ—¬λ‚˜ λ‹€λ₯Έ μΌ€μ΄μŠ€κ°€ μΆ”κ°€λ˜λŠ” 경우 쑰건문도 계속 λŠ˜μ–΄λ‚˜κΈ° λ•Œλ¬Έμ— νš¨μœ¨λ©΄μ—μ„œ 쒋지가 μ•Šλ‹€. ν•΄λ‹Ή λΆ€λΆ„μ—μ„œ switch-case 문을 μ—†μ• λŠ” λ°©μ•ˆμ— λŒ€ν•΄ 이야기 ν–ˆλŠ”λ°, λ‚˜λ„ 그와 λΉ„μŠ·ν•œ 고민을 해본적은 μžˆμ§€λ§Œ 항상 해결책을 μ°Ύμ§€λŠ” μ•Šκ³  λλ‚¬λ˜ 것 κ°™λ‹€. κ·Έλž˜μ„œ κ·Έ 말을 듀어도 λ°”λ‘œ λ”± ν•΄κ²° λ°©μ•ˆμ„ μ–˜κΈ°ν•  μˆ˜κ°€ μ—†μ—ˆλ‹€ ... 결둠은 같은 둜.. 2022. 5. 20.
Babel μ΄λž€? ν”„λ‘œμ νŠΈ ν•  λ•Œ babel.config.js νŒŒμΌμ„ λ³΄λ©΄μ„œ 이게 뭐지 μ‹Άμ–΄ 검색해본 적이 μžˆλ‹€. 그런데 이게 문법도 μ•„λ‹ˆκ³  언어도 μ•„λ‹ˆλΌ κ·ΈλŸ°μ§€ 계속 κ·Έ 의미λ₯Ό 잊게 λ˜λŠ” λ§ˆμ„±μ˜ babel .... κ·Έλž˜μ„œ μ˜€λžœλ§Œμ— μžλ°”μŠ€ν¬λ¦½νŠΈ 곡뢀λ₯Ό λ‹€μ‹œ ν•˜λ˜ 쀑에 babel ν‚€μ›Œλ“œλ₯Ό λ°œκ²¬ν•΄μ„œ μ •λ¦¬ν•΄λ³΄λ €κ³ ν•œλ‹€. babel μ΄λž€ 무엇인가 ··· μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ³€μˆ˜ νƒ€μž…μ—λŠ” var / let / const κ°€ μžˆλ‹€. var μ‚¬μš©μ„ μ§€μ–‘ν•œλ‹€κ³ λŠ” ν•˜λ‚˜, let / const λ³€μˆ˜μ˜ 경우 IE9, IE10 μ—μ„œ μ‚¬μš©μ΄ λΆˆκ°€ν•˜λ‹€. 그러면 IE9, IE10 ν™˜κ²½μ—μ„œλŠ” var νƒ€μž…μ˜ λ³€μˆ˜λ§Œ μ„ μ–Έν•  수 μžˆλŠ” 걸까? 결둠은 μ•„λ‹ˆλ‹€! μ™œλƒν•˜λ©΄ babel 이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έ ··· κ΅¬ν˜• λΈŒλΌμš°μ €μ—μ„œλ„ μ½”λ“œκ°€ λŒμ•„κ°ˆ 수 μžˆκ²Œλ” λ„μ™€μ£ΌλŠ” 도ꡬ가 .. 2022. 5. 11.
addEventListener 이벀트 (input & change) μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ input νƒœκ·Έμ— ν…μŠ€νŠΈκ°€ μž…λ ₯이 되면 λ²„νŠΌμ„ ν™œμ„±ν™”ν•˜λ„λ‘ λ§Œλ“œλŠ” μž‘μ—…μ„ ν•˜λ‹€κ°€ Input μ΄λ²€νŠΈμ™€ change 이벀트의 차이점을 μ•Œκ²Œ λ˜μ–΄μ„œ 기둝해둔닀. μž‘λ™ 방식 인풋 λ°•μŠ€ 두 κ°œμ— λͺ¨λ‘ ν…μŠ€νŠΈκ°€ μž…λ ₯되면 "확인" λ²„νŠΌμ˜ λΉ„ν™œμ„±ν™”κ°€ ν™œμ„±ν™”λ‘œ λ°”λ€ŒλŠ” 둜직 1. λ¨Όμ € 두 개의 input μš”μ†Œλ₯Ό 각각 element.getElementById 둜 κ°€μ Έμ˜¨λ‹€. 2. 각 μš”μ†Œμ— λŒ€ν•΄ addEventListener λ₯Ό κ±Έμ–΄μ„œ μ–΄λ–€ μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œλ§ˆλ‹€ μ–΄λ–€ λ™μž‘μ΄ μˆ˜ν–‰λ˜λ„λ‘ λ§Œλ“ λ‹€. μ΄λ•Œ input 에 μž…λ ₯λ˜λŠ” κ°’ λ³€ν™”λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ•ŒκΈ° μœ„ν•΄μ„œ μ²˜μŒμ—λŠ” onChange 즉 , "change" 이벀트λ₯Ό λ„£μ—ˆλ‹€. κ·ΈλŸ¬λ‚˜, change 이벀트λ₯Ό μ‚¬μš©ν•˜λ©΄ input 의 κ°’ λ³€ν™”κ°€ μ»€μ„œλ₯Ό input νƒœκ·Έ .. 2022. 4. 25.
[React] SPA λž€? SPA(Single Page Application) : ν•œ 개의 νŽ˜μ΄μ§€λ‘œ 이루어진 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 전톡적인 μ›Ή 방식(SSR : μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§) 은 μ‚¬μš©μžκ°€ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동할 λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ html 을 λ°›μ•„μ˜€κ³  νŽ˜μ΄μ§€λ₯Ό λ‘œλ”©ν•  λ•Œλ§ˆλ‹€ μ„œλ²„μ—μ„œ λ¦¬μ†ŒμŠ€λ₯Ό 전달받아 ν•΄μ„ν•œ λ’€ 화면에 λ³΄μ—¬μ£ΌλŠ” λ°©μ‹μ΄μ—ˆλ‹€. 즉, μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ£ΌλŠ” 화면은 μ„œλ²„μ—μ„œ μ€€λΉ„ν–ˆλ‹€. 이처럼 전톡적인 μ›Ή λŒ€λΆ€λΆ„μ€ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§ 방식이닀. κ·ΈλŸ¬λ‚˜ μš”μ¦˜μ—λŠ” μ›Ήμ—μ„œ μ œκ³΅ν•˜λŠ” 정보가 정말 많기 λ•Œλ¬Έμ— μƒˆλ‘œμš΄ 화면을 보여쀄 λ•Œλ§ˆλ‹€ μ„œλ²„μ—μ„œ λͺ¨λ“  λ·°λ₯Ό μ€€λΉ„ν•œλ‹€λ©΄ μ„±λŠ₯μƒμ˜ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. (νŠΈλž˜ν”½, μ„œλ²„μ— 높은 λΆ€ν•˜ λ“±) κ·Έλž˜μ„œ λ¦¬μ•‘νŠΈ 같은 라이브러리 ν˜Ήμ€ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ λ·° λ Œλ”λ§μ„ μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €κ°€ λ‹΄λ‹Ήν•˜λ„λ‘ ν•˜κ³  μš°μ„  μ• .. 2021. 11. 8.
[React-Native] μ»΄ν¬λ„ŒνŠΈ μŠ€νƒ€μΌλ§ πŸ’‘ 인라인(inline) μŠ€νƒ€μΌλ§ μ»΄ν¬λ„ŒνŠΈμ˜ νƒœκ·Έμ— 직접 μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” 방식이닀. // src/App.js import React from "react"; import { View, Text } from "react-native"; const App = () => { return ( Inline Styling - Text Inline Styling - Error ); }; export default App; πŸ’‘ 클래슀 μŠ€νƒ€μΌλ§ μ»΄ν¬λ„ŒνŠΈ μŠ€νƒ€μΌμ— StyleSheet 에 μ •μ˜λœ μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” 방식이닀. import React from "react"; import { StyleSheet, View, Text } from "react-native"; const App = () => { return ( I.. 2021. 11. 4.
[React-Native] React Native μ—μ„œ μ»΄ν¬λ„ŒνŠΈλž€ πŸ’‘ μ»΄ν¬λ„ŒνŠΈλž€? μž¬μ‚¬μš©ν•  수 μžˆλŠ” 쑰립 λΈ”λ‘μœΌλ‘œ, 화면에 λ‚˜νƒ€λ‚˜λŠ” UI μš”μ†Œμ΄λ‹€. κ·ΈλŸ¬λ‚˜ λ‹¨μˆœνžˆ UI μ—­ν• λ§Œ ν•˜λŠ” 것이 μ•„λ‹Œ λΆ€λͺ¨λ‘œλΆ€ν„° 받은 μ†μ„±μ΄λ‚˜ μžμ‹ μ˜ μƒνƒœμ— 따라 ν‘œν˜„μ΄ 달라지고 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. πŸ’‘ JSX JSX λŠ” 마치 HTML 을 μž‘μ„±ν•œ 것 같은 μ½”λ“œμ΄λ‹€. μ΄λŸ¬ν•œ JSX λŠ” 객체 생성과 ν•¨μˆ˜ ν˜ΈμΆœμ„ μœ„ν•œ 문법적 편의λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ ν™•μž₯ κΈ°λŠ₯으둜 λ¦¬μ•‘νŠΈ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©λœλ‹€. export default function App() { return ( Open up App.js to start working on your app! ); } μ—¬λŸ¬ 개의 μš”μ†Œλ₯Ό ν‘œν˜„ν•  경우 ν•˜λ‚˜μ˜ λΆ€λͺ¨λ‘œ 감싸야 ν•œλ‹€. μœ„μ˜ 경우 Text 와 StatusBar νƒœκ·Έλ₯Ό View νƒœκ·Έλ‘œ 감싸고 μžˆλ‹€. V.. 2021. 11. 3.