자바스크립트 ES6의 Class(클래스) 입니다.

JS에서 클래스라니.. 신기하네요.

 

클래스에 대해 알아보겠습니다.

 

Class

 

먼저 자바스크립트의 클래스는 Object가 아니고, Template입니다.

(Object를 위한 Template입니다.)

 

클래스라 함은, 자바에서는 객체단위로 코드 재사용성이 매우좋아지는 장점이있습니다.

그렇다면, 자바스크립트에서의 클래스 선언은 어떻게 이루어질까요?

 

 

1
2
3
class ClassName {
  constructor() { ... }
}
cs

 

 

위와 같은 문법으로 클래스를 생성 할 수 있습니다.

 

그럼 예를들어보겠습니다.

 

1
2
3
4
5
6
class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}
cs

 

자동차라는 클래스에 2가지의 속성을 주었습니다.

실제로 해당 클래스를 사용해보겠습니다.

 

 

1
2
let myCar1 = new Car("Ford"2014);
let myCar2 = new Car("Audi"2019);
cs

 

변수를 선언하고 클래스 객체를 선언

 

1
2
3
4
5
6
console.log(myCar1.name);
console.log(myCar1.year);
console.log(myCar2.name);
console.log(myCar2.year);
console.log(myCar1);
console.log(myCar2);
cs

 

예시 결과

객체를 로그로 찍어보았을때는 Object타입으로 바로 출력되는것을 확인할수있습니다.

 

간단한 게 ES6의 Class에 대해 알아보았습니다.

감사합니다.

 

반응형

 

자바스크립트 ES6의 For/Of에 대해 알아보겠습니다.

 

기본적으로 자바스크립트에서 for문, for/in문을 사용하였는데요.

ES6에서 새롭게 추가된 For/Of입니다.

 

ES6 For/Of

 

기본정의는 반복 가능한 객체를 반복하는 것의 For/Of의 목적입니다.

 

1
2
3
for (variable of iterable) {
  // code block to be executed
}
cs

 

variable 즉 변수, const, let, var를 선언할 수 있습니다.

아래에 샘플 코드를 몇 가지를 작성해보겠습니다.

 

For/Of 예시1

1
2
3
4
5
6
let cars = ["BMW""Volvo""Mini"];
let text = "";
 
for (let x of cars) {
  text += x + "<br>";
}
cs

 

For/Of의 1번 예시 결과

 

For/Of 예시2

1
2
3
4
5
6
let language = "JavaScript";
let text = "";
 
for (let x of language) {
  text += x + "<br>";
}
cs

 

For/Of의 2번 예시 결과

 

그렇다면, 기존의 For/In과 어떠한 차이가 있을까요?

For/In은 객체 순환, For/Of은 배열 순환의 특징을 가지고 있습니다.

 

샘플 코드로 예를 들어보겠습니다.

 

For/Of과 For/In의 차이 예시1

1
2
3
4
5
6
let cars = ["BMW""Volvo""Mini"];
let text = "";
 
for (let x in cars) {
  text += x + "<br>";
}
cs

 

For/In 1번 예시 결과

 

For/Of의 동일한 예시에 For/Of For/In으로 변경 후 실행한 결과입니다.

결괏값을 배열의 번호를 가져와 출력하는 것을 볼 수가 있습니다.

(객체의 순환이기 때문에, 배열의 순서를 출력하게 되었습니다.)

 

간단한 게 ES6의 For/Of에 대해 알아보았습니다.

감사합니다.

 

반응형

 

자바스크립트 ES6의 let, const에 대해 알아보도록 하겠습니다.

 

'let', 'const' keyword

JS ES5 이전에는 변수를 선언할 때 'var'로 통일하였습니다.

문제점도 많았죠.

 

1
2
var abc = "1234";
var abc = "12345"// O 가능
cs

 

var로 변수를 재선언시에는 해당 코드는 문제없이 허용되었습니다.

 

1
2
test = 1
var test = "1234" // O 가능
cs

 

또한, 해당 문법 또한 호이스팅(Hoisting)으로 허용되었습니다.

(함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 범위 최상단으로 끌어올리는 것)

 

(어쩌면, 문제점보단 이점으로 보았을지도 모르지만요.)

 

ES6의 let과 const는 달라졌습니다.

 

1
2
3
4
5
let a = 10;
let a = 20// X 불가능 (Identifier 'a' has already been declared)
 
let b = 10;
= 20// O 가능
cs

 

