Vue知识记录

本文记录Vue的创建过程,包括安装nodejs和创建Vue项目。深入探讨Vue的双向绑定,通过defineProperty属性,详细解析Writable、Enumerable和Configurable特性,以及属性的默认值。
摘要由CSDN通过智能技术生成
1、安装nodejs,创建vue项目
npm install vue-cli -g //安装脚手架 

npm install webpack -g //安装webpack

vue init wbpebpack (project name) //创建vue项目

cd (project name) 切换到项目目录

npm install 安装所需要的插件

npm run dev 使用webpack运行本地项目

npm run build 打包代码到dist目录

如果要使用nginx,路径需要配置D://workspac/projectname

ps: 详情查看学习笔记>linux>nginx文档
2、vue实例
var vm = new Vue({
    el: '#domId'//绑定的dom
    data: {
        id: 'idd',
        name: 'vue',
        age: 1,
        items:['a', 'b', 'c']
    }
});

语法和angularjs类似 使用双{}

<p>{name}</p> //当然这个p标签必须是属于#domId的子节点否则无效
3、语法
v-bind 绑定事件缩写:{type}

v-html 输出dom结构或者不会被渲染

v-model 双向绑定

v-if 判断 v-else v-else-if 满足条件才会去渲染

v-for 循环  <li v-for="item in items">{{ item }}</li>

v-on:{type}点击事件 缩写 @{type} 

v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display

var source = {a:1, b:2};

var target = {b:4, c:3, d:5};

Object.assign(source, target); //{a:1, b:4, c:3, d:5}

合并对象,存在相同的key值会被后者覆盖. 如果source为空对象就是复制

ps: Object.assign({},target); //{b:4, c:3, d:5}
4、双向绑定原理(defineProperty)
1.Writable 属性

当writable属性设置为false时,该属性被称为“不可写”,它不能被重新分配

var obj = {}
Object.defineProperty(obj,'name',{
    value: '张三',
    writable: false
})
console.log(obj.name) //张三
obj.name = '李四' 
console.log(obj.name) //张三 
'设置了不可写所以值不会变'
2.Enumerable 特性

enumerable定义了对象的属性是否可以在 for…in 循环和 Object.keys() 中被枚举

var o = {};
Object.defineProperty(o, "a", { value : 1, enumerable:true });
Object.defineProperty(o, "b", { value : 2, enumerable:false });
Object.defineProperty(o, "c", { value : 3 }); // enumerable defaults to false
o.d = 4; 
// 如果使用直接赋值的方式创建对象的属性,则这个属性的enumerable为true

for (var i in o) {    
  console.log(i);  
}
// 打印 'a' 和 'd' (in undefined order)

Object.keys(o); // ["a", "d"]

o.propertyIsEnumerable('a'); // true
o.propertyIsEnumerable('b'); // false
o.propertyIsEnumerable('c'); // false
3.Configurable 特性

configurable特性表示对象的属性是否可以被删除以及除writable特性外的其他特性是否可以被修改

var o = {};
Object.defineProperty(o, "a", {
    get : function(){
        return 1;
    }, 
    configurable : false 
});
console.log(o.a); //  1
delete o.a; // 无效因为configurable的值是false
console.log(o.a); //  1
4.属性默认值
var o = {};
o.a = 1;
//直接赋值默认属性都为true
// 等同于 :
Object.defineProperty(o, "a", {
  value : 1,
  writable : true,
  configurable : true,
  enumerable : true
});

// 另一方面,未写的属性默认为false
Object.defineProperty(o, "a", { value : 1 });
// 等同于 :
Object.defineProperty(o, "a", {
  value : 1,
  writable : false,
  configurable : false,
  enumerable : false
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值