其他 - 总结

9 篇文章 0 订阅
6 篇文章 0 订阅

 

目录

Vue

1. 子组件"mounted"钩子函数要早于父组件:

2. 不能被检测更新的数据 及 "强制更新"办法:

3. 使用Element框架,获取子组件的"实际高度":

JavaScript

1. JS获取/修改DOM元素的style:

2. console.time和console.timeEnd用法

CSS

1. "padding" 和 "margin" 的百分比值:

其他

1. 项目文件夹中assets和static的区别:

2. npm run dev 后 "Cannot GET /"报错的原因:

3. 关于git使用https链接代码,每次都要输入账号密码:

其他文章


 


Vue

1. 子组件"mounted"钩子函数要早于父组件:

钩子函数触发顺序如下,"mounted" 和 "destroyed" 都是子组件先触发。在线测试demo

 DOM结构如下:

<parent>
  <child></child>
</parent>

2. 不能被检测更新的数据 及 "强制更新"办法:

如下 demo 测试了 "{{}}" 内的数据更新,及 "watch" 函数的触发条件。      在线demo

<div id="app" :update="count">
  <button @click="obj_a_push">obj原生的属性"a" push({}) 【能被检测】</button><br>
  <button @click="obj_aNew_push">obj后来添加的属性"aNew" push({}) 【不能被检测】</button><br>
  <button @click="arr_1_assign">"arr[1]=val" 【不能被检测】</button><br>
  <button @click="arr_0_push">"arr[0].push({})" 【能被检测】</button><br>
  <button @click="arr_push">"arr.push({})" 【能被检测】</button><br>
  <button @click="handleUpdate">"强制"更新</button>
  <hr>
  <div>obj: {{obj}}</div>
  <div>arr: {{arr}}</div>
  <hr>
  <div>watch函数触发的value: {{watchHappen}}</div>
</div>
new Vue({
  el: '#app',
  data(){
    return {
      obj: { a: [] },
      arr: [ [], 1 ],
      count: 0,
      watchHappen: 0
    }
  },
  beforeMount(){
    // 为 obj 扩展一个新属性,但 vue 无法检测
    this.obj['aNew'] = [];
  },
  methods:{
    obj_a_push(){
      this.obj['a'].push({})
    },
    obj_aNew_push(){
      this.obj['aNew'].push({});
    },
    arr_1_assign(){
      this.arr[1] = parseInt(Math.random()*100)
    },
    arr_0_push(){
      this.arr[0].push({})
    },
    arr_push(){
      this.arr.push(0);
    },
    handleUpdate(){
      this.count ++;
    }
  },
  watch: {
    obj(val) {
      this.watchHappen = val
    },
    arr(val) {
      this.watchHappen = val
    }
  }
})

结论

1. "arr[index]=value" 和 "obj[prop]=value" 这种赋值方式均不能被检测更新

2. 对象内的原生组数( 即"data"内预先定义好的,如obj:{arr:[]} ),obj['arr'].push方法添加数组对象,可以被检测更新

3. 对象内的非原生组数( 即后添加的属性,如obj['arr2']=[] ),obj['arr2'].push方法添加数组对象,不能被检测更新

4. 对象内部的数据改变"watch" 函数无法检测到,除非 "obj=obj2" ;

5. 修改"不能被检测更新"的数据时,连带修改值类型数据,可以实现"强制更新"


3. 使用Element框架,获取子组件的"实际高度":

Element UI框架官网

如图所示,"mounted()" 钩子函数可以 "this.$el.offsetHeight" 获取组件高度非实际值

可以通过在 "updated()" 钩子函数内获取 "this.$el.offsetHeight" 的值,该值为实际值

在线demo


 

 

 

 



JavaScript

1. JS获取/修改DOM元素的style:

<body>
  <div class="test" style="height:600px"></div>
</body>
<script>
  var domObj = document.getElementsByClassName('test')[0];
  // ".style.prrperty"无法获取<style>内的样式,只能获取该DOM元素的内敛样式
  console.log(domObj.style.width);	// ""
  // 获取<style>标签内样式的方法
  // 适用于 Firefox 和 chrome
  // "getComputedStyle"方法的第二个参数是伪类选择,不需要则设定为null
  console.log(window.getComputedStyle(domObj,null).width);	// 500px
  // 仅适用于IE
  // console.log(domObj.currentStyle.width);	// 500px

  // 修改css样式仅有一个方法
  domObj.style.width = "1000px";
</script>

2. console.time和console.timeEnd用法

function fn(){
  console.time('usageTime');
  for(let i=0;i<100;i++){console.log('')}
  console.timeEnd('usageTime');
}
fn();    // usageTime: *****ms

 

 

 

 

 

 



CSS

1. "padding" 和 "margin" 的百分比值:

CSS的 padding 和 margin 可以用 "%" ,但其取值为父容器宽度的百分比,无论垂直还是水平方向的 padding 和 margin ;border 不能使用 "%" 。(在线demo  | 下图内框 padding:10%;height/width:50px )


2. "transform" 对 行内元素 不起作用:

左图中的字体大小相同,但对行内元素不起效,解决办法是设置样式 "display:inline-block"(在线demo)


3. "::before" 和 "::after" 属于 行内元素:

伪类元素 "::before" 和 "::after" 均为行内元素,需要对其设置高宽先设置样式 "display:inline-block"

注意,"content" 样式是必须的


 

 

 

 

 

 

 

 

 

 

 

 

 



其他

1. 项目文件夹中assets和static的区别:

简单说,assets存放自己编写的,需要打包编译的;static则存放静态资源,不需要打包编译的。

其他博主的文章


2. npm run dev 后 "Cannot GET /"报错的原因:

1. 文件目录命名导致,建议改成全英文
2. request模块导致,npm remove request ; npm i request
3. config配置文件导致,assetsPublicPath:'./' 改成 '/'


3. 关于git使用https链接代码,每次都要输入账号密码:

git bash进入你的项目目录,输入:

git config --global credential.helper store

然后你会在你本地生成一个文本,上边记录你的账号和密码。

 

 

 

 

 



其他文章


移动端的那些坑


有限状态机在CSS动画中的应用


如何编写 Typescript 声明文件


提高设计美感,你需要这七个“作弊”小窍门


从入门到上线一个天气小程序


中国程序员开发的神奇网站:变量命名神器!


程序员面试,一定要警惕的 8 件事!


JavaScript工程项目的一系列最佳实践策略


送你一份微信小程序 web-view 开发踩坑大全


动效不该难


 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值