跳到主要内容

· 阅读需 1 分钟

switch 语句注意点

  1. 可以在switch语句中使用任何数据类型,字符串,对象都没有问题

  2. case 的值也不一定是常量,可以是变量,甚至表达式

· 阅读需 5 分钟

操作运算符,对象的特殊比较

前言

js高级程序设计(以下简称高程)这本书中提到的操作运算符,有些比较特殊的点,在以前的没有接触过,其中 对象这个比较有意思,也在面试题中出现。

· 阅读需 2 分钟

script 标签的两个属性 defer async

html中的script标签只要不存在defer属性和async属性,浏览器都会按照script标签在页面中的先后顺序依次进行解析,也是说解析完第一个script的代码,然后再去解析第二个script标签的代码

· 阅读需 4 分钟

网上搜索了大量的资源,得知是ios为了限制流量故意设置了这个

解决办法是 只能通过用户自己去触摸下才能去播放

微信内访问可以通过微信的WeixinJSBridgeReady事件处理

但是用的是vue的单页面,这个事件只有在页面首次加载的时候会触发。什么意思? 就是如果在当前页面刷新的时候就会触发这个事件。如果是从别页面进来这个页面的,不会触发该事件的。当然网上也有一些解决方案,比如把audio标签放到App.vue里面这样只要点开页面就会触发事件了,这种可以在进页面就播放音频的业务可以处理掉。如果是对音频有快进快退这种操作的,就没办法了。因为放在App.vue上,有很多事件需要处理,可能要引入大量的vuex的状态变量才能处理掉,维护性也不强。

· 阅读需 6 分钟

vue

1.父子组件通讯

一般都是子组件定义prop然后父组件传递prop参数

子组件通过 $emit 触发事件,通知父组件。父组件通过 $on或者html上通过@+事件名来监听组件的事件

2.兄弟组件通讯 (eventbus)

简单版使用event Bus的方式,即new 一个Vue,通过这个实例触发$emit以及监听$on来实现。

· 阅读需 1 分钟

table的表格边框设置, 完美解决边框的问题

td {
border:solid #ddd;
border-width:0px 1px 1px 0px;
padding: 0px;
min-width: 75px;
height: 50px;
}
table {
border:solid #ddd;
border-width:1px 0px 0px 1px;
font-size: 13px;
text-align: center;
cellspacing: 0;
cellpadding: 0;
}

· 阅读需 1 分钟

vue 父组件监听子组件的方法,父组件定义的方法添加额外参数转换

   <DatePicker :editable="false" type="datetime" @on-change="(...args) => getTime('signTime', ...args)" placeholder="选择时间" format="yyyy-MM-dd HH:mm" v-model="formData.signTime"></DatePicker>

使用 => 函数,重新返回一个新的函数,并且拼接新的形参即可

· 阅读需 1 分钟

react HOC 高阶组件的理解

如react文档中所说的hoc只是一种模式,这个组件接收一个组件,并返回一个新的组件 这样的话可以把一些公共的方法或者变量放在hoc中,在需要的页面,引入hoc组件,这样就可以在页面内部使用这些公共的东西了

· 阅读需 1 分钟

2018-12-27

1.window is not defined

网上搜索后得出的结论是服务端渲染不能操作dom的,或者不能操作window的api,然后排查了下,发现项目用了flexible.js,这个库会操作html改变属性。

解决方法 在用到的地方

if (typeof window !== 'undefined') {
require('lib-flexible') /*使用require的方式加载你的文件*/
}

这样重新编译后,就不会报错了,页面也就能正常打开了

· 阅读需 1 分钟

img 添加底图

.img {
background: // 底图base64数据
background-size: 60% auto
}