奇怪的一些

2023-05-16

1、请求200
但是请求回来的是html
网络里会写 200OK from disk cache
这个时候需要清除浏览器缓存
2、base64 引入失败 找一个js文件直接引入
require is not defined
import Base64 from ‘***’
https://blog.csdn.net/u011383596/article/details/116712729
3、promise
promise:异步编程解决方案
promise相当于一个状态机,拥有三种状态pending、fulfilled、rejected
(1)一个promise对象那个初始化的状态是pending,调用了resolve后会将promise的状态扭转为fulfilled,调用reject后会将promise的状态扭转为reject,这两种扭转一旦发生便不能扭转该promise到其它状态
(2)promise对象原型上有一个then方法,then方法会返回一个新的promise对象,并将回调函数return的结果作为该promise resolve的结果,then方法会在一个promise状态被扭转为fulfilled或rejected时被调用。then方法的参数为两个函数,分别为promise对象的状态被扭转为fulfilled和rejected对应的回调函数。

new Promise((res,rej)=>{})
Promise.all().then((res)=>{})
this.getFormData().then((res)=>{})
  getFormData () {
      return new Promise((resolve, reject) => {
        this.$http.get('', {
          params: { taskId: this.taskId }
        }).then(res => {
          resolve(res.data.result)
        })
      })
    },

构造一个promise对象,并将要执行的异步函数传入到promise的参数中执行,并且在异步执行结束后调用resolve()函数,就可以在promise的then方法中获取到异步函数的执行结果

new Promise((res,rej)=>{
  setTimeout(()=>{
    resolve()
  },1000)
}).then()

Promise.all接收一个promise对象数组作为参数,只有全部的promise都已经变成fulfilled状态后才会继续后面的处理。Promise.all本身返回的也是一个promise

const promise1 = new Promise((res,rej) => {
  setTimeout(()=>{
    resolve('promise1')
  },1000)
})
const promise2 = new Promise((res,rej) => {
  setTimeout(()=>{
    resolve('promise2')
  })
})
Promise.all([promise1,promise2]).then()

Promise.race和Promise.all类似,只不过这个函数会在promise中第一个promise的状态扭转后就开始后面的处理(fulfilled、rejected均可)
配合async await使用:现在的开发中我们大多会用async await语法糖来等待一个promise的执行结果。async本身是一个语法糖,将函数的返回值包在一个promise中返回。

const p=async function f(){
  return '1'
}
p.then((res)=>{
  console.log(res)   //1
})

开发技巧:在前端开发上promise大多被用来请求接口,axios库也是开发中使用最频繁的库,但是频繁的try catch捕捉错误会让代码嵌套很严重。考虑如下代码的优化方式

const getUserInfo=async function(){
  return new Promise((res,rej)=>{
    //resolve()||reject()
  })
}
//为了处理可能的抛错 将try catch套在代码外面
try{
  const user= await getUserInfo()
}catch(err){}
//好的处理方法是在异步函数中将错误catch

async awite的写法在uniapp的文件上传中使用

// 获取上传状态
    async select (res) {
      console.log('选择文件:', res)
      await this.uploadFile(res.tempFilePaths[0]);
    },
    uploadFile (tempFilePaths) {}

使用async关键字可以让函数具有异步特征,但总体上其代码仍然是同步求值的。而再参数或闭包方面,异步函数仍具有普通js函数的正常行为。下面的foo()函数仍然会再后面的指令之前被求值。

async function foo(){
  console.log(1)
}
foo()//1

异步函数如果使用return关键字返回了值(如果没有return则会返回undefined),这个值会被Promise.resolve()包装成一个期约对象。异步函数始终返回期约对象。在函数外部调用这个函数可以得到它返回的期约。

async function foo(){
  console.log(1)
  return 2
} 
//给返回的期约添加一个解决处理程序
foo().then(console.log)
console.log(3)
//1
//3
//2

当然直接返回一个期约对象也是一样的

async function foo(){
  console.log(1)
  return Promise.resolve(3)
}

拒绝期约的错误不会被异步函数捕获

async function foo(){
  Promise.reject(3)//Uncaught (in promise):3
}

因为异步函数主要针对不会马上完成的任务,所以自然需要一种暂停和恢复执行的能力。使用await关键字可以暂停异步函数代码的执行,等待期解决。

let p=new Promise((resolve,reject) => setTimeout(resolve,1000,3))
p.then((X) => console.log(x)); //3

