axios的封装

  1. import axios from 'axios';
  2. export function request(config) { //方案一
  3. const instance = axios.create({
  4. baseURL: 'http://123.207.32.32:8000',
  5. timeout: 5000
  6. })
  7. instance(config)
  8. .then(res => console.log(res))
  9. .catch(err => console.log(err))
  10. }
  11. export function request(config, success, failure) { // 方案二:设置回调,传入函数
  12. const instance = axios.create({
  13. baseURL: 'http://123.207.32.32:8000',
  14. timeout: 5000
  15. })
  16. instance(config)
  17. .then(res => {
  18. // console.log(res);
  19. success(res)
  20. })
  21. .catch(err => {
  22. // console.log(err);
  23. failure(err)
  24. })
  25. }
  26. export function request(config) { // 方案三:使用Promise,相比于方案二,只是形式变了,回调变成了链式,也更清晰
  27. return new Promise((resolve, reject) => {
  28. const instance = axios.create({
  29. baseURL: 'http://123.207.32.32:8000',
  30. timeout: 5000
  31. })
  32. instance(config)
  33. .then(res => {
  34. resolve(res)
  35. })
  36. .catch(err => {
  37. reject(err)
  38. })
  39. })
  40. }
  41. export function request(config) { //目前的最终方案:直接返回instance(config),是一个Promise
  42. const instance = axios.create({
  43. baseURL: 'http://123.207.32.32:8000',
  44. timeout: 5000
  45. })
  46. return instance(config)
  47. }
  48. //若以后axios不再维护,引入新的插件,就可以使用Promise进行包装一下,其它地方的代码不用更改。

虚拟DOM原理流程

虚拟DOM是放在JS 和 HTML中间的一个层。它可以通过新旧DOM的对比,来获取对比之后的差异对象,然后有针对性的把差异部分真正地渲染到页面上,从而减少实际DOM操作,最终达到性能优化的目的。
简单概括有三点:

  1. 用JavaScript模拟DOM树,并渲染这个DOM树
  2. 比较新老DOM树,得到比较的差异对象
  3. 把差异对象应用到渲染的DOM树。

    跨平台开发Flutter / React Native的对比

  4. 原理不同:实现原理上完全是不同的思路,RN实现的是对平台的兼容,与平台关联性更强;FL则是屏蔽了平台的概念,平台关联性弱。具体表现为RN编写的程序在安卓/苹果上表现可能不同,而FL则表现一致,若要表现不一致需要分别使用不同的控件。

  5. 编程语言不同:RN是JS,FL则是dart;
  6. 界面开发不同:RN延续了React开发风格,FL则是一套平台无关的UI框架。
  7. FL借鉴RN,状态管理相似,但内部实现有很大差异;第三方状态管理有极高相似度;
  8. 原生控件接入FL不如RN。
  9. 插件开发:RN使用npm,FL使用pub。npm即每个项目插件独立,都有自己的node_module,而pub插件存放在同一位置,统一管理。
  10. 性能:理论上FL的设计性能优于RN,这是框架设计所决定的;实际表现对比也由于RN。