1.二进制以 0b 开头,八进制以 0 开头(注意事项:var phone = 01032878 存电话号码时,会被js误认为八进制数字,所以会出现 ‘bug’) ,16进制以 0x 开头

2.css 之间的影响:

3.vue组件中 data 为什么是一个函数?

为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?

因为组件是用来复用的,且 JS 里对象是引用关系,如果组件中 data 是一个对象,那么这样作用域没有隔离,子组件中的 data 属性值会相互影响,如果组件中 data 选项是一个函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的 data 属性值不会互相影响;而 new Vue 的实例,是不会被复用的,因此不存在引用对象的问题。

4.module.exports和export

1
2
3
4
5
// a.js
// ex1:
exports.verifyPassword = function(user, password, done) { ... }
// ex2:
module.exports.verifyPassword = function(user, password, done) { ... }
1
2
3
4
5
// b.js
// ex1:
require(‘a.js’) // { verifyPassword: function(user, password, done) { ... } }
// ex2:
require(‘a.js’) // verifyPassword: function(user, password, done) { ... }

5.git

git commit –amend 修改上次的 commit message
git rebase -i 想修改的 commit 的父亲的 commit 进入 rebase 中, 可以修改commit message 也可以合并commit (s 合并commit ,r 修改message)
git diff 比较工作区与暂存区之前的差异,git diff –cached 比较暂存区和HEAD之间的差异
git reset HEAD 将暂存区的所有变动恢复到工作区(也就是取消git add .)
git reset –hard commit码 (回退到哪个版本)

6.BEM

7. 在github上面搜索小技巧

in:readme

8. 简洁的滚动条 css

1
2
3
4
5
6
7
8
9
::-webkit-scrollbar {
background: transparent;
width: 4px;
height: 28px
}

::-webkit-scrollbar-thumb {
background: rgba(50,50,51,.15);
}

10.JSONP

11.node重点API

12. 原型链

1
2
3
4
5
6
// 因为不能写
Man.prototype.__proto__ = Human.prototype
// 所以只能用下面三句话代替
var fn = function () {} // 为了过滤this上的私有属性,因为我们不想要下图的第四步
fn.prototype = Human.prototype
Man.prototype = new fn() // 如下图 Man.prototype.__proto__ = fn.prototype // 一个东西的__proto__等于构造出他的prototype

13.web性能优化

首先来分析从用户输入网址到看到页面发生了什么?

1.看有无缓存,有缓存就读缓存,无缓存就接下来继续。
2.DNS查询
3.建立TCP连接,其中三次握手。
4.发送HTTP请求
5.后台处理请求
6.客户端接收响应
7.响应完成 (readyState === 4)
8.解析HTML
9.并行下载CSS,串行解析CSS(chrome中会等CSS解析完成才显示页面,所以在chrome中CSS也会阻塞渲染)
10.并行下载JS,串行解析JS

所以web优化,也从上述步骤中突破。

1.设置缓存。
2.减少域名请求数量(减少cdn之类的请求)。
3.TCP连接复用(keep-alive)如果是HTTP2.0有个多路复用。
4.HTTP请求4部分,我们可以优化第二部分,删除不需要的cookie,还可以增加cache-control等。还可以通过同时发送多个请求来减少时间(同一域名下浏览器会帮我们,IE四个、chrome八个,所以可以用多个域名来存我们的css、js静态文件,但是这里和第二步冲突,所以需要权衡,文件少的时候没有突破浏览器同时发送上限,我们就直接放在一个域名下即可,文件多的话就相反)。
5.后台的事情。
6.可以设置ETag,直接返回304,没有响应体。还可以设置Gzip,压缩文件。
7.无
8.HTML的DOCTYPE(html/XML)不能写错,也不能不写
9.放cdn
10.放cdn

14.javascript - 如何导入没有TypeScript定义的npm软件包

1
2
3
4
5
6
7
8
9
10
import {GoogleMapLoader, GoogleMap, Marker} from "react-google-maps";

declare module "react-google-maps" {
export var GoogleMapLoader:any;
}
// or
declare module 'react-loadable' {
const classes: any;
export default classes;
}