let, cosnt는 block scope로 범위 내에서 선언이 가능하며, 변수의 재선 언도 불가능합니다.

 

1
2
3
4
5
const x = 2;
const x = 3// X 불가능 (Identifier 'x' has already been declared)
 
const y = 1// const는 상수
= 2// X 불가능 (Assignment to constant variable.)
cs

 

그렇다면, let과 const의 차이점이 무엇일까요?

바로 const는 상수입니다. 한번 선언이 된 값에 대해서 변경을 할 수 없습니다.

그 외에 let과 유사합니다.

(let, const 변수 선언 시 호이스팅이 발생하지 않습니다.)

 

간단하게 ES6의 let, const에 대해 알아보았습니다.

감사합니다.

 

반응형


안녕하세요.


오늘은 모자익플로우(MosaicFlow) 플러그인을 소개드릴려합니다.


MosaicFlow는 먼저 감이 안잡히실거라 생각이 듭니다.


쉽게설명을드리면, 사진데이터를 표현해주고싶은데 흔하게 게시판형식으로 정리하는것이 아닌 사이즈에 맞춰서 흐름대로 놓는 방식을 말합니다.


예를들어 표현한곳이 '핀터레스트(Pinterest)' 입니다.


핀터레스트 : https://www.pinterest.co.kr/


핀터레스트를 경험해보신분이나 아니면 오늘 처음 접해보시는분은 '아~ 저런모양이 모자익 플로우' 이구나 이해하시면 됩니다.


이 플러그인은 제가 만든 플러그인은 아닙니다.


단순 소개 목적차 Github에서 가져온 자료라는것을 알려드립니다.



모자익플로우 (MosaicFlow)



github에 나와있는 샘플 강아지 사진들 입니다.

서로 다른 크기의 모양에도 문제없이 정리 해줍니다.


제작자 sapegin, 다른 플러그인도 많이 있지만 사용하기 가장편하였습니다.

링크참고해주세요. ^^


MosaicFlow (sapegin) 참고 링크 : https://github.com/sapegin/jquery.mosaicflow 




사용법은 아주 간단합니다.

먼저 플러그인을 다운받아 사용할 프로젝트에 include 시켜주시면 됩니다.

jquery.mosaicflow.js 혹은 jquery.mosaicflow.min.js 중 하나 입니다.

(min파일은 미니멈을 의미하구요 최소한 필요요소만 담아놓은 파일입니다.)


전 용량상 큰차이가없어서 원본파일을 사용하였습니다.


또한! CDN을 통하여 바로 연결하여 사용할수도 있습니다.




지금부터 소개드릴내용은 제가 첨부해놓은 링크안에서 모두다 확인할수있으며 기본적인사항 입니다.

확장 기능을 원하시는분은 들어가셔서 자세히 읽어보시면 됩니다.


HTML 소스에서 작업해야할 내용입니다.

먼저, CDN이나 플러그인을 직접다운받아 적용시켜줍니다. 

(위 사진은 모두다 포함시켰습니다, 실제로는 1개의 연결만하면 됩니다.)



그리고 CSS를 수정할것이라면, CSS 스타일을 붙여넣어주시면됩니다.

적용결과 CSS가 없어도 기본으로 모양이 잡히긴하지만 디테일한부분은 꼭 필요 하실것 입니다.



그리고, 최종 표현할 사진이나 텍스트 등

class를 mosaicflow안에 mosaicflow__item으로 묶어주시면 정상 작동합니다.


잘모르겠으신분들은 샘플파일을 다운받아서 소스를 열어보시면 될것 같습니다.

비교적 간단한 플러그인 소개 였습니다.


반응형


안녕하세요.

새해 첫글 이네요.  2019년 다들 새해복 많이 받으시길 바랍니다. ^^


오늘은 간단하게 자바스크립트 '=>'로 된 문법에 대해 알아보도록 하겠습니다.


먼저 '=>' 해당 문법의 경우는 화살표 함수(Arrow function) 라고 부릅니다.


간단히 자바스크립트에 대해 이야기를 하고 가도록 하겠습니다.



자바스크립트? ECMAScript? 


넷스케이프사에서 만든 브라우저에서 동적인 요소를 구현을 위해 1995년에 개발된 스크립트가 '자바스크립트' 입니다.


그렇다면 여기서 왜 자바스크립트가 중요한지 말씀을 드리겠습니다.


자바스크립트를 다른 웹브라우저에서 지원을 받기 시작하면서, 표준 규약이 필요하였습니다. 그것을 ECMA국제기구에서 하였구요.