使用async/await可以写成这样

async function foo(){
  let p=new Promise((resolve,reject) => setTimeout(resolve,1000,3))
  console.log(await p)
}
foo()//3

async function bar(){
  return await Promise.resolve('bar')
}
bar().then(console.log)//bar

等待会抛出错误的同步操作,会返回拒绝的期约

async function foo(){
  console.log(1)
  await (() => {throw 3;})
}
//给返回的期约添加一个拒绝处理程序
foo().catch(console.log)//3

单独的Promise.reject()不会被异步函数捕获,而会抛出未捕获错误。不过,对拒绝的期约使用await则会释放(unwrap)错误值(将拒绝期约返回)。

async function foo(){
  console.log(1)
  await Promise.reject(3)
  console.log(4)//这行代码不会执行
}
//给返回的期约添加一个拒绝处理程序
foo().catch(console.log)
console.log(2)
//1
//2
//3

async/await中真正起作用的是await。async关键字,无论从哪方面来看,都不过是一个标识符。异步函数如果不包含await关键字,其执行跟普通函数基本上没有什么区别。
js运行时在碰到await关键字时,会记录在哪里暂停执行。等到await右边的值可用了,js运行时会向消息队列中推送一个任务,这个任务会恢复异步函数的执行。即使await后面跟着一个立即可用的值,函数的其余部分也会被异步求值。
如果await后面是一个期约,则问题会稍微复杂一些。此时,为了执行异步函数,实际上会有两个任务被添加到消息队列并被异步求值。

async function foo(){
  console.log(await Promise.resolve('foo'))
}
async function bar(){
  console.log(await 'bar')
}
async function baz(){
  console.log('baz')
}
foo()
bar()
baz()
//baz 
//bar
//foo

串行执行期约

function addTwo(x){ return x+2 }//或者 async function addTwo
function addThree(x){ return x+3 }
function addFive(x){ return x+5 }

async function addTen(x){
  for(const fn of [addTwo,addThree,addFive]){
    x=await fn(x)
  }
  return x;
}
addTen(9).then(console.log)//19

这里await直接传递了每个函数的返回值,结果通过迭代产生。当然,这个例子并没有使用期约,如果要使用期约,则可以把所有函数都改成异步函数。这样它们就都返回期约了。async function addTwo(x) {return x+2;}

  • 举例
//for循环不影响执行顺序 异步请求需要等待请求结果时影响 但使用方法类似
var sum = 0
    function testAsync() {
      return new Promise((resolve, reject) => {
        for (var i = 0; i < 10; i++) {
          sum += i
        }
        resolve(sum)
      });
    }

     function callerFun() {
      console.log("Caller");
      await testAsync().then((res) => {
        console.log(sum)
      });
      console.log("After waiting");
    }
    callerFun();
//等待请求结果
 async loadData (arg) {
      let data= await this.searchData(arg)
      //findnode需要searchData的请求结果
      await this.findnode(data).then((resolve)=>{
        //获取数据
        this.dataSource=resolve
      })
    },
    searchData (arg) {
     return new Promise ((resolve,reject)=>{
         getAction(this.url.list, params).then((res) => {
          if (res.success) {
            resolve(res.result.records)
          } else {
            reject()
            this.$message.warning(res.message)
          }
        })
     })
    },
    findnode (data) {
      return new Promise((resolve, rej) => {
       data.map((i,index) => {
          let param = {}
          param.id = i.id
          getAction('/jeecg-system/sys/ext/queryByDataId', param).then((res) => {
            console.log(res)
            if (res.code == "200") {
              i.assignee_dictText = res.result.assignee_dictText
              i.nodeName = res.result.nodeName
            }
            //在循环结束后返回结果
            if(index==data.length-1){
              resolve(data)
            }
          })
        })
      })
    },

4、缺少npm环境
在这里插入图片描述
5、
网页弹窗 会在当前浏览器窗口弹出一个新的浏览器窗口(iframe跨域问题不能直接访问某些链接比如百度)

    showModal(location) {
      var wid = 800;
      var hgt = 600;
      var href = api.InforSystem;
      var x = (screen.width - wid) / 2;
      var y = (screen.height - 20 - hgt) / 2;
      var winstyle = 'width=' + wid + ',height=' + hgt + ',left=' + x + ',top=' + y + ',status=no,menubar=no,scrollbars=yes,toolbar=no,resizable=yes';
      lastopenwin = window.open(href + location, '_blank', winstyle, true);
      lastopenwin.focus();
    },

