Skip to content
本页目录

2023.8的问题

8.1 模板下载 post请求文件下载

之前下载功能一直是get请求 用个a链接跳转过去就行 现在需要传递参数给下载的接口 用get的话 参数过长会丢失就用post请求 这里一直请求格式不对是因为axios的type要请求设置为blob

8.11vue在munted中获取dom高度不准确的问题

javascript
data () {
    return {
      itemHeight: 0,
    }
  },
mounted () {
     // this.itemHeight = this.$refs.item.$el.offsetHeight // 100
     // this.$nextTick(() => {
     //   this.itemHeight = this.$refs.item.$el.offsetHeight // 100
     // })
    setTimeout(() => {
      this.itemHeight = this.$refs.item.$el.offsetHeight // 120
    }, 0)
  }

//style
.item {
  width: 100%;
  height: 100px;
}

参考 https://www.cnblogs.com/rainbowLover/p/13256438.html

8.18 JS中的 map, forEach 无法跳出循环, return和 break不起作用

想跳出循环可以使用every 和 some方法,下面是简单的总结: 1、some : 当内部return true时跳出整个循环

javascript
let arr = [1,2,3,4,5];
arr.some( item => {
    if ( 3 == item ) {
        return true;
    }
    console.log( item );
}); 

2、every : 当内部return false时跳出整个循环(不跳出需要写 return true )

javascript
let arr = [1,2,3,4,5];
arr.every( item => {
    if ( 3 == item ) {
        return false;
    }else{
        console.log( item );
        return true;
    }
});  

在公司的时候写数据改变算法的时候有问题

JavaScript
// 对比数据是否改变的算法 有改变就返回true
fn(){
  const dateChange = newArr.some(item => {
    if (JSON.stringify(this.formDataCopy[item.fieldName], (key, value) => typeof value === 'undefined' ? '' : value) !== JSON.stringify(item.fieldValue, (key, value) => typeof value === 'undefined' ? '' : value)) {
      return true
    }
  })
  // 有改变就返回
  if (dateChange) return true

  return false
}

https://blog.csdn.net/Jenn168/article/details/105006701

8.18 nuxt的500 打开链接报错的原因

只有是引入组件库的页面直接打开链接才会报错的 其他没有引入直接打开是没有报错的 除此之外 构建后的页面也不会打开报错

是因为组件库本身是esm的format 而再dev的预览情况下 服务器Nitro访问的是对当前页面直接进行构建访问 那么nitro是node不能直接去用esm的语法就会报错 但如果是再页面进行跳转是已经构建好的页面 Nitro就不会报错

vite 打包esm和cjs的配置

javascript
const rollupOptions = {
  input: resolve(__dirname, 'ui/index.js'),
  external: [...externalList],
  
  output: [{
    globals: {
      vue: "Vue",
    },
    format: 'es',
    //不用打包成.es.js,这里我们想把它打包成.js
    entryFileNames: '[name].js',
    //让打包目录和我们目录对应
    preserveModules: true,
    preserveModulesRoot: resolve(__dirname, 'ui'),
     //配置打包根目录
     dir: resolve(__dirname, 'lib')
  },
  {
    globals: {
      vue: "Vue",
    },
    format: 'cjs',
    //不用打包成.es.js,这里我们想把它打包成.js
    entryFileNames: '[name].js',
    //让打包目录和我们目录对应
    preserveModules: true,
    preserveModulesRoot: resolve(__dirname, 'ui'),
     //配置打包根目录
     dir: resolve(__dirname, 'lib/cjs')
  }]
};

8.25 nuxt全局设置axios

在nuxt项目中需要新建plugins目录中新增plugins.js文件

javascript

import axios from "axios"
export default defineNuxtPlugin(nuxtApp => {
  // Doing something with nuxtApp
  console.log("自动注册------axios拦截器和响应器")
  // 保证nuxt可以调用windows的api
  if (process.client) {
    const token = window.localStorage.getItem('jpaas_access_token')
    console.log({"token":JSON.parse(token)?.value});
    axios.defaults.headers['access-token'] = JSON.parse(token)?.value
  }
  
  axios.interceptors.response.use(
    res=>{
      console.log('响应success')
      console.log(res);
      res.data = res?.data?.data
      return res
    },
    err=>{
      console.log('响应失败')
    }
  )
})

参考

插件 ·Nuxt 目录结构

nuxt的约定式目录含义

  • assets 主要用于组织未编译的静态资源如Less、SASS.....
  • components 主要用来存放组件,且其不能使用asyncData函数
  • layouts 布局目录 用于进行页面布局,例如公共导航栏,footer布局
  • plugins 存放一些插件配置,只会执行一次,比如axios的拦截器添加token
  • middleware 中间件,可以进行一些,权限验证之类的,全局的中间件,每次进入不同的路由都会执行
  • pages 页面目录 nuxt采用约定式路由,不需要配置,文件路径名即为路由地址

参考链接:https://www.jianshu.com/p/3c47b4ee0b66

8.25 Nuxt中报:window or document is not defined 问题的解决办法

手写的在 window 对象上的操作。这种可以按照官方的方法:

javascript
// 在你的 .vue 文件中加入
if(process.client) {
  require('external_library') // 这里的意思就是写你在 window 对象上的操作,可以翻译为下面这段代码
}

就是说在你的 .vue 文件中要在 window 上操作的代码外包裹一层 if (process.client) 判断。

javascript
/* eslint-disable */
if (process.client) {
  window.yourcode
}

原文链接:https://blog.csdn.net/zyf971020/article/details/129519565

8.28 python 下载pip工具的使用

01.pip下载速度慢、pip下载超时解决方案

1.临时替换

shell
pip install -i https://pypi.douban.com/simple/ selenium 

2.通过配置pip配置文件永久替换下载源

  • 首先打开文件管理器进入到当前登录用户目录,比如我的是 C:\Users\zero\,或者也可以进入 C:\Users\zero\AppData\Roaming\
  • 在当前目录(以上任一)新建pip文件夹
  • 进入新建的pip文件夹,新建pip.ini文件(注意是.ini格式,不是.txt格式)
  • 编辑该pip.ini文件,添加内容如下
[global] 
index-url = https://pypi.douban.com/simple/ 
[install] 
trusted-host = pypi.douban.com 

参考

pip下载速度慢、pip下载超时解决方案 - 知乎 (zhihu.com)

2.指定python包的版本
pip uninstall -y Pillow
pip install Pillow==9.5.0

参考

AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘_软件测试大叔的博客-CSDN博客

3.查看已安装的列表
pip list

img

参考

绝了,dddd带带弟弟OCR识别验证码 - 西瓜_皮 - 博客园 (cnblogs.com)

8.28 判断数组为空数组

直接对数组进行判断,下面写法是错误的

javascript
if(arr){
	//arr 不为空的执行语句
}

arr = []时 上面的判断也为true

8.29 vue3中$attr与props传递属性的不同

$attr 不会动态的改变的属性可以传递 会造成数据的丢失 props 适合传递会动态改变的属性