vue小细节

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>

原文地址:https://www.cnblogs.com/goodshred/p/9812468.html

时间: 2024-08-06 22:23:57

vue小细节的相关文章

Vue.js 和 MVVM 小细节

Vue.js 和 MVVM 小细节 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定. Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层.它的核心是 MVVM 中的 VM,也就是 ViewModel. ViewModel负责连接 View 和 Mode

apache配置虚拟主机时需要注意到几个小细节

如今apache在web服务器这块市场占有率还是很高的,而配置虚拟主机现在也是用的非常多,不过在配置虚拟主机的时候一定要注意几个小细节. 首先要注意你的apache版本,注意是2.2还是2.4的. 配置2.2的时候,配置虚拟主机该这样写: NameVirtualHost ip:80   //注意此处与2.4不同 <VirtualHost ip:80> ServerName www1.myweb.com DocumentRoot "/myweb/vhost/www1" <

关于if语句中的小细节

if语句都会用,但是有一些小细节并不容易被发现. 比如我们不应该写这样的代码: if(flag==0) flag为布尔变量,布尔变量的值为真或假,用0表示假,真是多少是不一样的. 所以我们应该避免将布尔变量与0或1这样的整型值进行比较. 那么我们也不应该写这样的代码: if(i) i为一个整型变量,但是写成上面那样就会被人误以为是布尔值,良好的编程习惯是这样的: if(i==0)或if(i!=0) 还有重要的一点是,我们不能将float型和double型数据与0这种整型变量进行==或!=. 因为

强壮你的C和C++代码30个小细节

1 初始化局部变量 使用未初始化的局部变量是引起程序崩溃的一个比较普遍的原因, 2 初始化WINAPI 结构体 许多Windows API都接受或则返回一些结构体参数,结构体如果没有正确的初始化,也很有可能引起程序崩溃.大部分Windows API结构体都必须有一个cbSIze参数,这个参数必须设置为这个结构体的大小. 注意:千万不要用ZeroMemory和memset去初始化那些包括结构体对象的结构体,这样很容易破坏其内部结构体,从而导致程序崩溃. 3 检测函数输入参数有效性 在函数设计的时候

注意编码工作中的小细节

人们常说"细节决定成败". 编码工作中,同样需要关注细节. 本文将给出3个小实例来说明编码中关注细节的重要性,同时给出作者对如何注意编码细节的一点见解(说的不对,请指正). 例1 这个问题如此地显而易见,竟然没有被发现. List<int> numList = new List<int>(); numList.Add(3); numList.Add(1); numList.Add(4); numList.Add(2); numList.Add(5); numLi

python isinstance 判断各种类型的小细节

1. 基本语法 isinstance(object, classinfo) Return true if the object argument is an instance of the classinfo argument, or of a (direct, indirect or virtual) subclass thereof. Also return true if classinfo is a type object (new-style class) and object is

[小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)

[小细节,大BUG]  1. 在不久前,一个朋友出现了这样一个BUG:当UITableView加载cell的时候,自定义的cell,怎么显示,里面的文字总是显示不完全(注意,文字不长).然后,我帮忙给看了下,甚至把在storyBoard中将cell的相关属性都试了下,虽然可以解决,但是效果不理想.最终经过排查,终于发现问题所在:当自定义cell时,因为需要布局子控件,所以他重写了layoutSubviews方法,然而在此方法中没有调用[super layoutSubviews],所以造成了布局混

Python 的lambda表达式的一些小细节

温故而知新,无意中发现以前实验lambda的时候写的测试代码,第一个反映就是,这是我写的????!!! 呵呵,想想XX语言刚把lambda正式加进去,python早早支持了,我可以大喊一声”Python是最好的语言“来找找骂吗? 哈哈. 不过,自从有了lambda,很多代码一行搞定.不过还是有很多不为一般人注意的小细节,详见下面代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3

C++在使用Qt中SLOT宏须要注意的一个小细节

大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类假设覆写,在基类指针或者引用来指向子类的时候会实现动态绑定. 但假设指针去调用非虚函数,这个时候会调用C++的静态绑定,去推断当前的指针是什么类型,就去运行哪个类型的函数. 非常有一种比較经典的使用方法,就是Template Method模式,基类定义一个非虚的算法框架,里面详细定义一些纯虚的函数片段,由子类来进行实现,从而实现了控制整体框架,但能够给客户自由定制的灵活性.这个使用方法事实上就是指针去调用了基类的方法,由方法的扩展之后