Es6語法並沒有轉換成Es5所以一些瀏覽器可能不支持,於是下載babel:
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
還是到官網把配置復制粘貼到config中。
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
}
exclude功能:這些文件夾排除在外不需要轉化。再打bundle一看語法已經改變了 沒有const了。
Vue的使用:
先通過命令安裝:
npm install --save vue
然后在mainjs中導入:
//vue 開發
import Vue from 'vue'
const app = new Vue({
el:'#app',
data:{
message:'hello webpack'
}
})
通過再webpack config文件中module同級后面增加resolve來控制vue
resolve:{
//別名
alias:{
'vue$':'vue/dist/vue.esm.js'
}
}
真實的開發中我們不會在index.html加入冗余的代碼,基本上可以說不改,那應該怎么做呢?
當el指定了目標后,如果存在template模版內容,則將template模版內容與目標內容直接替換。也就是說index中el目標的內容被完完全全替換成template中的內容了。
到了使用點Vue文件的時候了。我們通過寫App.Vue文件的格式來使得代碼更加具有擴展性:
<template>
<div>
<title>標題</title>
<h2>{{message}}</h2>
<button @click="btnClick">按鈕</button>
<h2>{{name}}</h2>
</div>
</template>
<script>
export default{
name:'App',
data(){
return{
message:'hello webpack',
name:'Frank'
}
},
methods:{
btnClick(){
console.log("btnClick!!!")
}
}
}
</script>
<style scoped>
.title{
color:green;
}
</style>
這樣我們在main.js中通過一句話來直接使用它:
import App from './vue/App.vue'
但是我們依舊需要下載loader,都是開發時候使用所以--save-dev
npm install vue-loader vue-template-compiler --save-dev
build之后還是報錯了,原因是版本不兼容的問題,在package.json中改一下Vue-loader的版本為13+,然后重新npm install一下就可以build了。

我們可以看到
<h2 class='title'>{{message}}</h2>
和定義的樣式:
<style scoped>
.title{
color:green;
}
</style>
在index中已經生效了,說明代碼已經有效了。

