uniapp数据储存
uniapp数据存储方法
本地存储(LocalStorage)
使用uni.setStorageSync和uni.getStorageSync进行数据存储和读取,适合存储简单键值对数据。存储的数据在应用关闭后依然存在。
// 存储数据
uni.setStorageSync('key', 'value');
// 读取数据
let value = uni.getStorageSync('key');
// 删除数据
uni.removeStorageSync('key');
全局变量
通过getApp().globalData定义全局变量,适合在页面间共享数据,但应用关闭后数据会丢失。
// 设置全局变量
getApp().globalData.userInfo = {name: 'John'};
// 获取全局变量
let userInfo = getApp().globalData.userInfo;
Vuex状态管理
适用于复杂应用的状态管理,数据存储在内存中,应用关闭后丢失。需要先在store/index.js中配置。
// store/index.js
export default new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++
}
}
});
// 页面中使用
this.$store.commit('increment');
console.log(this.$store.state.count);
文件存储
使用uni.saveFile和uni.getFileInfo进行文件读写,适合存储较大数据或需要持久化的文件。
// 保存文件
uni.saveFile({
tempFilePath: 'temp/file/path',
success(res) {
console.log(res.savedFilePath);
}
});
// 获取文件信息
uni.getFileInfo({
filePath: 'file/path',
success(res) {
console.log(res.size);
}
});
SQLite数据库
通过uni.requireNativePlugin调用原生SQLite插件,适合需要复杂查询和事务处理的场景。
const sqlite = uni.requireNativePlugin('sqlite');
const db = sqlite.openDatabase({name: 'myDB.db'});
db.transaction(tx => {
tx.executeSql('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)');
tx.executeSql('INSERT INTO users (name) VALUES (?)', ['Alice']);
});
云端存储
使用uniCloud.database()访问云数据库,数据存储在服务端,支持跨设备同步。
const db = uniCloud.database();
db.collection('users').add({
name: 'Bob',
age: 25
}).then(res => {
console.log(res);
});
选择依据
- 临时数据:使用全局变量或Vuex
- 简单持久化:本地存储
- 复杂数据结构:SQLite或云数据库
- 大文件:文件存储
- 多端同步:云端存储
注意事项
- 本地存储有大小限制(通常5MB)
- 敏感数据建议加密后存储
- 云数据库需要配置服务空间
- SQLite仅在某些平台可用







