diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index 020b236640628124b88d0ef1ef3445136e4c3789..3a1c2c56297632f4f386433b70619001ba73e5c4 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -10901,23 +10901,23 @@ var serviceContext = (function () { uploadFile: uploadFile$1 }); + const STORAGE_DATA_TYPE = '__TYPE'; + const STORAGE_KEYS = 'uni-storage-keys'; + function setStorage$1 ({ key, data } = {}) { - const value = { - type: typeof data === 'object' ? 'object' : 'string', + const type = typeof data; + const value = type === 'string' ? data : JSON.stringify({ + type, data: data - }; - localStorage.setItem(key, JSON.stringify(value)); - const keyList = localStorage.getItem('uni-storage-keys'); - if (!keyList) { - localStorage.setItem('uni-storage-keys', JSON.stringify([key])); - } else { - const keys = JSON.parse(keyList); - if (keys.indexOf(key) < 0) { - keys.push(key); - localStorage.setItem('uni-storage-keys', JSON.stringify(keys)); + }); + try { + localStorage.setItem(key, value); + } catch (error) { + return { + errMsg: `setStorage:fail ${error}` } } return { @@ -10935,13 +10935,33 @@ var serviceContext = (function () { function getStorage$1 ({ key } = {}) { - const data = localStorage.getItem(key); - return data ? { - data: JSON.parse(data).data, + const value = localStorage && localStorage.getItem(key); + if (typeof value !== 'string') { + return { + data: '', + errMsg: 'getStorage:fail' + } + } + let data = value; + try { + const object = JSON.parse(value); + // 兼容App端历史格式 + const type = localStorage.getItem(key + STORAGE_DATA_TYPE); + if (!type) { + const keys = Object.keys(object); + if (keys.length === 2 && 'type' in object && 'data' in object) { + data = object.data; + } else if (keys.length === 1 && 'type' in object) { + data = ''; + } + } else if (type !== 'String') { + data = object; + data = typeof data === 'string' ? JSON.parse(data) : data; + } + } catch (error) { } + return { + data, errMsg: 'getStorage:ok' - } : { - data: '', - errMsg: 'getStorage:fail' } } @@ -10955,14 +10975,11 @@ var serviceContext = (function () { function removeStorage$1 ({ key } = {}) { - const keyList = localStorage.getItem('uni-storage-keys'); - if (keyList) { - const keys = JSON.parse(keyList); - const index = keys.indexOf(key); - keys.splice(index, 1); - localStorage.setItem('uni-storage-keys', JSON.stringify(keys)); - } - localStorage.removeItem(key); + if (localStorage) { + // 兼容App端历史格式 + localStorage.removeItem(key + STORAGE_DATA_TYPE); + localStorage.removeItem(key); + } return { errMsg: 'removeStorage:ok' } @@ -10975,7 +10992,7 @@ var serviceContext = (function () { } function clearStorage () { - localStorage.clear(); + localStorage && localStorage.clear(); return { errMsg: 'clearStorage:ok' } @@ -10985,18 +11002,23 @@ var serviceContext = (function () { clearStorage(); } - function getStorageInfo () { // TODO 暂时先不做大小的转换 - const keyList = localStorage.getItem('uni-storage-keys'); - return keyList ? { - keys: JSON.parse(keyList), - currentSize: 0, - limitSize: 0, + function getStorageInfo () { + const length = (localStorage && (localStorage.length || localStorage.getLength())) || 0; + const keys = []; + let currentSize = 0; + for (let index = 0; index < length; index++) { + const key = localStorage.key(index); + if (key !== STORAGE_KEYS && key.indexOf(STORAGE_DATA_TYPE) + STORAGE_DATA_TYPE.length !== key.length) { + const value = localStorage.getItem(key); + currentSize += key.length + value.length; + keys.push(key); + } + } + return { + keys, + currentSize: Math.ceil(currentSize * 2 / 1024), + limitSize: Number.MAX_VALUE, errMsg: 'getStorageInfo:ok' - } : { - keys: '', - currentSize: 0, - limitSize: 0, - errMsg: 'getStorageInfo:fail' } } diff --git a/packages/vue-cli-plugin-hbuilderx/build/vue-loader.conf.js b/packages/vue-cli-plugin-hbuilderx/build/vue-loader.conf.js index 44c2100d207b3110a610fc6c67b8d8b21996a9e9..d87bf1bcf9521289531a6989f31c3bf849a65042 100644 --- a/packages/vue-cli-plugin-hbuilderx/build/vue-loader.conf.js +++ b/packages/vue-cli-plugin-hbuilderx/build/vue-loader.conf.js @@ -8,7 +8,6 @@ const { } = require('@dcloudio/uni-template-compiler/lib/util') const TAGS = [ - 'ad', 'text', 'image', 'input', diff --git a/packages/webpack-uni-pages-loader/lib/index-new.js b/packages/webpack-uni-pages-loader/lib/index-new.js index 6178d390376657b4c677397ca1fffdf0698d3766..dee90251e02f246d85d8b2ea09c07c5e196f161b 100644 --- a/packages/webpack-uni-pages-loader/lib/index-new.js +++ b/packages/webpack-uni-pages-loader/lib/index-new.js @@ -86,6 +86,12 @@ module.exports = function (content) { let appConfigContent = '' jsonFiles.forEach(jsonFile => { if (jsonFile) { + if (!isAppView && jsonFile.name === 'manifest.json') { + const content = JSON.parse(jsonFile.content) + if (!content.launch_path && content.plus['uni-app'].nvueLaunchMode === 'fast') { + console.log('Nvue 首页启动模式: fast 详见: https://ask.dcloud.net.cn/article/36749') + } + } if (jsonFile.name === 'define-pages.js') { appConfigContent = jsonFile.content } else { @@ -122,4 +128,4 @@ module.exports = function (content) { } return '' -} +} diff --git a/packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.v3.js b/packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.v3.js index dda556bea0f8bb1e3706bf4ddaf792ae54faa6bd..7565028e1eb84e4ae78a91880a0f564010248ca3 100644 --- a/packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.v3.js +++ b/packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.v3.js @@ -92,8 +92,12 @@ module.exports = function (appJson, manifestJson, { manifestJson.plus.launch_path = '__uniappview.html' // 首页地址固定 } + // nvue 首页启动模式 + manifestJson.plus['uni-app'].nvueLaunchMode = manifestJson.plus.nvueLaunchMode === 'fast' ? 'fast' : 'normal' + delete manifestJson.plus.nvueLaunchMode + manifest.name = 'manifest.json' manifest.content = JSON.stringify(manifest.content) delete appJson.nvue return [manifest, definePages(appJson), appConfigService(appJson)] -} +}