From 8b362370a1c0cec2e954fe66efd8d8c7b974a1bf Mon Sep 17 00:00:00 2001 From: xiaoyucoding Date: Wed, 24 Apr 2019 21:23:43 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=20API=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/runtime/index.js | 13 ++++++++++++- src/core/runtime/wrapper.js | 2 +- .../app-plus/service/api/protocols.js | 4 +++- .../mp-alipay/service/api/protocols.js | 18 +++++++++++------- .../mp-baidu/service/api/protocols.js | 15 +++++++++------ .../mp-toutiao/service/api/protocols.js | 15 +++++++++------ .../mp-weixin/service/api/protocols.js | 4 +++- 7 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/core/runtime/index.js b/src/core/runtime/index.js index 8a4538ed5..9e7304fc6 100644 --- a/src/core/runtime/index.js +++ b/src/core/runtime/index.js @@ -18,7 +18,18 @@ import * as extraApi from './extra' import * as api from 'uni-platform/service/api/index.js' -import protocols from 'uni-platform/service/api/protocols' +import { protocols, todos, canIUses } from 'uni-platform/service/api/protocols' + +todos.forEach(todoApi => { + protocols[todoApi] = false +}) + +canIUses.forEach(canIUseApi => { + const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name : canIUseApi + if (!__GLOBAL__.canIUse(apiName)) { + protocols[canIUseApi] = false + } +}) let uni = {} diff --git a/src/core/runtime/wrapper.js b/src/core/runtime/wrapper.js index f6a3e7e21..f04beb6d6 100644 --- a/src/core/runtime/wrapper.js +++ b/src/core/runtime/wrapper.js @@ -10,7 +10,7 @@ import { isContextApi } from '../helpers/promise' -import protocols from 'uni-platform/service/api/protocols' +import { protocols } from 'uni-platform/service/api/protocols' const CALLBACKS = ['success', 'fail', 'cancel', 'complete'] diff --git a/src/platforms/app-plus/service/api/protocols.js b/src/platforms/app-plus/service/api/protocols.js index b1c6ea436..93855999b 100644 --- a/src/platforms/app-plus/service/api/protocols.js +++ b/src/platforms/app-plus/service/api/protocols.js @@ -1 +1,3 @@ -export default {} +export const protocols = {} +export const todos = [] +export const canIUses = [] diff --git a/src/platforms/mp-alipay/service/api/protocols.js b/src/platforms/mp-alipay/service/api/protocols.js index a09d39638..56a11dc83 100644 --- a/src/platforms/mp-alipay/service/api/protocols.js +++ b/src/platforms/mp-alipay/service/api/protocols.js @@ -1,5 +1,5 @@ // 不支持的 API 列表 -const TODOS = [ +const todos = [ 'saveImageToPhotosAlbum', 'getRecorderManager', 'getBackgroundAudioManager', @@ -24,7 +24,6 @@ const TODOS = [ 'hideTabBarRedDot', 'setBackgroundColor', 'setBackgroundTextStyle', - 'startPullDownRefresh', 'createIntersectionObserver', 'authorize', 'openSetting', @@ -45,6 +44,11 @@ const TODOS = [ 'offWindowResize' ] +// 存在兼容性的 API 列表 +const canIUses = [ + 'startPullDownRefresh' +] + function _handleNetworkInfo (result) { switch (result.networkType) { case 'NOTREACHABLE': @@ -359,8 +363,8 @@ const protocols = { // 需要做转换的 API 列表 } } -TODOS.forEach(todoApi => { - protocols[todoApi] = false -}) - -export default protocols +export { + protocols, + todos, + canIUses +} diff --git a/src/platforms/mp-baidu/service/api/protocols.js b/src/platforms/mp-baidu/service/api/protocols.js index 4bdc421b6..1bb1bd35d 100644 --- a/src/platforms/mp-baidu/service/api/protocols.js +++ b/src/platforms/mp-baidu/service/api/protocols.js @@ -1,5 +1,5 @@ // 不支持的 API 列表 -const TODOS = [ +const todos = [ 'hideKeyboard', 'onGyroscopeChange', 'startGyroscope', @@ -32,6 +32,9 @@ const TODOS = [ 'offWindowResize' ] +// 存在兼容性的 API 列表 +const canIUses = [] + function createTodoMethod (contextName, methodName) { return function unsupported () { console.error(`__PLATFORM_TITLE__ ${contextName}暂不支持${methodName}`) @@ -93,8 +96,8 @@ const protocols = { } } -TODOS.forEach(todoApi => { - protocols[todoApi] = false -}) - -export default protocols +export { + protocols, + todos, + canIUses +} diff --git a/src/platforms/mp-toutiao/service/api/protocols.js b/src/platforms/mp-toutiao/service/api/protocols.js index a830d52bb..0f99ee949 100644 --- a/src/platforms/mp-toutiao/service/api/protocols.js +++ b/src/platforms/mp-toutiao/service/api/protocols.js @@ -1,5 +1,5 @@ // 不支持的 API 列表 -const TODOS = [ +const todos = [ 'hideKeyboard', 'onSocketOpen', 'onSocketError', @@ -81,6 +81,9 @@ const TODOS = [ 'offWindowResize' ] +// 存在兼容性的 API 列表 +const canIUses = [] + // 需要做转换的 API 列表 const protocols = { chooseImage: { @@ -154,8 +157,8 @@ const protocols = { } } -TODOS.forEach(todoApi => { - protocols[todoApi] = false -}) - -export default protocols +export { + protocols, + todos, + canIUses +} diff --git a/src/platforms/mp-weixin/service/api/protocols.js b/src/platforms/mp-weixin/service/api/protocols.js index b1c6ea436..93855999b 100644 --- a/src/platforms/mp-weixin/service/api/protocols.js +++ b/src/platforms/mp-weixin/service/api/protocols.js @@ -1 +1,3 @@ -export default {} +export const protocols = {} +export const todos = [] +export const canIUses = [] -- GitLab