TuxCon 2014: Съхранение на данни в Tizen уеб приложения
1. Съхранение на данни в Tizen уеб
приложения
Леон Анави
@leonanavi
leon@anavi.org
2. Съдържание
Какво е Tizen?
Tizen web applications
Запис и четене на файлове
Сваляне на файлове
Web Storage
Web SQL Database
IndexedDB
3. Какво е Tizen?
Софтуерна платформа с отворен код и Linux ядро
Подходяща за мобилни, вградени и преносими
устройства
Съвместима е ARM и x86 процесори
Могат да се разработват HTML5 и native C++
приложения
2012 2013 2013
Tizen 1.0
Larkspur
Tizen 2.0
Magnolia
Tizen 3
2014
5. Tizen web applications
Препоръчителен подход за създаване на apps заTizen
Технологии: HTML, CSS, JavaScript
Формат на инсталационните файлове wgt
Поддържа HTML5 APIs
Поддържа допълнителни Tizen APIs
6. Запис на файлове
function write(fileStream) {
try {
fileStream.write('bar');
fileStream.close();
} catch (err) {
console.log('Unable to save file: ' + err.message);
}
}
try {
documentsDir.createFile('foo.txt');
file = documentsDir.resolve('foo.txt');
file.openStream('w', write, onError);
} catch (errWrite) {
console.log('Error: ' + errWrite.message);
}
7. Четене на файлове
С поток
Като текст без поток
Подготовка
var documentsDir;
function onError(e) {
console.log('error: ' + e.message);
}
function onResolveSuccess(dir) {
documentsDir = dir;
}
tizen.filesystem.resolve('documents', onResolveSuccess, onError, 'w');
8. Четене на файлове с поток
function read(fileStream) {
try {
var sFileContent = fileStream.read(fileStream.bytesAvailable);
console.log('file content: ' + sFileContent);
fileStream.close();
} catch (err) {
console.log('Unable to read file: ' + err.message);
}
}
function readFile() {
try {
file = documentsDir.resolve('foo.txt');
file.openStream('r', read, onError);
} catch (err) {
console.log('Error: ' + err.message);
}
}
9. Четене на файлове без поток
function showFileContent(data) {
console.log(data);
}
function readFileWithoutStream() {
try {
var file = documentsDir.resolve('foo.txt');
file.readAsText(showFileContent, onError);
} catch (err) {
console.log('Error:' + err.message);
}
}
11. Web Storage
Session storage
Local storage
//Запаметяване на стойност bar за ключ foo.
localStorage.setStorage('foo', 'bar');
//Прочитане на стойността на foo
var foo = localStorage.getItem('foo');
12. Web SQL Database
SQL база от данни, която е базира на SQL Lite
Поддържа се от Tizen
Отпадна от HTML5 стандартите през 2010г.
Desktop Browsers
Работи на Chrome, Opera и Safari
Не работи на Firefox и Internet Explorer
13. Създаване на Web SQL DB
var db = null;
var dbVersion = 1.0;
var dbName = "TuxCon2014";
var dbDesc = "FOSS conference";
var dbSize = 1024 * 1024; //1MB
try {
db = openDatabase(dbName, dbVersion, dbDesc, dbSize);
}
catch(err) {
console.log(err.message);
}
14. Изпълнение на заявки
//Създаване на таблица
db.transaction(function (transaction) {
transaction.executeSql("CREATE TABLE IF NOT EXISTS
tbl (id INTEGER PRIMARY KEY, content TEXT)");
});
//Добавяне на данни
db.transaction(function (transaction) {
transaction.executeSql("INSERT INTO tbl(id, content)
VALUES (?, ?)", [1, 'foo']);
});
15. IndexedDB
Усъвършенствана система за съхрание на големи
количества обекти с ключове и стойности
Част от HTML5
Поддържа се от всички модерни браузъри (дори и
Safari в близко бъдеще)