axios的封装
import axios from 'axios';
export function request(config) { //方案一
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
instance(config)
.then(res => console.log(res))
.catch(err => console.log(err))
}
export function request(config, success, failure) { // 方案二:设置回调,传入函数
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
instance(config)
.then(res => {
// console.log(res);
success(res)
})
.catch(err => {
// console.log(err);
failure(err)
})
}
export function request(config) { // 方案三:使用Promise,相比于方案二,只是形式变了,回调变成了链式,也更清晰
return new Promise((resolve, reject) => {
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
instance(config)
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
export function request(config) { //目前的最终方案:直接返回instance(config),是一个Promise
const instance = axios.create({
baseURL: 'http://123.207.32.32:8000',
timeout: 5000
})
return instance(config)
}
//若以后axios不再维护,引入新的插件,就可以使用Promise进行包装一下,其它地方的代码不用更改。
虚拟DOM原理流程
虚拟DOM是放在JS 和 HTML中间的一个层。它可以通过新旧DOM的对比,来获取对比之后的差异对象,然后有针对性的把差异部分真正地渲染到页面上,从而减少实际DOM操作,最终达到性能优化的目的。
简单概括有三点:
- 用JavaScript模拟DOM树,并渲染这个DOM树
- 比较新老DOM树,得到比较的差异对象
-
跨平台开发Flutter / React Native的对比
原理不同:实现原理上完全是不同的思路,RN实现的是对平台的兼容,与平台关联性更强;FL则是屏蔽了平台的概念,平台关联性弱。具体表现为RN编写的程序在安卓/苹果上表现可能不同,而FL则表现一致,若要表现不一致需要分别使用不同的控件。
- 编程语言不同:RN是JS,FL则是dart;
- 界面开发不同:RN延续了React开发风格,FL则是一套平台无关的UI框架。
- FL借鉴RN,状态管理相似,但内部实现有很大差异;第三方状态管理有极高相似度;
- 原生控件接入FL不如RN。
- 插件开发:RN使用npm,FL使用pub。npm即每个项目插件独立,都有自己的node_module,而pub插件存放在同一位置,统一管理。
- 性能:理论上FL的设计性能优于RN,这是框架设计所决定的;实际表现对比也由于RN。