그렇게 됨으로써, ECMAScript가 탄생하게 되었습니다.


현재는 버전이 업그레이드 되면서 2015년에 'ECMAScript 6' 이 되었고 'ES6' 라고 부르고 있습니다.


화살표 함수는 ES6의 기능으로써 가끔 API나 예제를 살펴볼때 등장하여 당황스럽게 만들 수 도 있습니다.


그렇다면 '=>' 화살표함수(Arrow function)와 같은 뜻, 동작을 하게 되는 문법을 알아보겠습니다.



화살표 함수 (Arrow function) 


1
2
3
4
5
6
7
8
var materials = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];
 
console.log(materials.map(material => material.length));
cs

모질라 문서에서 화살표 함수 예제를 가져왔습니다.


 예제 참고 링크https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Lexical_this


결론부터 말씀을 드리면 화살표 함수는 함수 표현식 function(meterial) 과 같습니다.


위의 예문의 결과문을 확인을 해본다면 



각 배열의 길이 값들이 재배열되어 아웃풋으로 출력이 됨을 확인할수 있습니다.


그럼 위 문장을 평소에 많이 보단 문장으로 변경을 해보겠습니다.


1
2
3
4
5
6
7
var materials = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];
console.log(materials.map(function(material){ return material.length }));
cs

결과값은 동일하게 출력이 됩니다.

결론적으로, 화살표 함수는 function() { return value };를 간단하게 '=>' 로 표기할수도 있습니다.
더 추가적인내용은 위에 예제참고로 올려놓은 링크에서 확인 하실수 있습니다.

하지만, 지원되는 브라우저를 잘확인하시고 사용하셔야 합니다.

아래에 지원되는 브라우저 목록을 확인하시고 사용하시면 될것 같습니다.


지원하는 브라우저

  • Chrome (v. 45+)
  • Firefox (v. 22+)
  • Edge (v. 12+)
  • Opera (v. 32+)
  • Android Browser (v. 47+)
  • Opera Mobile (v. 33+)
  • Chrome for Android (v. 47+)
  • Firefox for Android (v. 44+)
  • Safari (v. 10+)
  • iOS Safari (v. 10.2+)
  • Samsung Internet (v. 5+)
  • Baidu Browser (v. 7.12+)

지원하지 않는 브라우저

  • IE (through v. 11)
  • Opera Mini (through v. 8.0)
  • Blackberry Browser (through v. 10)
  • IE Mobile (through v. 11)
  • UC Browser for Android (through v. 11.4)
  • QQ (through v. 1.2)


반응형


안녕하세요.


요즘은 JSTL 혹은 서버에서 페이지로 넘어올때 날짜변환이 이루어져 넘어오는경우가 많습니다.

하지만, 특수한 상황에는 꼭 자바스크립트에서만 처리를 해야 할 경우가 발생하는데요.


저도 자주 까먹어서 공유 및 기록차 포스팅을 하게되었습니다.


추가적으로 자바스크립트로 숫자형 3자리마다 콤마를 찍는 방법 또한 포스팅을 시작하겠습니다.


타임스탬프를 날짜로 변환하기 


먼저 샘플 타임스탬프 값을 가져왔습니다.


1545269785000


현재 시간을 샘플로 타임스탬프로 뽑아보았구요.

이 값을 이제 날짜형식으로 변경하는 샘플 입니다. 


1
2
3
var timestamp = 1545186677000;
var date = new Date(timestamp);
console.log(date);
cs


타임스탬프 값을 Date 내장함수에 넣어주면 됩니다.

간단 하죠? 결과값은 이렇게 출력이 됩니다.







숫자형 데이터 3자리 단위 콤마(,) 찍기 


먼저 숫자형 데이터가 필요 합니다.


문자가 섞여 있으면 되지 않습니다.


하지만 문자로 넘어온 숫자형 데이터라면 변환후 처리를 해주면 됩니다.


저는 샘플데이터로 날짜변환에서 사용한 타임스태프를 그대로 사용해보겠습니다.


1545269785000


저 숫자값을 문자라고 생각해고 Number()형으로 변환후 처리 해보겠습니다.


1
2
var money = Number(1545186677000).toLocaleString();
console.log(money);
cs


핵심은 .toLocaleString()입니다.

숫자값을 (,)로 3자리 단위로 처리 해줍니다.


간단합니다. 결과는 이렇게 출력이 됩니다.





감사합니다.


반응형


QR코드 생성 플러그인 


