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),是一个Promiseconst 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。
