文件目录
│ .babelrc
│ index.html
│ package.json
├─build
│ webpack.base.js
│ webpack.dev.js
└─src
│ App.vue
│ index.js
├─router
│ index.js
└─views
App.vue
home.vue
webpack配置(入口配置、输出配置,webapck插件加载,文件解析配置等)
//build/webpack.base.js
const path = require('path');
const htmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry:'./src/index.js',
output:{
path:path.resolve(__dirname,'../dist'),
filename:'compiled/js/[name].[chunkhash:8].js',
chunkFilename:'compiled/js/[name].[chunkhash:8].js'
},
resolve:{
extensions:['.js','.vue','.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module:{
rules:[
{
test: /.vue$/,
loader: 'vue-loader',
},
{
test: /.js$/,
loader: 'babel-loader',
},
]
},
plugins:[
new htmlWebpackPlugin({
template:'./index.html',
hash:true
}),
new VueLoaderPlugin()
]
}
devServer 配置
//build/webpack.dev.js
const merge = require('webpack-merge');
const common = require('./webpack.base');
const path = require('path');
module.exports = merge(common,{
devtool:'source-map',
devServer:{
contentBase:path.join(__dirname,'dist'),
historyApiFallback:true,
host:'localhost',
port:8080,
open:false,
proxy:{
}
}
})
Vue路由配置
src/router/index.js
import Vue from 'vue';
import Router from 'vue-router'
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
{
name: 'home',
path: '/',
component: resolve => require(['./../views/home'], resolve),
}
]
})
Vue 的一个模板文件
// src/views/home.vue
<template>
<div class="container">
<p>{{msg}}</p>
</div>
</template>
<script>
export default {
name: "ForeEnd",
data(){
return {
msg:'abc'
}
}
}
</script>
<style scoped>
</style>
Vue 路由的挂载点文件(路由每变动一次,都会将当前路由文件塞到router-view中)
// src/App.vue
<template>
<div id="app">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
</style>
Vue的路口文件或者说是Vue的全局文件
// src/index.js
import Vue from 'vue';
import router from './router'
import App from './App'
new Vue({
router,
components:{App},
template:'<App/>'
}).$mount('#app')
Vue文件渲染从App.vue->index.html
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
整个项目的全局配置文件(项目启动命令、项目依赖)
// package.json
{
"name": "webpack-vue",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "webpack-dev-server --config build/webpack.dev.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.6",
"babel-polyfill": "^6.26.0",
"clean-webpack-plugin": "^3.0.0",
"css-loader": "^2.1.1",
"postcss-loader": "^3.0.0",
"autoprefixer": "^9.6.0",
"node-sass": "^4.12.0",
"sass-loader": "^7.1.0",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^0.23.1",
"webpack": "^4.33.0",
"webpack-cli": "^3.3.3",
"webpack-dev-server": "^3.7.1",
"webpack-merge": "^4.2.1",
"vue-loader": "^15.7.0",
"vue-template-compiler": "^2.6.10"
},
"dependencies": {
"vue": "^2.6.11",
"vue-router": "^3.4.3"
}
}
最后执行以下命令安装依赖
npm install 或者 cnpm install(如果安装了得话)
npm run start //启动 浏览器打开localhost:8080就可以访问首页了