diff --git a/lib/h5/main.js b/lib/h5/main.js index 508f7554dd83dfeeb7f07ff639b3d2fa06098735..42dade0f8b725d25fc24efbd65a43d2a4dd63e9c 100644 --- a/lib/h5/main.js +++ b/lib/h5/main.js @@ -7,50 +7,60 @@ import Vue from 'vue' // import 'uni-platform/view/index.css' import initVue from 'uni-core/vue' -global.UniViewJSBridge = { - subscribe: UniViewJSBridge.subscribe, - publishHandler: UniViewJSBridge.publishHandler, - subscribeHandler: UniViewJSBridge.subscribeHandler -} +class UniApp { + constructor () { + this._init() + } -global.UniServiceJSBridge = { - subscribe: UniServiceJSBridge.subscribe, - publishHandler: UniServiceJSBridge.publishHandler, - subscribeHandler: UniServiceJSBridge.subscribeHandler -} + _init () { + global.UniViewJSBridge = { + subscribe: UniViewJSBridge.subscribe, + publishHandler: UniViewJSBridge.publishHandler, + subscribeHandler: UniViewJSBridge.subscribeHandler + } + + global.UniServiceJSBridge = { + subscribe: UniServiceJSBridge.subscribe, + publishHandler: UniServiceJSBridge.publishHandler, + subscribeHandler: UniServiceJSBridge.subscribeHandler + } + + const { + default: uni, + getApp, + getCurrentPages + } = require('uni-platform/service/index') + + // 与微信JS-SDK同名的方法 + // const sameNameApis = ['setClipboardData', 'getClipboardData', 'onUserCaptureScreen', 'openBluetoothAdapter', 'startBluetoothDevicesDiscovery', 'onBluetoothDeviceFound', 'stopBluetoothDevicesDiscovery', 'onBluetoothAdapterStateChange', 'getConnectedBluetoothDevices', 'getBluetoothDevices', 'getBluetoothAdapterState', 'closeBluetoothAdapter', 'writeBLECharacteristicValue', 'readBLECharacteristicValue', 'onBLEConnectionStateChange', 'onBLECharacteristicValueChange', 'notifyBLECharacteristicValueChange', 'getBLEDeviceServices', 'getBLEDeviceCharacteristics', 'createBLEConnection', 'closeBLEConnection', 'onBeaconServiceChange', 'onBeaconUpdate', 'getBeacons', 'startBeaconDiscovery', 'stopBeaconDiscovery', 'chooseImage', 'previewImage', 'getNetworkType', 'onNetworkStatusChange', 'openLocation', 'getLocation'] + // 默认会被iOS企业微信替换的方法 + const sameNameApis = ['chooseImage'] + sameNameApis.forEach(item => { + Object.defineProperty(uni, item, { + writable: false, + configurable: false + }) + }) + + global.uni = uni -const { - default: uni, - getApp, - getCurrentPages -} = require('uni-platform/service/index') - -// 与微信JS-SDK同名的方法 -// const sameNameApis = ['setClipboardData', 'getClipboardData', 'onUserCaptureScreen', 'openBluetoothAdapter', 'startBluetoothDevicesDiscovery', 'onBluetoothDeviceFound', 'stopBluetoothDevicesDiscovery', 'onBluetoothAdapterStateChange', 'getConnectedBluetoothDevices', 'getBluetoothDevices', 'getBluetoothAdapterState', 'closeBluetoothAdapter', 'writeBLECharacteristicValue', 'readBLECharacteristicValue', 'onBLEConnectionStateChange', 'onBLECharacteristicValueChange', 'notifyBLECharacteristicValueChange', 'getBLEDeviceServices', 'getBLEDeviceCharacteristics', 'createBLEConnection', 'closeBLEConnection', 'onBeaconServiceChange', 'onBeaconUpdate', 'getBeacons', 'startBeaconDiscovery', 'stopBeaconDiscovery', 'chooseImage', 'previewImage', 'getNetworkType', 'onNetworkStatusChange', 'openLocation', 'getLocation'] -// 默认会被iOS企业微信替换的方法 -const sameNameApis = ['chooseImage'] -sameNameApis.forEach(item => { - Object.defineProperty(uni, item, { - writable: false, - configurable: false - }) -}) - -global.uni = uni - -global.wx = global.uni - -global.getApp = getApp -global.getCurrentPages = getCurrentPages - -Vue.use(require('uni-service/plugins').default, { - routes: __uniRoutes -}) - -Vue.use(require('uni-view/plugins').default, { - routes: __uniRoutes -}) - -initVue(Vue) -require('uni-platform/components') -require('uni-components') + global.wx = global.uni + + global.getApp = getApp + global.getCurrentPages = getCurrentPages + + Vue.use(require('uni-service/plugins').default, { + routes: __uniRoutes + }) + + Vue.use(require('uni-view/plugins').default, { + routes: __uniRoutes + }) + + initVue(Vue) + require('uni-platform/components') + require('uni-components') + } +} +global.UniApp = UniApp +global.__uniConfig && new UniApp() diff --git a/packages/webpack-uni-pages-loader/lib/platforms/h5.js b/packages/webpack-uni-pages-loader/lib/platforms/h5.js index a6b1bfc1bb7dc3105aa513c928cd545f101d36c2..15aa4580a4fcd47fbee6f0c66ffe3a88661763c2 100644 --- a/packages/webpack-uni-pages-loader/lib/platforms/h5.js +++ b/packages/webpack-uni-pages-loader/lib/platforms/h5.js @@ -410,6 +410,7 @@ global.__uniConfig.sdkConfigs = ${JSON.stringify(sdkConfigs)}; global.__uniConfig.qqMapKey = ${JSON.stringify(qqMapKey)}; global.__uniConfig.nvue = ${JSON.stringify({ 'flex-direction': getFlexDirection(manifestJson['app-plus']) })} ${genRegisterPageVueComponentsCode(pageComponents)} -global.__uniRoutes=[${genPageRoutes(pageComponents).concat(genSystemRoutes()).join(',')}] +global.__uniRoutes=[${genPageRoutes(pageComponents).concat(genSystemRoutes()).join(',')}] +global.UniApp && new global.UniApp(); ` }