vue小细节(1)

1.vue.js里的vm:

实例名称~vm ~他是new出来的,

var vm=new Vue({})

 var app =new Vue({})

 

官方api用的vm,只是一个实例
 
2.vm.$el解读:
var vm = new Vue({
el: '#app', router, template: '
<App/>', components: {App} }); console.log(vm.$el)

这里,只能在入口文件中获取vm.$el,并不能在其他文件获取

通过 Vue 命令行使用 webpack 项目模板生成的项目,webpack 打包的基础是模块化,模块是一个个封闭的上下文,不但入口文件中的私有变量不能被其他文件获取,

所有文件中的私有变量都不能在其他文件中获取。

只有通过 export 导出的值才可以在其他模块中访问,因此如果需要在其他模块中使用 vm,你需要 export vm

$els类似于document.querySelector('.class')的功能,可以拿到指定的dom元素。

 this.$el等于vm.$el

3.$mount()手动挂载

 

当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中;

假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载。例如:

<div id="app">
    {{a}}
</div>
<button onclick="test()">挂载</button>
<script>
    var obj = {a: 1}
    var vm = new Vue({
        data: obj
    })
    function test() {
        vm.$mount("#app");
    }

初始,显示的是{{a}}

当点击按钮后,变成了1

4.vue生命周期:

运行结果如下:

 

代码如下:

 
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id=app>
    {{a}}
    <br>
    <button v-on:click="greet">change</button>
</div>

<script>

    var myVue = new Vue({

        el: "#app",

        data: {

            a: "hava data"

        },
        methods:{
            greet:function(){
               this.a="changed data"
            }
        },

        beforeCreate: function() {

            console.log("创建前")

            console.log(this.a)

            console.log(this.$el)

        },

        created: function() {

            console.log("创建之后");

            console.log(this.a+"........")

            console.log(this.$el)

        },

        beforeMount: function() {

            console.log("mount之前")

            console.log(this.a+"........")

            console.log(this.$el)

        },

        mounted: function() {

            console.log("mount之后")

            console.log(this.a+"........")

            console.log(this.$el)

        },

        beforeUpdate: function() {

            console.log("更新前");

            console.log(this.a+"........")

            console.log(this.$el)

        },

        updated: function() {

            console.log("更新完成");

            console.log(this.a+"........")

            console.log(this.$el)

        },

        beforeDestroy: function() {

            console.log("销毁前");

            console.log(this.a)

            console.log(this.$el)

            console.log(this.$el)

        },

        destroyed: function() {

            console.log("已销毁");

            console.log(this.a)

            console.log(this.$el)

        }

    });

</script>
</body>
</html>

 

 

 

 
posted @ 2018-10-18 18:58  goodshred  阅读(213)  评论(0编辑  收藏  举报