본문 바로가기
카테고리 없음

[포스코 X 코딩온] 난 왜, 아무것도 모르고 웹 개발을 배우려 하는가❓ 웹 초보 시리즈 - 1 / require() 함수 사용법

by newbeverse 2023. 4. 9.
지식에 최대 적은 무지함이 아닙니다.
허황된 지식이죠. 
- 스티브 호킹 -

 

NodeJs를 배우다보면 항상 보는 구문이 있습니다.

바로

require()

입니다.

오늘도 물음표 하나 까서 없애봅시다.

 

app.js에서 자주 사용하는 형태의 코드입니다.

const express = require("express"); // express 모듈을 가져옴
const app = express(); // express 애플리케이션을 생성
const PORT = 8001; // 포트 번호를 8000으로 설정

app.set("view engine", "ejs"); // view engine 등록
app.use("/views", express.static(__dirname + "/views")); // ejs를 담을 views 폴더 경로 설정
app.use("/static", express.static(__dirname + "/static"));
app.use(express.urlencoded({ extended: true })); // post 요청으로 들어오는 모든 형식의 데이터를 파싱(분석)
app.use(express.json()); // json 형태로 데이터를 주고 받음

const indexRouter = require("./routes");

app.use("/", indexRouter);

app.listen(PORT, function () {
  console.log("웹 서버 실행!!"); // 웹 서버 실행!! 출력
  console.log(`http://localhost:${PORT}`); // http://localhost:포트번호 출력
});

 

첫번째 line만 집중적으로 이해해보겠습니다.

const express = require('express')

 

 

이 개념을 이해하기 위해 필요한 2가지 개념.

1) 변수 declare and assigned valuable. 

const

2) 함수 function

require()
// Node.js에 내장된 함수이다.
// Node.js 애플리케이션에서 내장된 모듈을 로드하기 위해 사용된다.

 

3) 이 뿐만 아니라, 추가적으로, 애플리케이션과 모듈, 그리고 캡슐화 라는 개념이 필요합니다

이런 부분들은 차츰 배워가야할 부분인 것 같습니다. 

 

오늘은 require() 사용법에 대해서 집중해보겠습니다.

 

JavaScript require() 함수는 무엇인가?

Node.js는 기본적으로 CommonJS module 포맷이란 것을 지원합니다.

Node.js는 내장된 require() 함수를 사용할 수 있으며, =>

require() 함수는 원하는 모듈을 로드하고, module.exports로 함수들을 내보내는 역할을 할 수 있습니다.

 

JS에서 require() 함수를 사용하기 

이 require() 함수는 function을 vailable(변수)에 assign(할당)하기만 하면 되므로 직관적이며, 이해하기 쉽습니다. 

우선, 함수에서 위치 이름을 인수로써 전달합니다. 간단한 구문을 보겠습니다.

const varName = require(locationName);

 

그리고 *getFullName* 함수를 내보내는 CommonJS 모듈이 있다고 가정합시다.

//utils.js 파일 
const getFullName = (fisrtName, lastName) = > {
	return `My fullname is ${firstname} ${lastName}`;
};
module.exports = getFullName;

 

그런 다음 require() 함수를 사용하여 JavaScript 파일 내에서 이 모듈을 use(사용)/include(포함) 할 수 있습니다

// index.js
const getFullName = require('./utils.js');
console.log(getFullName('Jhon', 'Doe)); // My fullname is Jhon Doe

 

모듈은 위 코드의 로컬 파일 내에 위치합니다. 로컬 주소는 사용을 원하는 모듈의 파일이름으로 적어줍니다.

그러나 웹에서 외부 모듈을 포함하기 위해서는 웹 기반 위치를 사용합니다

const myVar = require('http://web-module.location');

 

 

require() vs import() Functions

require 함수와 import함수는 JS file내의 모듈을 include(포함)시키려고 사용합니다. 그러나 이 두 가지 함수의 주요 차이점은 다음과 같습니다. 

  • require() 함수는 프로그램 내에서 어디서나 호출 할 수 있지만 import 함수는 조건부로 호출되지 않습니다. import는 항상 파일 시작부분에서 실행됩니다.
  • require() 함수를 가진 모듈을 include(포함) 시키려면, 반드시 a.js 확장자명이여야 합니다. 

이 부분은 저 또한 제대로 이해하지 못한 개념이기 때문에, 추후에 더 다루도록 하겠습니다.

 

오늘의 요약

// utils.mjs
export const getFullName = (firstname, lastName) => {
    return `my fullname is ${firstname} ${lastName}`;
};

// index.js
import { getFullName } from './utils.mjs';
console.log(getFullName('John', 'Doe')); // My fullname is John Doe
반응형