-
Notifications
You must be signed in to change notification settings - Fork 10
ejs에서 npm install 로 설치한 모듈을 사용해보자
Nam_Ssang edited this page May 27, 2021
·
1 revision
프론트에서 부트스트랩을 사용하고 싶다. 그런데 ejs 파일에서 npm install
로 설치한 파일을 가져오는 방법이 뭔가 아리까리 하다. 그렇다고 매번 CDN
으로 가져오는 방법은 멋이 없어 보인다.
미들웨어를 이용
-
npm install bootstrap
-
vendors
라는 라우터를 생성// routes/vendors.js const express = require('express'); const router = express.Router(); const path = require('path'); router.use('/bootstrap', express.static(path.join(__dirname,"../node_modules/bootstrap/dist"))); module.exports = router;
코드를 보면 생성된 라우터는
/bootstrap
경로로 들어오는 요청을 처리하게 된다는걸 알 수 있다. 또한 해당 라우트로 접근했을 때npm install bootstrap
로 설치한node_modules
의 위치에 직접 접근해서 가져오는 걸 알 수 있다. 여기다가 사용할 모듈들을 추가해주면 된다. -
app.js
에서 해당 라우트를use
한다.// app.js app.use('/vendors', vendorsRouter);
vendors/bootstrap
로 요청을 보내면vendorsRouter
로 들어가게 되고, 거기서 우리가 등록한 모듈들을 가져다 사용할 수 있게 된다. -
이제
ejs
파일에서 사용할 수 있게 된다.// layout.js <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title><%= title %> </title> <link href="/vendors/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="/stylesheets/author/common.css" rel="stylesheet"> <link rel="stylesheet" href="/stylesheets/author/index.css" /> <%- style %> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JWR8KYL1MC"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-JWR8KYL1MC'); </script> </head> <body> <%- defineContent('navbar') %> <%- defineContent('body') %> <%- defineContent('footer') %> <%- script %> <script src="/vendors/bootstrap/js/bootstrap.bundle.min.js"></script> </body> </html>
마지막의
script
를 보면app
에 등록한 라우터와,vendorsRouter
에 등록된bootstrap
를 이용해서 모듈을 사용하는 걸 확인할 수 있다.