2019.01

2019.01.02

1.git 不提交某个文件

1
git update-index --assume-unchanged src/partner/dc/config/dbs.js

2.测试IE

IETester

3.IE报错

IE11浏览器出现”TypeError:对象不支持”starsWith”属性或方法”

1
cnpm install babel-polyfill --save

在入口文件第一行加上

1
import "babel-polyfill"

判断IE和Edge,世界之窗

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE =
userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1;
var isEdge = userAgent.indexOf("Edge")>-1&&!isIE;
var isWorld = userAgent.match("TheWorld");
var isIE11 = userAgent.indexOf('Trident')>-1&&userAgent.indexOf('rv:11.0')>-1;
if (isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if (fIEVersion == 7) {
return 7;
} else if (fIEVersion == 8) {
return 8;
} else if (fIEVersion == 9) {
return 9;
} else if (fIEVersion == 10) {
return 10;
} else if (isEdge) {
return "edge";
} else if (isIE11) {
return 11;
} else {
return -1;
}

2019.01.03

slice && splice

slice不改变原数组,切割

splice会改变原数组,删除

2019.01.04

单例模式

  1. 如果有同样的函数或组件出现,会销毁前一个
  2. router-view 是个单例

例子:
项目中,父子组件都用到了播放器组件,因为vue,不会销毁,两个点击后都会出现,设计单例模式

因为vue的destoryed销毁后dom还在,还需要进行一系列操作。而v-if可以实现组件销毁,因此通过v-if设计。

2019.01.14

pixi教程

2019.01.15

调试Node,下载nodemon,然后nodemon 文件,不然每次改完都需要run

2019.01.16

1.引用模块
module.exports = getSql;
才能用getSql引用模块

import 方法,不能嵌套用,比如
cp_game.js在其他地方require,就不能import,只能require

2.console.log && log4js
console是控制台对象,console.log是到了运行端的控制台,所以express部分是打印到了后端控制台而不是浏览器;界面的是打印到了浏览器标准的服务器log,其实是变成了文本文件。log4js标准是后端很稳定可靠的日志设计,log4js是node版本,本质也会产生log文件,会到一个文本文件里。

2019.01.17

1.return不成功

1
2
3
4
5
6
7
8
9
10
如果一个方法里有异步,return会不成功,采用以下方法

a:function(sql,callback) {
if(callback) {
callback(a)
}
return a;
}

a(sql,function(result){}

2.log4js不会自动创建文件夹

3.命名

  1. 命名使用业务术语,而非计算机术语,即更多表现业务逻辑。
    1
    list => flaggedCells
  2. 尽量不要缩写
  3. 不同的程序员命名相同的业务术语一致
  4. 驼峰命名
  5. 如何缩短命名,避免范围内重复
    1
    2
    比如:
    person下的 personName personId
  6. 工具
    不是简单地把通用的代码抽离出来,而是实现用户在页面中输入少量且简单地代码,工具收到参数后即可进行功能作用——通用、简化

2018.01.22

vue不要直接赋值

this.skillform.intentionTable = result.data

容易赋值不成功,比如result.data 没有id的属性,之后操作this.skillform.intentionTable.id是不能成功的

2018.01.23

try,catch,throw
1
2
3
4
5
6
try {
//在这里运行代码
}
catch(err) {
//在这里处理错误
}

throw 创建自定义错误

可以直接用

1
2
3
if(x>10) {
throw 'too high'
}

与try catch连用

1
2
3
4
5
6
try {
if(x>10) throw 'too high'
}
catch(err) {
let a = 'Error:' + err
}
export,export default,import || export,module.exports,require
module exports 和 require

因为Node应用由模块组成,采用CommonJs模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在这些文件里面定义的变量、函数、类,都是私有的,对外不可见。因此规避了作用域污染。
根据CommonJS规定,每个模块内部,module变量代表当前模块,这个变量是一个对象,它的exports属性是对外的接口,加载某个模块,其实就是加载该模块的exports属性

1
2
3
4
5
6
7
8
9
10
11
MyModule.js
const config = {
case: function(){

}
}

module.exports = config

引入
var config = require('./MyModule')
exports 与 module.exports
1
node中,exports = module.exports

1
2
exports = config (x)
exports.config = config (√)
export和import

ES6中,导出export,导入import

补充
  1. export语句输出的接口,与其对应的值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。
    CommonJS输出的值是缓存,不存在动态更新。
  2. export和import命令不能在块级作用域,要在模块顶层。
  3. import命令具有提升效果,会提升到整个模块的头部,首先执行。

检查父子组件!!

一个诡异的问题:

页面有添加和修改功能,修改后表格会相应更新,但添加不会。
它们都是通过点击打开弹窗(子组件),保存后调用表格(父组件)的初始化功能。
后发现,添加是在另一个组件,其父组件不是表格而是表格的父组件(页面),所以需要调用表格的方法打开父组件。

2018.01.25

1.git push失败

因为做博客,换了账号提交,还提交了很多次,结果push失败。

首先用现在的账号回到第一次提交git abort

然后git add ….

换账号,git log,git reset… 提交

2.operation not permitted

权限不够,给文件夹加上权限。如有加不上的,一直报无权限的,试试注销电脑

3.不提交log文件

.gitgnore中,加上 *.log ,git add .gitgnore

2019.01.28

算一个字符串在数组中出现多少次

1
const countOccurrences = (arr,value) => arr.reduce( (a,v) => (v===value?a+1:a+0),0 )