지식에 최대 적은 무지함이 아닙니다.
허황된 지식이죠.
- 스티브 호킹 -
❓
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