Appearance
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的约定式目录含义
- 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
参考
绝了,dddd带带弟弟OCR识别验证码 - 西瓜_皮 - 博客园 (cnblogs.com)
8.28 判断数组为空数组
直接对数组进行判断,下面写法是错误的
javascript
if(arr){
//arr 不为空的执行语句
}
当arr = []
时 上面的判断也为true
8.29 vue3中$attr与props传递属性的不同
$attr 不会动态的改变的属性可以传递 会造成数据的丢失 props 适合传递会动态改变的属性