6、import {***} from和 import ** from (带不带大括号的问题)

//1
import { commonMixin } from 
export const commonMixin = {}
//2
import  ReimburseBpmMixin  from 
const ReimburseBpmMixin = {
	data() {
		return {
		}
	},
	methods: {
	}
}
export default ReimburseBpmMixin;

7、uniapp获取不到路由参数时(当然有可能是这个项目有问题)
window.location.href
路由参数乱码时

//如果data是一个对象就JSON.stringify
url: '/pages/12323243?item='+encodeURIComponent(JSON.stringify(data))
let url=window.location.href
let index=url.indexOf("=")
let urldata= url.substring(index+1,url.leng)

8、遍历Object属性
https://segmentfault.com/a/1190000041977281
遍历两个数组寻找一个对象中的key与另一个对象中value匹配的值
在这里插入图片描述

data.map((obj) => {
  Object.keys(obj).forEach(akey => {
    this.columns.map((i) => {
      Object.keys(i).forEach(item => {
        //如果column的align的值==obj里的key 就把 column里的title汉字 在obj里存为汉字
        if (item == 'dataIndex') {
          if (i[item] == akey) {
            debugger
            console.log(i[item] + "------" + akey + "---------" + i.title)
            //wkflwID------wkflwID---------流程定义号
            let key = akey
            let value = i.title 
            this.translate[key] = value
          }
        }
      })
    })
  })
})
//v-for遍历数据要使用translate对象中的key遍历时要写item[xxx] 而不是 item.xxx
  <view class="cu-item"
        v-for="(item,index) in tableData"
        :key="index">
    <view class="content"
          style="left: 24px;">
      <view class="text-grey">
        <span v-for="(a,b) in translate"
              :key="b"
              style="font-size: 13px;">{{a}}{{item[b]}}</span>
      </view>
    </view>
  </view>

9、动态设置style的值

 :style="{'height':`${cardeleH}px`,}"

10、uniapp跳转页面传参
https://www.jianshu.com/p/0f4959df7abb
在这里插入图片描述
11、子组件input通过v-model传值
https://www.jianshu.com/p/854fc40cf0b4
当父组件调用子组件包含的input输入框时 需要将子组件input输入框的值绑定给父组件的v-model 不再需要用$emit向父组件传值

//父组件
  <view class="cu-form-group ">
    <view class="title"><text class="text-red">*</text><text space="ensp">报销科目:</text></view>
    <OnlineSelectTree 
            v-model="model.subject"
            name="input" />
  </view>
//子组件
   <input v-model="selected"
           placeholder="请选择"
           readonly
           disabled="true" />
    <Zpopup :value="openPop"
            @change="onChange"
            :type="'bottom'">
      <view class="pop-box">
        <view class="pop-title">
        </view>
        <view style="overflow: scroll;"
              class="popup_content">
          <LyTree ref="xyTree"
                  :treeData="treeData"
                  @cnecked="treeChecked"></LyTree>
        </view>
      </view>
    </Zpopup>
  methods:{//给子组件的input赋值时给父组件传值
      treeChecked (data) {
      this.selected=data.name
      // this.$emit('treeChecked',data)
       this.$emit('input', this.selected);
      // #ifndef MP-WEIXIN
      this.$emit('change', this.selected);
      // #endif
    },
  },
  model: {//与methods同级
    prop: 'value',
    event: 'input'
  }

12、cascader级联的问题 tree应该也会有同样的问题:children.filter not a function 和 options not array数据不是数组形式就装不进去
13、uniapp的form表单可以验证表单规则
https://uniapp.dcloud.net.cn/component/uniui/uni-forms.html

 <uni-forms ref="form"
                 :model="model"
                 :rules="rules"
                 validate-trigger="bind"
                 err-show-type="undertext">
        <uni-forms-item name="proposer"
                        label="申请人"
                        :required="">
        //不写require就没有必填的星号 rules里写true也不行
          <input v-model="model.proposer"
                 placeholder="请输入"
                 name="proposer" />
        </uni-forms-item>
  </uni-forms>
   rules: {
        age: {
          rules: [{
            required: true,
            errorMessage: '请输入年龄'
          },
          {
            format: 'number',
            errorMessage: '年龄只能输入数字'
          },
          {
            minimum: 1,
            maximum: 200,
            errorMessage: '年龄范围{minimum}~{maximum}'
          },
          ]
        },
      },

