vueCLIの基本的なディレクトリ構造
└── test #ルート
├── README.md
├── babel.config.js #ES5への変換設定ファイル
├── node_modules #各種ライブラリ
├── package-lock.json
├── package.json #npmの設定ファイル => node_bodulesから使用するライブラリ
├── public #テンプレート
├── favicon.ico
└── index.html #main.jsのマウント先
└── src #開発フォルダ
├── App.vue
├── assets
│ └── logo.png
├── components
│ └── HelloWorld.vue
└── main.js #エントリーポイント 最初に読み込まれる。設定変更はvue.config.jsを作成して変更する。
main.jsの中身
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false //
new Vue({
render: h => h(App),
}).$mount('#app')
//render関数:htmlを関数で書ける
// hは createElementのエイリアス(別名)
render関数についてはこの記事が詳しく載っています。Vue.jsのrender: h => h(App)について調べた
vueファイル
- vueファイルの頭文字は大文字になる。
- hell.vue ×
- Hello.vue ○
- vueファイルはファイルベースのコンポーネント。すなわち単一ファイルコンポーネント
<template>
<div id="app">
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// import 名前は任意 from ファイルの場所
//アドレスの別の書き方:@/componets/some.vue => @はsrcフォルダの略
import HelloWorld from './components/HelloWorld.vue'
export default { //App.vueファイルをエキスポートしている。
name: 'App', //コンポーネントの名前
components: { //importしたコンポネートを登録
HelloWorld
}
}
</script>
<style scoped> /*scopedとつけるとcssのスコープがコンポーネント単位になる。*/
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
vue.config.js
-
vueの設定を変更するファイル。
- package.jsonと同じ階層に配置する。
-
vue設定ファイルは内部的に存在している。
-
vue inspect > some.js
で設定ファイルを書き出せる。
-
-
使用例
-
npm run build
コマンドで本番環境にコンパイルされたdistフォルダを作る。 - コンパイルされたdist/index.htmlを開くと何も表示されない。
-
Failed to load resource
というエラーがconsoleで表示されている。- cssやjsファイルが読み込まていない。
- なぜか?
- head情報を見てみる
<link href="/css/app.fb0c6e1c.css" rel="stylesheet">
- cssが(ローカル上の)ルートから読み込まれてる。
- vue.config.jsでこの設定を変更する。
- head情報を見てみる
- vue.config.js
- vue CLIのリファレンス(英語)に設定方法が書いてある。
- 変更方法はpublicPathのところに書いている。
- Defaultに
/
とありデフォルトだと先頭に/
が入ることになる。 - vue.config.jsにここを変更する記述をする。
- Defaultに
-
root/vue.config.js
module.exports = {
publicPath: ''
}
- 改めて
npm run build
するとファイルが表示されるようになる。