webpack打包后vue挂载根节点元素消失了

我用自己搭建webpack来打包vue,引入打包好的vue的时候,挂载元素消失了

搭建自己的webpack打包环境主要是想学习vue

相关代码

1.这个是入口文件

import Vue from 'vue'
import Child from './app'
new Vue({
    el: '#app',
    data: {
        msg: 'this is msg'
    },
    render: (h) => h(Child)
})

2.这个是import引入的app文件内容

import Vue from "vue";

var Child = Vue.component('Child', {
    template: `<div><span>hello world</span></div>>`
});
export default Child;

3.这个是index.html文件

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div id="app">
    {{msg}}
</div>
<script src="./dist/main.js"></script>
</body>
</html>

4.这个是webpack配置文件、

module.exports = {
    entry: {main: './1.js'},
    output: {
        path: __dirname + '/dist',
        filename: '[name].js'
    },
    module: {
        rules: [
            {
                test: "/\.js$/",
                exclude: "/node_modules/",
                loader: "babel-loader"
            }
        ]
    },
    resolve: {
        alias: {
            'vue':'vue/dist/vue.common.js'
        }
    }
}

下面是浏览器元素节点

<html lang="en"><head>
    <meta charset="UTF-8">
    <title>Document</title></head>
<body>
<div><span>hello world</span></div>
<script src="./dist/main.js"></script>
</body>
</html>

可以看到的index.html的根节点#app不见了。。。不知道是为啥?

阅读 9.4k
3 个回答

文档链接

提供的元素只能作为挂载点。不同于 Vue 1.x,所有的挂载元素会被 Vue 生成的 DOM 替换。因此不推荐挂载 root 实例到 <html> 或者 <body> 上。

官方文档哟说明,vue 2版本以后,就利用 js中组件生成的 html模板替换掉 el节点本身,而不是append进去的。

https://cn.vuejs.org/v2/api/#el

请仔细阅读官方文档 https://cn.vuejs.org/v2/guide...
你现在打包出来的 vue 是运行时版本,不包含编译器的。把 vue 打包的版本改为包含编译器的版本即可,具体配置如下

clipboard.png

推荐问题