14、uniapp给上级页面传递信息 除了$emit之外

//子页面
survyData(data){
      let pages = getCurrentPages()
      let prevPage = pages[pages.length - 2]
      prevPage.$vm.getValue(data, 'survy')
      this.close();
},
//父页面
getValue (data, type) {}

15、在循环结束后根据循环的结果进行处理 async await promise

  async submit () {
      let status = await this.checkTable()
      this.$refs['form'].validate()
        .then(result => {
          console.log("验证通过", result);
          if (status == true) {
            this.submitForm()
          }
        })
        .catch(errors => {
          this.$tip.toast('信息未填写完整,请检查!');
          console.log("验证不通过=>", errors);
          return
        })
    },
    checkTable () {
      return new Promise((resolve, reject) => {
        this.$store.state.operateList.map((i) => {
          if (i.subject == undefined || i.subject == null) {
            this.$tip.toast('报销明细(票夹信息)信息未填写完整,请编辑!');
            resolve(false)
            return
          }
        })
        resolve(true)
      })
    },

另一种 文件上传时

  // 获取上传状态
    async select (res) {
      console.log(this.attachment)
      console.log('选择文件:', res)
      await this.uploadFile(res.tempFilePaths[0]);
    },
    uploadFile (tempFilePaths) {}

16、uniapp返回上一级是重载上一级的表单
如果不是foot页 可以使用

