在 uniapp 中使用解构赋值进行代码优化

137 阅读3分钟

 大家好~ 我是前端uio,本文主要使用解构赋值在 uniapp 的实践使用中进行代码的优化。有什么疑问都欢迎私聊或者在评论区留言。如果需要开发web网页或者微信小程序都可以找我私聊,我会尽可能回答我了解的内容。


 一、功能介绍

        解构赋值是JavaScript中一种非常强大的特性,它允许你从数组或对象中提取数据并赋值给不同的变量,从而使代码更加简洁和易读。在 uniapp 的实际开发中,我们可以使用该特性进行代码的优化,让我们的代码更加健壮,同时提高我们的编程思维与能力。

1.数组结构

        以下为数组结构中,使用展开运算符的四种常见的例子。一般而言,数组解构赋值按照数组元素的位置来进行匹配。

// 基本数组解构
let [a, b, c] = ["胡", "桃", "原"];
console.log(a); // 输出: 胡
console.log(b); // 输出: 桃
console.log(c); // 输出: 原

// 忽略某些元素
let [x, , z] = ["胡", "桃", "原"];
console.log(x); // 输出: 胡
console.log(z); // 输出: 原

// 剩余元素模式
let [p, ...rest] = ["胡", "桃", "原"];
console.log(p); // 输出: 胡
console.log(rest); // 输出: ["桃", "原"]

// 默认值
let [m = "胡", n = "桃"] = ["原"];
console.log(m); // 输出: 原
console.log(n); // 输出: 桃

 2.对象结构

        与数组结构类似,对象解构赋值是基于属性的名称来进行匹配的。

// 基本对象解构
let { name, age} = { name: '胡桃', age: 18 };
console.log(name); // 输出: '胡桃'
console.log(age); // 输出: 18

// 重命名变量
let { name: play} = { name: '胡桃' };
console.log(play); // 输出: '胡桃'

// 嵌套对象解构
let { x: { y: nestedY }, x } = { x: { y: 'nestedY' } };
console.log(nestedY); // 输出: 'nestedY'
console.log(x); // 输出: { y: 'nestedY' }

// 默认值
let { a = '胡', b = '桃' } = { a: '原' };
console.log(a); // 输出: 原
console.log(b); // 输出: 桃

3.混合解构 

        可以混合使用数组和对象解构。

let [q, r, { s, t }] = ['小', '爱', { s: '胡', t: '桃' }];
console.log(q); // 输出: '小'
console.log(r); // 输出: '爱'
console.log(s); // 输出: '胡'
console.log(t); // 输出: '桃'

 4.函数参数解构

        解构赋值也可以用在函数参数上,这使得接收和处理复杂数据结构变得更加简单

function game({ name, age }) {
    console.log(`名称: ${name}, 年龄: ${age}`);
}

game({ name: "胡桃", age: 18 }); // 输出: 名称: "胡桃", 年龄: 18

二、在 uniapp 实践中的运用(以uni.getStorageSync为例)

1.使用uniapp进行缓存的读取与更新时,未优化的代码

		if(uni.getStorageSync('name')){
			let age = uni.getStorageSync('age')
			let name = uni.getStorageSync('name')
			let desc = uni.getStorageSync('desc')
			this.age= age
			this.name = name
			uni.clearStorageSync()
			uni.setStorageSync('name', name)
			uni.setStorageSync('age', age)
			desc? uni.setStorageSync('desc', desc) : uni.setStorageSync('desc', 18)
		}

 2.使用解构赋值进行优化后的代码

    // 使用解构赋值简化代码,同时避免重复调用uni.getStorageSync
    const { age, name, desc } = uni.getStorageSync({
        age: null,
        name: null,
        desc: null,
    }) || {};

    // 仅在必要时清除和重新设置存储
    if (name) {
        this.age= age;
        this.name = name;

        // 清除存储前先保存必要的值
        const tempStorage = { age, name };
        uni.clearStorageSync();

        // 重新设置存储
        uni.setStorageSync('age', tempStorage.age);
        uni.setStorageSync('name', tempStorage.name);
        
        uni.setStorageSync('desc', desc!== undefined ? desc: 18);
    }

三、总结 

1.解构赋值是一种非常有用的特性,它可以让你编写更简洁、更易于理解的代码。

2.在处理复杂的数据结构时,解构赋值可以帮助你快速提取所需的数据,而不必手动遍历或访问特定属性。

3.在哪些场景中,需要进行代码的优化。