特殊:前端问题持续更新

1. 函数的副作用

vue 中的 setstate 会产生副作用 , 佐证为 watch 监听时里面的属性的改变不会引发监听的事件。

函数的副作用的举例:

  1. 纯函数的副作用 , 通过函数直接改变obj中的属性值,会造成副作用

  2. 以下情况下没有副作用:通过函数的值改变 obj2 的值,再用 obj2 的值来替换 obj 的值 ,这样就不会造成函数的副作用

2. 函数式编程思想(待更新)

React 16.7.0 ——> React 16.8.0 (Hook)

Vue 2.0 ——> Vue 3.0 ( Hook 、Proxy)

1
2
3
 vue中的 proxy代理  ,数据劫持的核心就是在代理对象的身上重新定义被代理对象的所有可枚举属性,并设置 getter 和 setter 监听着它的变化,然而实现这个功能就是一个方法:

Object.defineProperty() ,通过该方法在实例对象上重新定义了和data 对象里面所有的属性,然而就实现了数据劫持。

3. Tomcat服务器的搭建

(1)下载tomcat服务器

https://tomcat.apache.org/download-70.cgi

(2)下载java的jdk、安装

配置环境变量

1
2
3
JAVA_HOME=C:\Java\jdk1.8.0_144
classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar
PATH配置:;%JAVA_HOME%\bin;
(3)解压tomcat,修改里面的server.xml配置
1
2
3
4
5
6
在apache-tomcat-7.0.96-windows-x64—>apache-tomcat-7.0.96—>conf 中

修改如下的代码:
<Connector port = "8090" protocol:"HTTP/1.1"
connectionTimeout = "20000"
redirectPort = "8843" />
(4)启动 tomcat 服务器

4. node中注意的东西

1
2
3
4
5
6
7
8
9
10
__filename : 包含文件名称的全路径
__dirname : 文件所处的目录的绝对路径(不包含文件名称)

//在 node 中没有dom操作和 bom 操作的api , 也就意味着window document 等对象在 node 中不可以使用 , 可以使用如下:
global.console.log("aaa")
global 就是 顶层对象

process.argv argv 是一个数组,默认情况下,前两项的数据分别是:Node.js环境的路径:当前执行的js文件的全路径
// 从第三个参数开始表示命令行参数
process.arch 就是系统的架构,64位或者32
4.1 stat 和 fstat 的区别

fs.stat 接收的第一个参数是一个文件路径字符串

fs.fstat接收的是一个文件描述符;

内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件

其它的Fs方法中和这种类似的也是这样的描述;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//基于Promise的API的所有方法调用之后都会给我们返回一个promise,然后我们就可以使用.then
fsPromises.stat("./tt")
.then(function(data){
console.log(data)
},function(err){
console.log(err);
return fsPromises.mkdir("./tt");
})
.then(function(data){
console.log(data)
return fsPromises.writeFile("./tt/bb.txt","xxxxx你好");
},function(err){
console.log(err)
})
.then(function(data){
console.log(data);
})

5. e.target.innerHTML

可以获取到 a 标签里的值,不是用value进行获取的。

6. axios 原生的了解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
axios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
.then(function () {
// always executed
});

params 的传递是根据对象的形式,在发送请求的时候要进行封装成对象的形式。

原生的 axios get请求的形式值得去了解一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const axios = require('axios');

// Make a request for a user with a given ID
axios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.finally(function () {
// always executed
});

友情链接: https://www.npmjs.com/package/axios?activeTab=readme

7. 数组的 … 进行添加

1
2
this.array = [...cdata.message,...this.array]
//数组的叠加