반응형

자바스크립트 33

[Node.js] cli(command-line interface) 프로그램 생성하기(commander.js)

회사에서 신규 프로그램에 사용할 데이터를 자동으로 가공하는 프로그램을 만들고 있습니다. Node 기반으로 프로그램을 작성하고 있는데, cli를 이용하여 입력 값을 받아 동작하도록 구현했습니다. 이를 구현하기 위해 commander.js를 사용했습니다. 제가 사용한 방법 위주로 정리해보도록 하겠습니다. commander.js를 사용하기 위해서는 아래와 같이 패키지를 설치해야합니다. $ npm install --save commander Option 일반적인 Option을 정의합니다. 옵션의 데이터가 올 수 도 있고, 옵션만 사용할 수도 있습니다. app.js 를 아래와 같이 작성합니다. const { Command } = require('commander'); const program = new Comma..

JavaScript 2021.02.18

[Node.js] ReferenceError: primordials is not defined

현재 노드를 이용해서 자동화 프로그램 하나 작성하고 있습니다. 내부에서 아래와 같이 fs와 unzip 패키지를 동시에 사용하고 있습니다. const fs = require('fs'), unzip = require('unzip'); 그런데, 아래와 같이 에러가 발생합니다. $ node app.js fs.js:27 const { Math, Object } = primordials; ^ ReferenceError: primordials is not defined at fs.js:27:26 검색해보니, node 12버전과 gulf 3버전을 사용하면 이렇게 에러가 발생하는 것 같습니다. 어쩔 수 없이 node를 다운그레이드 하기로 했습니다. 먼저, n 패키지를 설치합니다. $ sudo npm install -g ..

JavaScript 2021.02.09

[WebStorm] JavaScript에서 작은 따옴표('') 사용하기

저는 개인적으로 JavaScript 문자열에서 작은 따옴표를 사용하는 것을 선호합니다. 웹스톰(WebStorm)을 설치해서 사용하고 있는데, 계속 큰 따옴표로 사용되서 불편했습니다. 그래서 작은 따옴표를 사용할 수 있도록 설정을 변경해서 사용하고 있습니다. 아래 설정에서 변경 가능합니다. WebStorm -> Preferences -> Editor -> Code Style -> JavaScript에서 Punctuation 탭에 Use double quotes를 Use single quotes로 변경해주세요.

Tool 2021.02.05

[JavaScript] setTimeout의 delay는 음수도 가능할까?

일정 시간 이후에 특정 구문을 실행하기 위해 setTimeout을 사용합니다. 그리고 가끔은 함수 호출 순서를 바꿔주기 위해 setTimeout의 delay에 0을 사용하기도 합니다. 그렇다면 delay를 음수로 준다면 어떤 일이 발생할까요? 일반적으로 delay 어떤 딜레이 값을 사용했다고 하더라도 최소 지연시간보다 작다면 최소지연 시간으로 맞춰지게 됩니다. HTML5 스펙에는 최소 지연 시간을 4ms로 명시하고 있습니다. 즉, 음수로 delay를 지정했더라도 최소 지연 시간 이후에 callback이 실행된다는 것입니다. 단, 예외가 있습니다. Stackoverflow 답변에 따르면 음수로 입력했을 때, 모든 브라우저에서 callback의 실행을 보장하진 않는다고 합니다. Internet Explore..

JavaScript 2021.01.21

[JavaScript/Pseudoclassical/ES5] Subclass method에서 Superclass Method 호출하기(오버라이딩 메서드 호출)

var SuperClass = function() { this.name = 'super'; }; SuperClass.prototype.print = function() { console.log('[SUPER] ' + this.name); }; var SubClass = function() { this.name = 'sub'; }; SubClass.prototype = new SuperClass(); SubClass.prototype.print = function() { console.log('[SUB] ' + this.name); // I want to call super's print method! }; var obj = new SubClass(); obj.print(); SuperClass와 SubC..

JavaScript 2021.01.20

[JavaScript] Function.prototype.call/apply/bind

Function.prototype.call() 주어진 this와 파라매터 목록을 가지고 함수를 호출. function Product(name, price) { this.name = name; this.price = price; } function Food(name, price) { Product.call(this, name, price); this.category = 'food'; } console.log(new Food('cheese', 5).name);// 'cheese' Function.prototype.apply() 주어진 this와 파라매터 배열(혹은 유사 배열 객체도 가능)을 가지고 함수를 호출. const numbers = [5, 6, 2, 3, 7]; const max = Math.max...

JavaScript 2021.01.20

[ES6 JavaScript] WeakSet

오늘은 WeakSet에 대해서 알아보도록 하겠습니다. WeakSet은 WeakMap처럼 약하게 유지되는 객체를 컬렉션에 저장할 수 있게 해주는 객체입니다. 약하게 유지된다는 것은 WeakSet 내 저장된 객체에 다른 참조가 없는 경우, GC(Garbage Collection) 될 수 있다는 의미입니다. 그리고 또 다른 특징은 WeakSet내의 객체는 오직 한 번만 발생할 수 있습니다. 즉, WeakSet 컬렉션 내 요소는 유일한 요소입니다. WeakSet에서 사용할 수 있는 메서드는 총 3가지 입니다. WeakSet.prototype.add(value) WeakSet 객체에 새로운 객체를 추가하는 메서드 WeakSet.prototype.delete(value) WeakSet 객체에 요소를 제거하는 메서드..

JavaScript 2020.10.15

[ES6 JavaScript] Set

안녕하세요. 오늘은 Set에 대해 공부해보도록 하겠습니다. Set 객체는 값 Collection으로 요소 삽입 순서를 기억합니다. 그렇기 때문에 삽입 순서대로 순회가 가능합니다. 또 하나의 Set내 값은 한 번만 나타날 수 있습니다. 즉, 어떤 값은 그 Set에서 유일합니다. var mySet = new Set(); mySet.add(1); // Set { 1 } mySet.add(5); // Set { 1, 5 } mySet.add(5); // Set { 1, 5 } mySet.add('some text'); // Set { 1, 5, 'some text' } var o = {a: 1, b: 2}; mySet.add(o); mySet.add({a: 1, b: 2}); // o와 다른 객체를 참조하므로 ..

JavaScript 2020.10.11
반응형