QR코드를 생성할일이 있어 GitHub에 뒤적뒤적 거리다 간편하게 자바스크립트로 QR코드를 제작 할 수 있는 플러그인을 발견 하였습니다.


간편하게 Jquery, Javascript 몇줄으로 QR코드를 빠르고 간편하게 생성 할 수 있도록 작업되어있고, 많은분들이 사용하고 계셨습니다.


해당 플러그인을 제작하신분은 한국에 개발자이신것 같습니다.


qrcodejs(github)

https://github.com/davidshimjs/qrcodejs by davidshim 



qrcodejs 사용하기 


먼저 작업하고 계시는 프로젝트에 qrcode.js를 다운받아 소스에 포함시키면 됩니다.



해당 소스에 jquery는 필수로 포함되어있어야 하며, qrcode.js 혹은 qrcode.min.js 다운 받아서 포함시켜주시면 되겠습니다.




플러그인을 포함시킨뒤, 사용법을 살펴보겠습니다.


먼저 README.md 에 나와있는 내용 입니다.

간단하게 HTML div 개체를 id를 qrcode로 주고 스크립트 단에서 간단하게 설정해주면 끝이였습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<HTML>
<HEAD>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="qrcode.js"></script>
</HEAD>
<BODY>
    <div id="qrcode"></div>
</BODY>
<script type="text/javascript">
    var qrcode = new QRCode(document.getElementById("qrcode"), {
        text: "http://web-inf.tistory.com/",
        width: 128,
        height: 128,
        colorDark : "#000000",
        colorLight : "#ffffff",
        correctLevel : QRCode.CorrectLevel.H
    });
</script>
</HTML>
 
cs

해당 샘플입니다.


1. head(헤더)에 jquery와 qrcode를 포함 

2. body(바디)에 qrcode div를 생성

3. script(스크립트)에 가이드대로 작성 


* 스크립트 옵션 설정

text 

width 

height 

colorDark 

colorLight 

correctLevel 

QR코드에 담을 text

QR코드 가로크기

QR코드 세로크기

QR코드 어두운색상

QR코드 밝은색상

정확도 (H,M,Q,H)



qrcodejs 사용완료


위와 같은 결과가 출력되며 사용이 완료됩니다.


추가사항으로, 생성한 QR코드를 혹시 다른 엘리먼트 안에 넣게되면 가운데정렬이 되지않고 왼쪽정렬로 기본이 잡히는 경우가 생깁니다.


이를 해결하는 샘플을 보여드리겠습니다.


*샘플 코드 입니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<HTML>
<HEAD>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="qrcode.js"></script>
</HEAD>
<BODY>
    <div style="border: 2px solid #000;width:500px"
        <div id="qrcode"></div>
    </div>
</BODY>
<script type="text/javascript">
    var qrcode = new QRCode(document.getElementById("qrcode"), {
        text: "http://web-inf.tistory.com/",
        width: 128,
        height: 128,
        colorDark : "#000000",
        colorLight : "#ffffff",
        correctLevel : QRCode.CorrectLevel.H
    });
</script>
</HTML>
cs


위 사진과 같이 div안에 QR코드를 넣었습니다. (왼쪽으로 치우쳐 졌습니다.)

해당경우 style을 통하거나 bootstrap의 text-center을 div에 적용하여도 정렬이 되지 않습니다.

스크립트 자체에서 canvas를 생성후 그안에 이미지를 넣는식이라 그렇게 동작을합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<HTML>
<HEAD>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="qrcode.js"></script>
</HEAD>
<BODY>
    <div style="border: 2px solid #000;width:500px"
        <div id="qrcode"></div>
    </div>
</BODY>
<script type="text/javascript">
    var qrcode = new QRCode(document.getElementById("qrcode"), {
        text: "http://web-inf.tistory.com/",
        width: 128,
        height: 128,
        colorDark : "#000000",
        colorLight : "#ffffff",
        correctLevel : QRCode.CorrectLevel.H
    });
 
    $("#qrcode > img").css({"margin":"auto"});
</script>
</HTML>
cs


해결 방법으로 스크립트 하단에 qrcode의 css margin값을 바꿔주면 위 사진처럼 해결이 됩니다.



샘플코드를 첨부하겠습니다. 


즐거운 하루되세요.


샘플코드

sample.zip 





반응형


 CKEditor 란?


CKEditor를 소개합니다.

CK에디터는 일반적으로 게시판에 글을쓸때 쉽게 편집을 할 수 있도록 도와주는 툴 입니다.

