Vue 2.0 通过Webpack导入vue文件组件。 webpack编译通过。在浏览器运行出如下问题:
看了“webpack+vue的匹配报错”这个问题,https://segmentfault.com/q/10...。之后。
如果是建立const User={template:“<div> </div>”}
可以运行。
有什么办法解决这个问题,求VueJS高手赐教,谢谢!
package.json:
{
"name": "vue-route-learn",
"version": "1.0.0",
"description": "learn vue-router",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack"
},
"author": "Eason peng",
"license": "MIT",
"devDependencies": {
"babel": "^6.23.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"css-loader": "^0.28.8",
"style-loader": "^0.19.1",
"vue": "^2.5.13",
"vue-html-loader": "^1.2.4",
"vue-loader": "^13.6.2",
"vue-router": "^3.0.1",
"vue-template-compiler": "^2.5.13",
"webpack": "^3.10.0"
}
}
webpack.config.js:
module.exports = {
entry: __dirname + "/app/main.js",//已多次提及的唯一入口文件
output: {
path: __dirname + "/public",//打包后的文件存放的地方
filename: "bundle.js"//打包后输出文件的文件名
},
devServer: {
contentBase: "./public",//本地服务器所加载的页面所在的目录
historyApiFallback: true,//不跳转
inline: true//实时刷新
},
module: {
rules: [
{
test: /(\.jsx|\.js)$/,
use: {
loader: "babel-loader",
},
exclude: /node_modules/
},
//解析VUE文件,vue最主要的就是用到了这个vue-loader,这才是解析vue文件的关键
//但是因为vue文件里面又包含有css和js,所以才用到了后面的几个loader
{ test: /\.vue$/, loader: "vue-loader" },
//解析css
{ test: /\.css$/, loader: "style!css" },
//解析html
{ test: /\.(html|tpl)$/, loader: 'html-loader' }
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.js'
}
}
}
入口main.js文件:
//main.js
import Vue from 'vue';
import VueRouter from 'vue-router';
// import User1 from '../views/user_component.js';
// import UserProfile from '../views/user_profile_component.js';
// import UserPosts from '../views/user_posts_component.js'
import User from '../views/user.vue';
import UserProfile from '../views/userprofile.vue';
import UserPosts from '../views/userposts.vue';
Vue.use(VueRouter)
//嵌套路由
// 1. 定义(路由)组件。
// 已经从其他文件 import 进来
// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [
{
path: '/user/:id', component: { User },
children: [
{
// 当/user/:id/profile 匹配成功
// UserProfile 会被渲染在User 的<router-view>中
path: 'profile',
component: { UserProfile }
},
{
// 当 /user/:id/posts 匹配成功
// UserPosts 会被渲染在 User 的 <router-view> 中
path: 'posts',
component: { UserPosts }
}
]
},
]
// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({
routes // (缩写)相当于 routes: routes
})
// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({
router
}).$mount('#app')
// 现在,应用已经启动了!
user.vue:
<template>
<div class="user">
<h2> User {{ $route.params.id }} </h2>
<router-view> </router-view>
</div>
</template>
<script>
export default {};
</script>
userposts.vue:
<template>
<div class="posts">
<div class="post">
<h2> 1 </h2>
</div>
<div class="post">
<h2> 2 </h2>
</div>
<div class="post">
<h2> 3 </h2>
</div>
</div>
</template>
<script>
export default {};
</script>
userprofile.vue
<template>
<div class="profile">
<h2> 1 </h2>
</div>
</template>
<script>
export default {};
</script>
直接用vue-cli生成的项目吧,对比看看webpack的配置有啥区别