티스토리 뷰
반응형
Vue 앱 개발 시 public 폴더에 이미지 등의 정적 파일을 저장할 수 있습니다. public 폴더에 저장된 파일들은 webpack에 의해 처리되지 않기 때문에, Vue 앱 개발 시 public 폴더의 파일에 접근하려면 특별한 접근방법이 필요합니다.
public 폴더 내부 파일 접근
public/index.html 파일에서 접근
public/index.html 파일에서는 <%= BASE_URL %>를 통해 pbulic 폴더의 파일에 접근할 수 있습니다.
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
Vue 파일에서 접근
Vue 파일에서는 process.env.BASE_URL을 통해서 public 폴더에 접근할 수 있습니다.
- vue 파일 내부에서 public 폴더경로 정의
data () { return { publicPath: process.env.BASE_URL } }
- <Template>에서 사용
<img :src="`${publicPath}image.png`">
<style>에서 접근
<style>에서 public 폴더에 접근하려면 v-bind()를 사용해주세요.
- public 폴더경로 정의
data () { return { fileImageUrl: 'url(' + process.env.BASE_URL + 'file.gif)' } }
- <style>에서 v-bind() 사용
.fileIcon { background-image: v-bind(fileImageUrl); }
public 폴더 내 css파일을 이용하는 방법
public 폴더에 .css 파일을 생성하여 public 폴더 이미지에 접근하는 방법도 있습니다.
- css파일 추가
- index.html에서 css파일 참조 추가
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <link href="<%= BASE_URL %>app.css" rel="stylesheet"> </head> <body> ...
- css파일에서 public 폴더 이미지 사용
.icon-file { background-image: url('img/file.gif'); }
- Vue App 내에서 CSS Selector 사용
<template> <span class="icon-file"></span> </template>
개발 권장사항
Vue에서는 public 폴더에 파일들을 저장하기 보다는 Vue 프로젝트의 src폴더에 저장하는 방법을 권장하고 있습니다. 그럼 언제 public 폴더를 사용하고 언제 src폴더를 사용해야할까요?
scr 폴더에 정적파일 저장 시 장점
- Vue 앱이 빌드 되면서 정적 파일들은 압축되고(Minified), 적절한 형태로 변한되어 묶이기 때문에(Bundling) 네트워크 트래픽 사용이 최소화 되고 로드속도를 높일 수 있습니다.
- 잘못된 파일 경로를 입력하거나 파일누락이 발생하는 경우 컴파일 단계에서 오류가 발생합니다. 따라서 개발자의 실수를 최소화 할 수 있습니다.
- 파일명에는 Contnet hash가 포함되기 때문에 브라우저 캐시에 의해 과거 파일들이 출력되는 문제를 막아줍니다. 파일이나 이미지가 수정되더라도 항상 최신 리소스가 출력되도록 보장해줍니다.
public 폴더에 저장해야하는 경우
- 정적파일이 업데이트 되거나 파일경로 변경이 없다고 보장되는 경우
- 압축이나 난독화 되어서는 안되고, 원본 파일 그대로 제공되어야 하는 경우
- 파일경로나 파일명이 중요한 의미를 가지기 때문에, 경로나 파일명이 그대로 제공되어야 하는 경우
- 대상 파일의 수가 많거나 파일크기가 커서 Webpack에 의해 처리되는 것이 부적절한 경우
- Vue 앱 외에 다양한 곳에서 공유되는 파일인 경우
References
- v-bind() in css : https://vuejs.org/api/sfc-css-features.html#v-bind-in-css
- HTML and Static Assets : https://cli.vuejs.org/guide/html-and-static-assets.html
- the public Folder : https://cli.vuejs.org/guide/html-and-static-assets.html#the-public-folder
'Web > Vue' 카테고리의 다른 글
[Vue3] 변경사항 (0) | 2024.01.26 |
---|---|
[Vue] .map 파일 생성방지 (0) | 2023.11.24 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- .NET Standard
- TypeScript
- ios
- React
- Vue
- Xamarin.Forms 요약
- ASP.NET Core
- MS SQL
- Xamarin.iOS
- Xamarin
- WPF
- StringComparison
- flutter
- c#
- material-ui
- npm
- Xamarin.Forms
- Android
- VisualStudio
- Xamarin.Forms eBook
- Total
- Today
- Yesterday