1. 파일 확장자 생략을 위한 설정
- webpack.config.js 파일에서 위의 사진과 같이 resolve 속성에 extensions를 설정한다.
- js와 vue 파일을 import하거나 링크하는 경우, 확장자를 따로 명시하지 않아도 동작하도록 해주는 설정이다.
- 이 외에도 다른 확장자 이름을 등록하면 해당 확장자 없이 파일을 연결할 수 있다.
- 해당 설정을 마치면 아래와 같이 확장자명을 기입하지 않고 사용할 수 있다.
2. 이미지 연결 및 경로별칭 설정
- src폴더 내부에 components 라는 폴더를 생성한다.
- 기존에 static 폴더에 있던 images 폴더를 src 폴더 내부로 옮긴다.
- 기존의 images 폴더의 이름을 assets로 변경한다.
<template>
<img src="~assets/logo.png" alt="" />
</template>
- HelloWorld.vue에 다음과 같이 작성한다.
- 이 후, 경로 별칭 설정을 위해 파일로더 패키지를 설치한다.
- 터미널 입력: npm i -D file-loader
- 패키지 설치 후 다음과 같이 webpack.config.js를 설정한다.
// import
const path = require('path') // node 모듈을 import 해오는 기본방법
const HtmlPlugin = require('html-webpack-plugin') // webpack plugin 모듈 가져오기
const CopyPlugin = require('copy-webpack-plugin')
const { VueLoaderPlugin } = require('vue-loader')
// export
module.exports = {
resolve: { // 파일 링크 걸을때, js 또는 vue 확장자 기입하지 않아도 되도록 하는 속성
extensions: ['.js', '.vue'],
alias: { // 경로 별칭 설정 ==> 경로를 별칭으로 지정하여 사용.
'~': path.resolve(__dirname, 'src'),
'assets':path.resolve(__dirname, 'src/assets')
}
},
// 파일을 읽어들이기 시작하는 진입점 설정
entry: './src/main.js',
//결과물(번들)을 반환하는 설정
output: {
clean: true // 덮어쓰기 기능 속성
},
module: {
rules: [
{
test: /\.vue$/,
use: 'vue-loader'
},
{
test: /\.s?css$/,
use: [
'vue-style-loader',
'style-loader',
'css-loader',
'postcss-loader',
'sass-loader'
]
},
{
test: /\.js$/,
use: [
'babel-loader'
]
},
{
test: /\.(png|jpe?g|gif|webp)$/,
use: ['file-loader']
}
]
},
plugins: [
new HtmlPlugin({
template: './index.html'
}),
new CopyPlugin ({
patterns: [
{ from: 'static' }
]
}),
new VueLoaderPlugin()
],
devServer: {
host:'localhost'
}
}
- 이제 마지막 작업이다.
- App.vue를 다음과 같이 작성해준다.
<template>
<h1>{{message}}</h1>
<HelloWorld></HelloWorld>
</template>
<script>
import HelloWorld from '~/components/HelloWorld'
export default {
components: {
HelloWorld
},
data() {
return {
message: "Hello Vue!!!"
}
}
}
</script>
<style>
</style>
- 위의 코드를 설명하자면 다음과 같다.
- HelloWorld.vue를 HelloWorld라는 이름의 변수로 만들어 import한다.
- 해당 파일이 어디에 있었는가? components 파일에 만들었던 것을 기억하는가?
- exports default에 components 속성을 추가하고 해당 변수를 등록한다.
- 이제 이 HelloWorld라는 이름을 HTML 태그로 이용할 수 있다.
- 해당 태그에서 HelloWorld.vue가 갖고있는 화면이 출력된다. 확인해보자.
3. 결과 확인
- 크롬 개발자 도구를 사용하여 확인해보면 위의 사진과 같이 이미지 태그가 잘 삽입된 것을 확인할 수 있다.
'Front-end > Vue3' 카테고리의 다른 글
5. Vue - 기본 동작원리 및 반응성 (0) | 2021.05.13 |
---|---|
4. Vue - ESLint 설정 (0) | 2021.05.12 |
2. Vue - webpack을 이용한 프로젝트 생성 (0) | 2021.05.11 |
1. Vue - 친해지기 (0) | 2021.05.11 |
0. Vue - 시작 준비 (0) | 2021.05.11 |
댓글