我迟到了几年,但认为回答那些尚未直接回答的 OP 问题会有所帮助,并添加一些有用的建议:)。
我怎么知道chrome会继续支持WebSQL在
功能版本?
据我所知,无法确定特定浏览器供应商何时会放弃对技术或 API 的支持。但是,供应商通常会提前一段时间(大约几个月或几年)通知开发人员。
我应该使用 webSQL 吗?
简而言之,不。由于 Deni Spasovski 的回答,关于deprecation of WebSQL still stands 的一切。另一方面,IndexedDB,enjoys the support of all of the major browser vendors。所以选择后者。
然而,我应该指出,两个数据库之间的决定不是必须做出的;可以简单地选择(或制作)一个库,该库利用客户端计算机上可用的任何数据库。
BakedGoods 与此处已建议的此类库在几个方面有所不同;最相关的是,它允许明确指定要使用的存储类型,进而允许开发人员在决策过程中引入其他因素(例如性能特征)。
有了它,在支持的任何一种数据库类型中执行存储操作都是...
...为两种数据库类型指定适当的操作选项和等效配置:
//If the operation is a set(), and the referenced structures
//don't exist, they will be created automatically.
var webSQLOptionsObj = {
databaseName: "Example_DB",
databaseDisplayName: "Example DB",
databaseVersion: "",
estimatedDatabaseSize: 1024 * 1024,
tableData: {
name: "Main",
keyColumnName: "lastName",
columnDefinitions: "(lastName TEXT PRIMARY KEY, firstName TEXT)"
},
tableIndexDataArray: [name: "First_Name_Index", columnNames: "(firstName)"]
};
var indexedDBOptionsObj = {
databaseName: "Example_DB",
databaseVersion: 1,
objectStoreData: {
name: "Main",
keyPath: lastName,
autoIncrement: false
},
objectStoreIndexDataArray: [
{name: "First_Name_Index", keyPath: "firstName", unique: false, multiEntry: false}
],
};
var optionsObj = {
conductDisjointly: false,
webSQL: webSQLOptionsObj,
indexedDB: indexedDBOptionsObj
};
...并进行操作:
bakedGoods.set({
data: [
{value: {lastName: "Obama", firstName: "Barack"}},
{value: {lastName: "Biden", firstName: "Joe"}}
],
storageTypes: ["indexedDB", "webSQL"],
options: optionsObj,
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
其简单的界面和无与伦比的存储设施支持是以缺乏对某些存储设施特定配置的支持为代价的。例如,它不支持在具有多列主键的 WebSQL 表中进行存储操作。
因此,如果您大量使用这些类型的功能,您可能想看看其他地方。
哦,为了完全透明,BakedGoods 确实由您维护 :)。