散装笔记
1、
vue 回车触发聚焦 @keyup.enter.native
2
、
前后端不存在跨域问题用coolie,存在跨域的问题用token
跨域问题:
CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问的那个资源就会遇到跨域问题。
作者:macrozheng
链接:https://www.imooc.com/article/292349
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

热部署和热加载
首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的。
二者区别如下:
在部署方式上:
热部署是在服务器运行时重新部署项目。
热加载是在运行时重新加载 class。
(视频教程推荐:java视频)
在实现原理上:
热部署是直接重新加载整个应用,耗时相对较高。
热加载是在运行时重新加载 class,后台会启动一个线程不断检测你的类是否改变。
在使用场景上:
热部署更多的是在生产环境使用。
热加载则更多的是在开发环境上使用。线上由于安全性问题不会使用,难以监控。
拓展:懒加载与预加载
链接:https://blog.csdn.net/ca817586/article/details/78665198
localStorage是持久化的存储机制
sessionStorage是会话期间的存储机制





git操作


由于云端没有login分支,将本地的login分支推送到云端的login分支




event.preventDefault() 方法阻止元素发生默认的行为。
例如:
- 当点击提交按钮时阻止对表单的提交
- 阻止以下 URL 的链接
PascalCase和camelCase:
依靠单词的大小写拼写复合词的做法,叫‘ 驼峰拼写法’ (CamelCase) ; 比如:BlackColor ; (单词只是为了示例);
驼峰拼写法又分为两种,
第一种:第一个词的首字母小写,以后每个词的首字母大写,叫做‘ 小驼峰拼写法’ lowerCamelCase,比如:blackColor ;
第二种,第一个词以及后面的词的首字母都大写,叫 ‘大驼峰拼写法’ (UpperCamelCase),又称为 “帕斯卡拼写法” (PascalCase)。比如:BlackColor
————————————————
版权声明:本文为CSDN博主「尹东」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yinge0508/article/details/109249397
// props:['my-message'], props:['myMessage'],//props中传递的数据可以为驼峰式也可以为短横线式,他们在此处是相互转换
官方推荐使用一种update:my-prop-name 的模式来替代事件触发,目的是为了优雅而不粗鲁的实现父子组件间的双向绑定!先来完成一个小功能:通过父组件按钮将子组件显示出来,如图:

父组件代码:
<template>
<div>
<input type="button"
value="我是父组件中的按钮"
@click="show">
<child v-show="isShow"/>
</div>
</template>
<script>
import child from "@/components/child"
export default {
data() {
return {
isShow:false
}
},
components:{
child
},
methods:{
show(){
this.isShow=true;
}
}
}
</script>
子组件child代码:
<template>
<div>
我是一个子组件,我在红色的海洋里!
</div>
</template>
接下来加个需求,在子组当中增加一个按钮,通过该按钮来将自已隐藏起来!需要借助父子之间的传值了!如图:

父组件代码:
<template>
<div>
<input type="button"
value="我是父组件中的按钮"
@click="show">
<child @upIsShow="changeIsShow" v-show="isShow"/>
</div>
</template>
<script>
import child from "@/components/child"
export default {
data() {
return {
isShow:false
}
},
components:{
child
},
methods:{
show(){
this.isShow=true;
},
changeIsShow(bol){
this.isShow=bol;
}
}
}
</script>
子组件代码:
<template>
<div>
我是一个子组件,我在红色的海洋里!
<input type="button" value="点我隐身" @click="upIsShow">
</div>
</template>
<script>
export default {
methods:{
upIsShow(){
this.$emit("upIsShow",false);
}
}
}
</script>
如果我要将父组件中的事@upIsShow修改为@update:isShow不违法吧:
<child
子组件的emit自然也要做对应调整:
upIsShow(){
this.$emit("update:isShow",false);
}
运行一下,一切正常!真好!
那么如果现在我将父组件的changeIsShow直接写成匿名函数,也能运行吧:
<child
再次运行,一切还是那么美好,真好!
现在我将那匿名函数改成箭头函数,不过分吧:
<child
再运行一次,完美,真好!
最后我将上面那行代码做最后一次修改:
<child :isShow.sync="isShow" v-show="isShow"/>
至此终于涉及到了sync了。以上代码 :isShow.sync="isShow"其实是 @update:isShow="bol=>isShow=bol"语法糖。是其一种简写形式。附上完整代码。
父组件:
<template>
<div>
<input type="button"
value="我是父组件中的按钮"
@click="show">
<child :isShow.sync="isShow" v-show="isShow"/>
</div>
</template>
<script>
import child from "@/components/child"
export default {
data() {
return {
isShow:false
}
},
components:{
child
},
methods:{
show(){
this.isShow=true;
},
changeIsShow(bol){
this.isShow=bol;
}
}
}
</script>
子组件:
<template>
<div>
我是一个子组件,我在红色的海洋里!
<input type="button" value="点我隐身" @click="upIsShow">
</div>
</template>
<script>
export default {
methods:{
upIsShow(){
this.$emit("update:isShow",false);
}
}
}
</script>
最后:sync只是给大家伙提供了一种与父组件沟通的思路而已!所以在后面日子里,你如果只是单纯的在子组件当中修改父组件的某个数据时,建议使用sync,简单,快捷,有档次!真好!
作者:张培跃
链接:https://www.jianshu.com/p/d42c508ea9de
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

浙公网安备 33010602011771号