쉬운 설명을 위해 아래 사진을 참고해주세요.



위와같이 게시판 글을 수정하거나 편집을 원한경우, 텍스트 크기, 문단 나눔, 사진업로드등 기능을 편하게 이용하기위해 사용합니다.

CK에디터는 오픈소스 라이브러리 입니다.

하지만 CK에디터가 어느정도 안정이되고 나서부터는 상업적 용도로 사용할때는 일정 비용을 지불하고 사용을 하여야 합니다.


CKEditor 공식 홈페이지 : https://ckeditor.com/ckeditor-5/


CKEditor5 사용법?


간단하게 CKEditor5 사용방법에대해 소개 드리려합니다.

가장 최신버전인 CKEditor5를 사용한 샘플 예제입니다.



먼저, 홈페이지에 접속해주세요. (https://ckeditor.com/ckeditor-5/)

상단 메뉴에 다운로드 메뉴에 들어가서, 빌드 방식을 선택해주세요.


저는 가장 기본인 Classic을 선택하겠습니다.

빌드 방법에따라 에디터의 사용방법 및 용도가 달라집니다.

미리 Overview에서 용도를 확인하시고 선택해주시면 되겠습니다.



그후 다운로드 메뉴로 내려가 다운을 시도하면 됩니다.


방법은 3가지를 제공하고있습니다.


1. 리눅스 시스템에 바로 다운로드 가능한 링크 (npm)

2. Zip 패키지 윈도우에서 스크립트형식으로 파일을 제공해줍니다.

3. CDN링크 다이렉트로 HTML 스크립트상에 붙여넣어주면 바로 사용이 가능합니다.


* CDN 용어의 자세한사항은 '용어(약자)' 게시판을 참고해주세요.


전 가장 간단한 CDN을 통하여 제작을 해보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<HTML>
 <HEAD>
  <TITLE> CKEditor5 Sample </TITLE>
  
  <!-- 1. CDN -->
  <script src="https://cdn.ckeditor.com/ckeditor5/11.0.1/classic/ckeditor.js"></script>
 </HEAD>
 <BODY>
    <!-- 2. TEXT 편집 툴을 사용할 textarea -->
    <textarea name="content" id="editor"></textarea>
    <script>
    // 3. CKEditor5를 생성할 textarea 지정
    ClassicEditor
        .create( document.querySelector( '#editor' ) )
        .catch( error => {
            console.error( error );
        } );
    </script>
 </BODY>
</HTML>
 
cs

주석 을 순서대로 확인 해보겠습니다.


1. CDN스크립트를 그대로 <head>에 붙혀주었습니다. 이로써 바로 CKEditor 스크립트를 마음대로 사용할수 있는 환경이 완성되었습니다.

2. CKEditor툴을 사용할 textarea를 <body>에 만들어 주었습니다.

3. 이제 생성한 textarea에 ckeditor를 생성해주는 스크립트문을 작성하였습니다. (홈페이지 문서 페이지에 코드를 제공합니다.)


CKEditor 결과 


사진과 같이 CKEditor가 정상 구동 되었습니다.



Sample.html


혹시 따라함에 어려운분이 계실까봐, 위 링크에 샘플 파일을 첨부파일에 첨부하겠습니다.



[번외] CKEditor 만약 "이미지 업로드" 기능을 제거하고 싶다면?


아주 간단 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<HTML>
 <HEAD>
  <TITLE> CKEditor5 Sample </TITLE>
  
  <script src="https://cdn.ckeditor.com/ckeditor5/11.0.1/classic/ckeditor.js"></script>
 </HEAD>
 <BODY>
    <textarea name="content" id="editor"></textarea>
    <script>
    ClassicEditor
        .create( document.querySelector( '#editor' ), {
            // 제거 하고싶은 플러그인 (배열)
             removePlugins: [ 'ImageUpload' ]
        } )
        .catch( error => {
            console.error( error );
        } );
    </script>
 </BODY>
</HTML>
cs


주석 부분에 추가 스크립트 작성으로 간단히 CKEditor에 필요하지 않은 플러그인을 제거 할 수가 있습니다.

자세한 내용은 문서 안에 있습니다.


위 스크린샷과 같이 이미지업로드 버튼이 사라진것을 확인할수 있습니다.


더 자세한 추가사항 및 기능은 아래 링크로 확인 하실수 있습니다.


CKEditor 문서 링크 : https://ckeditor.com/docs/ckeditor5/latest/builds/



반응형

+ Recent posts