let pages = getCurrentPages();
let prevPage = pages[ pages.length - 2 ];//上一页
console.log("prevPage===>",prevPage)
prevPage.$vm.downCallback()//调用上一页的方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇怪的一些 的相关文章

  • 【安装教程】——Linux安装opencv

    安装教程 Linux安装opencv 一 安装相关软件包二 获取Source三 安装OpenCV 未完待续 一 安装相关软件包 安装相关软件包 打开终端 xff0c 安装以下软件包 sudo apt install build span c
  • 请教:linux下的/opt目录是做什么用的?

    请教 linux下的 opt目录是做什么用的 蛋疼YMG 浏览 4934 次 发布于2014 10 24 13 35 荒漠探险 答题闯关 好礼连连 最佳答案 opt 主机额外安装软件所摆放的目录 默认是空的 一般安装软件的时候 xff0c
  • kali里装java

    1 下载最新的JAVA JDK jdk 8u91 linux x64 2 解压缩文件并移动至 opt tar xzvf jdk 8u91 linux x64 tar gz mv jdk1 8 0 91 opt cd opt jdk1 8 0
  • ffmpeg--tcp

    TCP代码分析 xff1a include 34 avformat h 34 include 34 libavutil avassert h 34 include 34 libavutil parseutils h 34 include 3
  • GO调用ffmpeg动态库

    package main cgo CFLAGS I usr local ffmpeg include cgo LDFLAGS L usr local ffmpeg lib lavformat include 34 libavformat a
  • ftp上传文件时出现 550 Permission denied,不是用户权限问题

    查了半天 xff0c 发现是因为服务器已经有同名的文件了 xff0c 所以无法上传 xff0c 上传文件名改成不重复的就可以了
  • Ubuntu16.04解决登录闪退问题

    Ubuntu16 04解决登录闪退问题 夏哈哈 64 64 2020 07 21 08 42 46 637 收藏 1 分类专栏 xff1a 程序开发 Ubuntu装机 文章标签 xff1a 深度学习 版权 问题 xff1a Ubuntu16
  • syntax error at or near “.“

    SQL select t id t name t sex t age t address t phone from user where id 61 1 Cause org postgresql util PSQLException ERR
  • ubuntu编译安装opencv4.5.1(C++)

    1 在https github com opencv opencv上下载opencv源码 包括opencv4 5 1和opencv contrib4 5 1 也可以不用 xff0c 其中opencv是主体 xff0c opencv cont
  • Pytorch自定义CNN网络实现猫狗分类

    数据集下载地址 xff1a https www microsoft com en us download confirmation aspx id 61 54765 Dogs vs Cats 猫狗大战 来源Kaggle上的一个竞赛题 xff
  • yolov5训练自己的数据集

    yolo系列在目标检测领域的地位就不用说了 xff0c github上有pytorch实现的训练yolov5的代码 xff0c 本文将用自己的数据去训练一个yolov5的模型 参考代码地址 https github com ultralyt
  • pytorch用自己数据训练VGG16

    一 VGG16的介绍 VGG16是一个很经典的特征提取网络 xff0c 原来的模型是在1000个类别中的训练出来的 xff0c 所以一般都直接拿来把最后的分类数量改掉 xff0c 只训练最后的分类层去适应自己的任务 xff08 又叫迁移学习
  • mmdetection v2.x模型训练与测试

    因为工作关系 xff0c 接触到了mmdetection 它是商汤科技和香港中文大学开源的一款基于pytorch底层的目标检测工具箱 xff0c 隶属于mmlab项目 mmdetection 2 7文件结构 其中configs文件夹下为网络
  • Pytorch用自己的数据训练ResNet

    一 ResNet算法介绍 残差神经网络 ResNet 是由微软研究院的何恺明等人提出的 ResNet 在2015 年的ILSVRC中取得了冠军 通过实验 xff0c ResNet随着网络层不断的加深 xff0c 模型的准确率先是不断的提高
  • 新装Ubuntu系统基本环境安装配置(conda)

    Ubuntu系统用conda来配置深度学习环境 1 配置显卡驱动 查看显卡驱动 nvidia smi 如果是这个命令没有反应 xff0c 就是没有显卡驱动 xff0c 这个时候要先安装显卡驱动 然后再安装cuda xff0c 在这个图中 x
  • Python源码加密与Pytorch模型加密

    0 前言 深度学习领域 xff0c 常常用python写代码 xff0c 而且是建立在一些开源框架之上 xff0c 如pytorch 在实际的项目部署中 xff0c 也有用conda环境和python代码去部署服务器 xff0c 在这个时候
  • Paddle-Lite终端部署深度学习模型流程

    Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎 xff0c 在多硬件 多平台以及硬件混合调度的支持上更加完备 xff0c 为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力 xff0c 有效解决手
  • nohup: failed to run command `java': No such file or directory

    问题描述 xff1a 平台研发项目 xff0c ActiveQM做消息队列 xff0c zookeeper做集群 xff0c zkui做可视化服务管理 xff0c skynet是引擎服务 xff0c skynet下面有一个xmanager是
  • 【原理篇】一文读懂Faster RCNN

    0 Faster RCNN概述 论文地址 xff1a https arxiv org pdf 1506 01497 pdf Faster R CNN源自2016年发表在cs CV上的论文 Faster R CNN Towards Real
  • 【原理篇】一文读懂Mask RCNN

    Mask RCNN 何凯明大神的经典论文之一 xff0c 是一个实例分割算法 xff0c 正如文中所说 xff0c Mask RCNN是一个简单 灵活 通用的框架 xff0c 该框架主要作用是实例分割 xff0c 目标检测 xff0c 以及

随机推荐

  • 【原理篇】一文读懂FPN(Feature Pyramid Networks)

    论文 xff1a feature pyramid networks for object detection 论文链接 xff1a https arxiv org abs 1612 03144 这篇论文是CVPR2017年的文章 xff0c
  • pytorch用voc分割数据集训练FCN

    语义分割是对图像中的每一个像素进行分类 xff0c 从而完成图像分割的过程 分割主要用于医学图像领域和无人驾驶领域 和其他算法一样 xff0c 图像分割发展过程也经历了传统算法到深度学习算法的转变 xff0c 传统的分割算法包括阈值分割 分
  • 【学习笔记】语义分割综述

    语义分割就是图像分割 xff0c 是图像像素级的分类 xff0c 即给图像的每一个像素点分类 与之临近的一个概念叫实例分割 xff0c 实例分割就是语义分割 43 目标检测 语义分割只能分割出所有同类的像素 xff0c 目标检测把不同的个体
  • pytorch用自己数据集训练Unet

    在图像分割这个问题上 xff0c 主要有两个流派 xff1a Encoder Decoder和Dialated Conv 本文介绍的是编解码网络中最为经典的U Net 随着骨干网路的进化 xff0c 很多相应衍生出来的网络大多都是对于Une
  • 【史上最全】重装ubuntu20.04系统基本环境配置

    最近新买电脑重装ubuntu玩深度学习 xff0c 踩了两天坑总结处下列流程 一 重装系统 xff08 U盘方式 xff09 ubuntu20 04镜像文件下载地址 Ubuntu 20 04 4 Desktop 64 bit 在ubuntu
  • PaddleDetection2.x训练、部署自己的模型

    PaddleDetection是百度Paddle家族的一个目标检测开发套件 个人感觉Paddle的优点是模型比较丰富 xff0c 支持的部署方式较多 xff08 python C 43 43 移动端等 xff09 xff0c 缺点是坑比较多
  • TensorRT(C++)部署 Pytorch模型

    众所周知 xff0c python训练pytorch模型得到 pt模型 但在实际项目应用中 xff0c 特别是嵌入式端部署时 xff0c 受限于语言 硬件算力等因素 xff0c 往往需要优化部署 xff0c 而tensorRT是最常用的一种
  • 安卓端使用ncnn部署yolov5(v6.0)

    ncnn是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架 ncnn从设计之初 xff0c 就深刻考虑手机端的部署和使用 xff0c 无需第三方依赖 xff0c 跨平台 xff0c 手机端cpu的速度快于目前所有已知的开源框
  • 软件工程本科毕业设计题目推荐?软件工程毕设题目大全

    软件工程本科毕业设计题目推荐 xff1f 这个的话首先你对那些方面比较熟悉 xff0c 毕竟软件工程范围还是比较广的 xff0c 所以这个你得要自己确定好方向 xff0c 这个很重要 首先软件工程专业可以做网站 xff0c 系统 xff0c
  • 人工智能论文猜想

    一 前言 人类是不是机器人 随着时代的进步 xff0c 人工智能诞生了 又随着人工智能的进步 xff0c ChatGPT诞生了 xff0c 这不仅让我想出一个问题 xff1a 我们人类是不是机器人 xff1f ChatGPT xff0c 发
  • 机器学习线性分类

    数学模型 分类的目标是把输入 x 匹配到唯一的离散型类别 Ck 中 在一个平面中 xff0c 我们可以用一条直线分开两组数据 xff0c 所以这条直线 xff0c 一般来讲是在D维输入空间中的 xff08 D 1 xff09 维超平面 xf
  • marlin2.0 的使用过程记录。skr v1.3

    硬件 tb购入 xff0c 主控是LPC1768 xff0c 32位的 软件 软件下载地址 https github com bigtreetech BIGTREETECH SKR V1 3 这个git库是skr板子的商家维护的 xff0c
  • Codeforces Round #774 (Div. 2)(A-C)

    Problem A Codeforces 签到题 xff0c 判断s里面最多能够有多少个 AC代码 pragma GCC optimize 2 pragma GCC optimize 3 pragma GCC optimize 34 Ofa
  • 【AtCoder】 AtCoder Beginner Contest 103 (ABC103)

    先上一张最终结果的图吧 xff1a 感觉AtCoder的ABC还是比较练手的 xff0c 考验代码速度 xff0c 网速 xff0c D题还会有一些思维难度 这次ABC由于网络原因 xff0c 很迟才看到题 xff0c 但完成得还是不错的
  • java将16进制与10进制互相转换

    今天遇到了进制转换的有趣问题 xff0c 记录下来 1 xff0c 首先 xff0c 10进制转16进制 xff0c 大家应该都比较熟 xff1a Integer span class hljs built in x span 61 spa
  • JavaScript 阿贾克斯

    Ajax技术的核心是XMLHttpRequest对象 用于在后台与服务器交换数据 ajax 异步请求 主要用来请求数据 远程地址或者本地地址 传统的web交互是用户触发一个http请求服务器 然后服务器收到之后 做出响应到用户 哪怕是一个很
  • uni-app基本(样式和sass语法、基本语法、组件传参、全局共享数据、组件插槽、生命周期)

    查看vue cli安装目录where vue指令 vue cli就是vue2 64 vue就是vue3 如果cnpm uninstall 或者 npm uninstall 无效的话直接在文件夹里删除不需要的 vue版本然后执行安装命令 vu
  • vue项目编译内存溢出 项目过大编译太慢的问题

    cnpm install increase memory limit save 项目目录中运行 操作完成后编译速度会快一些 也不会在编译中报错了
  • 提交项目到Git

    gitee git 此操作会生成 git文件 git add git commit m 34 first commit 34 git remote add origin https gitee com git push u origin 3
  • 奇怪的一些

    1 请求200 但是请求回来的是html 网络里会写 200OK from disk cache 这个时候需要清除浏览器缓存 2 base64 引入失败 找一个js文件直接引入 require is not defined import B