티스토리 뷰
jQuery -->Vanilla JS ( pure javascript ) 전환하기
여태까지 jQuery 를 잘 써오고 있다.
음~제목과 다른 전개이지만~ 왠지 앞으로도 계속 쓸 것 같다.
구차한 이야기는 생략하겠지만 그 만큼 이 바닥 시장이 더럽다.
빠르게 요구함은 물론이거니와 레거시 코드의 운영도 만만치 않기 때문이다.
머 변명일 수도 있겠지만 빠른 퇴근과 스트레스를 받지 않으려면.... 어쩔 수 없는 현실이기도 하다.
지금도 가슴으로는 '아 이거 이렇게 하면 무겁게 돌아갈 텐데.....' 라고 고민하곤 하지만
시계를 보곤 음... 아니지 걍 있던데로 하자 라고 마음을 다 잡곤 한다.
여튼 서두가 길었는데.. 타이틀 대로 간혹 순수 자바스크립트으로만 코딩할 때가 있는데..
그 때를 위해 나름 정리해 둘려 한다.
타이틀에서 vanillajs 라고 기재해 두었는데.....다들 그렇게 이야기 하길래 기재해 봤다.
vanillajs 에 대해 구글에서 검색해 보면 아래와 같다.
'Vanilla JS는 자바스크립트 프레임워크로 다른 프레임워크나 jQuery 보다도 압도적으로 빠르고 크로스 브라우징이 잘 되는 특성이 있다. 페이스북, 구글, 유투브 등등 유명한 해외 사이트에서 사용되었으며, 다른 플랫폼보다도 오래되었음에도 불구하고 꾸준히 업데이트 되어 온 프레임워크이다. 용량도 매우 가벼워서 압축을 하는 경우 압축을 하지 않은 경우보다 용량이 더 나가는 역설적인 무게를 자랑한다.'
라고 되어 있다. 이렇게 장황하게 설명할 필요없이 그냥 단 1줄로 명확히 말할 수 있다.
'Vanilla JS는 순수하게 javascript 만을 사용한 것을 말한다.'
자 그럼 아래에 대략적인 내용들은 정리해 본다.
선택자( Selector )
$("body")
--> document.body
$("html")
--> document.documentElement
$(selector), $ele.find(selector)
--> document.querySelector(selector)
$ele.parent()
--> ele.parentNode
$ele.closest('.country')
--> ele.closest('.country')
$input.closest('form')
--> input.form
$ele.prev()
--> ele.previousElementSibling
$ele.next()
--> ele.nextElementSibling
Input 값
$input.val()
--> input.value
$input.val("hello")
--> input.value = "hello"
이벤트 리스너
$ele.on(eventName, handler)
--> ele.addEventListener(eventName, handler)
$elem.off(eventName)
--> elem.removeEventListener(eventName, handler)
Key event listeners:
use e.key === "+"
---> e.which === 43
//일부 이벤트 지연시키기
$ancestorElem.on(eventName, elemSelector, handler)
=> ancestorElem.addEventListener(eventName, function(e) {
var elem = e.target.closest(elemSelector);
if (elem) { // do stuff }
} , false)
Key 이벤트
key events: (e.which === 45)
--> (e.key === "Tab")
상세 내용 : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
CSS class 조작
- $elem.addClass(c) --> elem.classList.add(c)
- $elem.removeClass(c) --> elem.classList.remove(c)
- $elem.toggleClass(c) --> elem.classList.toggle(c)
- $elem.hasClass(c) --> elem.classList.contains(c)
- $elem.attr('class') = 'some classes' --> elem.className = 'some classes'
인라인 스타일
- $el.css({ top: "10px" }) --> el.style.top = "10px"
스크롤 position
- $el.scrollTop() --> el.scrollTop
- $el.scrollTop(10) --> el.scrollTop = 10
Utils
- $.inArray(item, arr) > -1 --> arr.indexOf(item) > -1
- $.extend({}, defaults, options) --> Object.assign(defaults, options)
- $.trim(s) --> s.trim()
- $input.val() --> input.value
엘리먼트 생성 및 추가
$("<div>", {"class": c}).appendTo(parent);
-->
var elem = document.createElement("div");
elem.className = c;
container.appendChild(elem);
------------------------------------------
$elem.text(s)
-->
var elemText = document.createTextNode(text);
elem.appendChild(elemText);
$elem.append(htmlString)
--> elem.insertAdjacentHTML('beforeend', htmlString);
------------------------------------------
엘리먼트 속성
- $elem.attr("placeholder") --> elem.getAttribute("placeholder")
- $elem.attr("placeholder", p) --> elem.setAttribute("placeholder", p)
엘리먼트 요소
- $el.props("disabled") --> el.disabled
- $el.props("readonly") --> el.readOnly
'Programming language > javascript' 카테고리의 다른 글
swiper ( 슬라이더 / 캐러셀 ) 라이브러리 (0) | 2021.01.08 |
---|---|
[gulp ts] gulp 를 통한 typescript 변환 (0) | 2021.01.08 |
youtube api 를 이용한 play/stop (0) | 2021.01.07 |
git master브랜치 복사 새로운 브랜치로 복제 (0) | 2019.09.17 |
git 줄바꿈 문자 문제~ If you choose Fix and Commit, git config --global core.autocrlf input will be executed. 어쩌구~ (0) | 2019.08.27 |
- Total
- Today
- Yesterday
- for of 구문
- git
- git checkout -b
- Vue3
- 코도바
- 아이콘 폰트 만들기
- Aptana
- react-router-dom
- CSS
- 태그
- 자바스크립트
- vue-router
- RefreshToken
- Angular
- svg 폰트
- 내장요소
- 리프래시토큰
- React.StrictMode
- Intrinsic
- 앵귤러
- svg모션
- interceptors
- cordova
- anime.js
- react
- icon font
- svg icon font
- JsDoc
- IntrinsicElements
- 반복문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |