1.设置每行代码的最大长度
2.保存时自动格式化代码
前端
CSS限制文本长度
单行文本
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
多行文本
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
使用scss覆盖样式
<style lang="scss">
.lxTable {
padding-left: 20px;
padding-right: 20px;
.core-table {
--core-table-header-bg-color: #f0f0f0 !important;
}
}
</style>
Array.prototype.some方法
Array.prototype.some 是 JavaScript 中数组的一个方法,它用于检测数组中是否至少有一个元素满足指定的条件(通过提供的函数)。
具体来说,Array.prototype.some 方法接受一个测试函数作为参数,并对数组中的每个元素执行该测试函数,如果任何一个元素使得测试函数返回 true,则 some 方法立即返回 true。如果所有元素都导致测试函数返回 false,则 some 方法返回 false。
例如:
const numbers = [1, 2, 3, 4, 5];
const isEven = (number) => number % 2 === 0;
const hasEvenNumber = numbers.some(isEven);
console.log(hasEvenNumber); // 输出 true
在这个例子中,numbers 是一个包含数字的数组,isEven 是一个测试函数,它检查一个数字是否是偶数。使用 some 方法,我们检查数组中是否至少有一个元素是偶数,因此 hasEvenNumber 将会是 true,因为数组中包含偶数元素。
总的来说,Array.prototype.some 是一个非常方便的方法,可以用于在数组中查找符合特定条件的元素,而不必遍历整个数组。
常用场景(将两次选择的对象合并):
confirmSelectShops(newShopArr) {
newShopArr.forEach(newShop => {
if (!this.selectedShopArr.some(oldShop => oldShop.id === newShop.id)) {
this.selectedShopArr.push(newShop)
}
})
}
mac重点关注目录
/usr/local/bin
/usr/local/Cellar
/usr/local/var
/usr/local/lib/ruby/gems/
/usr/local/var/homebrew/linked/
/Users/lixiang/Library
/Users/lixiang/Library/Application Support
mac环境变量记录
source ~/.bash_profile
# python3
export PATH=${PATH}:/usr/local/Cellar/python@3.11/3.11.6/bin
alias python="/usr/local/Cellar/python@3.11/3.11.6/bin/python3.11"
# python3 end
# flutter
export FLUTTER_GIT_URL=git@gitee.com:mirrors/Flutter.git
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH="$PATH:/Users/lixiang/Flutter/bin"
# flutter end
# pnpm
export PNPM_HOME="/Users/lixiang/Library/pnpm"
export PATH="$PNPM_HOME:$PATH"
# pnpm end
# nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# nvm end
# 把所有的gem应用程序都加到系统环境变量路径
export PATH=/usr/local/lib/ruby/gems/3.1.0/bin:$PATH
# 把所有的gem应用程序都加到系统环境变量路径 end
解决OSS费用高的问题
1.先用js实现jpg转webp
2.再把webp上传到oss
3.导出excel的时候,用EPPlus,因为EPPlus支持webp
(推荐IDE:Visual Studio for Mac)
JavaScript 中`forEach` 和 `map` 的区别
在 JavaScript 中,forEach
和 map
都是用于处理数组元素的方法,但它们有一些区别。
forEach
是一个数组方法,它接受一个回调函数作为参数,并对数组中的每个元素执行该回调函数。它没有返回值,仅用于遍历数组。示例代码如下:
const array = [1, 2, 3, 4];
array.forEach((element) => {
console.log(element);
});
输出结果:
1
2
3
4
forEach
方法对数组中的每个元素都会执行一次回调函数,但它不会生成一个新的数组。
相比之下,map
方法也接受一个回调函数作为参数,但它会对数组中的每个元素都执行回调函数,并返回一个新的数组,该数组包含回调函数的返回值。示例代码如下:
const array = [1, 2, 3, 4];
const newArray = array.map((element) => {
return element * 2;
});
console.log(newArray);
输出结果:
[2, 4, 6, 8]
在上面的例子中,map
方法将原始数组中的每个元素乘以 2,并返回一个新的数组 [2, 4, 6, 8]
。
因此,主要区别在于:
forEach
没有返回值,只用于遍历数组并执行回调函数。map
返回一个新的数组,该数组包含了对原始数组中每个元素执行回调函数的结果。
根据具体的需求,选择使用 forEach
还是 map
取决于是否需要生成一个新的数组。如果只需要遍历数组并执行操作,而不需要生成新的数组,可以使用 forEach
。如果希望对数组进行变换,并生成一个新的数组,可以使用 map
。
代码优化示例
// 这种写法不仅繁琐,而且会导致form中的input无法正常输入文字
async getPrinterScheme(info) {
const { printerId, shopId, erpModel, id: useSceneId, isCloudPrinter } = info
const { data } = await this.axios.post(`/printScheme/${printerId}/${shopId}/${erpModel}/${useSceneId}/${isCloudPrinter}/getPrinterScheme`)
this.ruleForm = data.data || {}
if (!this.ruleForm.printMachine) {
this.ruleForm.printMachine = 0
}
if (!this.ruleForm.printNumber) {
this.ruleForm.printNumber = 1
}
if (!this.ruleForm.leftPadding) {
this.ruleForm.leftPadding = 0
}
if (!this.ruleForm.rightPadding) {
this.ruleForm.rightPadding = 0
}
this.printMachine = this.ruleForm.printMachine
if (!this.ruleForm.printSchemeMachineList) {
this.ruleForm.printSchemeMachineList = []
}
},
async getPrinterScheme(info) {
const { printerId, shopId, erpModel, id: useSceneId, isCloudPrinter } = info
const { data } = await this.axios.post(`/printScheme/${printerId}/${shopId}/${erpModel}/${useSceneId}/${isCloudPrinter}/getPrinterScheme`)
const theData = data.data || {}
const { printMachine = 0, printNumber = 1, leftPadding = 0, rightPadding = 0, printSchemeMachineList = [] } = theData
this.ruleForm.printMachine = printMachine
this.ruleForm.printNumber = printNumber
this.ruleForm.leftPadding = leftPadding
this.ruleForm.rightPadding = rightPadding
this.ruleForm.printSchemeMachineList = printSchemeMachineList
},
前端杂记
微信小程序云开发实现关键词搜索
if (keyword) {
param.title = db.RegExp({
regexp: event.keyword,
options: 'i',
})
}
将鼠标光标改成小手形状(意指可点击)
style="cursor: pointer;"
created与mounted的区别
created //通常用于初始化某些属性值,例如data中的数据,然后再渲染成视图。
mounted //通常在初始化页面完成后,对html的dom节点进行需要的操作。
el-input中监听键盘事件“回车”
<el-input @keyup.enter.native="login()" "></el-input>
input监听回车键
<input @keyup.enter="login()" />
全局忽略eslint的报错
在项目根目录创建文件.eslintignore
内容为src,保存即可