From d04fabd41af270b4644c5c82c3d60097087e9939 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 20 Apr 2019 18:29:12 +0800 Subject: [PATCH] build uni runtime (mp-toutiao mocks) --- packages/uni-app-plus/dist/index.js | 74 +++++---- packages/uni-app-plus/package.json | 2 +- packages/uni-mp-baidu/dist/index.js | 70 ++++----- packages/uni-mp-baidu/package.json | 2 +- packages/uni-mp-toutiao/dist/index.js | 148 +++++++++--------- packages/uni-mp-toutiao/package.json | 2 +- packages/uni-mp-weixin/dist/index.js | 54 +++---- packages/uni-mp-weixin/package.json | 2 +- src/core/runtime/wrapper/create-app.js | 6 +- src/core/runtime/wrapper/util.js | 8 +- .../app-plus/runtime/wrapper/index.js | 1 + .../mp-baidu/runtime/wrapper/index.js | 2 + .../mp-toutiao/runtime/wrapper/index.js | 2 + .../mp-weixin/runtime/wrapper/index.js | 2 + 14 files changed, 187 insertions(+), 188 deletions(-) diff --git a/packages/uni-app-plus/dist/index.js b/packages/uni-app-plus/dist/index.js index 611434e97..b463c38d3 100644 --- a/packages/uni-app-plus/dist/index.js +++ b/packages/uni-app-plus/dist/index.js @@ -309,13 +309,43 @@ Component = function (options = {}) { return MPComponent(options) }; -/* mp-toutiao __webviewId__ */ -/* mp-baidu nodeId */ -const MOCKS = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__', '__webviewId__', 'nodeId']; +const mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__']; -function initMocks (vm) { +function triggerLink (mpInstance, vueOptions) { + mpInstance.triggerEvent('__l', mpInstance.$vm || vueOptions, { + bubbles: true, + composed: true + }); +} + +function handleLink (event) { + if (event.detail.$mp) { // vm + if (!event.detail.$parent) { + event.detail.$parent = this.$vm; + event.detail.$parent.$children.push(event.detail); + + event.detail.$root = this.$vm.$root; + } + } else { // vueOptions + if (!event.detail.parent) { + event.detail.parent = this.$vm; + } + } +} + +function initPage$1 (pageOptions) { + initComponent$1(pageOptions); +} + +function initComponent$1 (componentOptions) { + componentOptions.methods.$getAppWebview = function () { + return plus.webview.getWebviewById(`${this.__wxWebviewId__}`) + }; +} + +function initMocks (vm, mocks) { const mpInstance = vm.$mp[vm.mpType]; - MOCKS.forEach(mock => { + mocks.forEach(mock => { if (hasOwn(mpInstance, mock)) { vm[mock] = mpInstance[mock]; } @@ -712,7 +742,7 @@ function createApp (vm) { { // 头条的 selectComponent 竟然是异步的 initRefs(this); } - initMocks(this); + initMocks(this, mocks); } }, created () { // 处理 injections @@ -747,38 +777,6 @@ function createApp (vm) { return vm } -function triggerLink (mpInstance, vueOptions) { - mpInstance.triggerEvent('__l', mpInstance.$vm || vueOptions, { - bubbles: true, - composed: true - }); -} - -function handleLink (event) { - if (event.detail.$mp) { // vm - if (!event.detail.$parent) { - event.detail.$parent = this.$vm; - event.detail.$parent.$children.push(event.detail); - - event.detail.$root = this.$vm.$root; - } - } else { // vueOptions - if (!event.detail.parent) { - event.detail.parent = this.$vm; - } - } -} - -function initPage$1 (pageOptions) { - initComponent$1(pageOptions); -} - -function initComponent$1 (componentOptions) { - componentOptions.methods.$getAppWebview = function () { - return plus.webview.getWebviewById(`${this.__wxWebviewId__}`) - }; -} - const hooks$1 = [ 'onShow', 'onHide', diff --git a/packages/uni-app-plus/package.json b/packages/uni-app-plus/package.json index f2ecb9bf3..d472d9106 100644 --- a/packages/uni-app-plus/package.json +++ b/packages/uni-app-plus/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-app-plus", - "version": "0.0.226", + "version": "0.0.227", "description": "uni-app app-plus", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-baidu/dist/index.js b/packages/uni-mp-baidu/dist/index.js index f725f8dc6..b185b9411 100644 --- a/packages/uni-mp-baidu/dist/index.js +++ b/packages/uni-mp-baidu/dist/index.js @@ -444,13 +444,41 @@ Component = function (options = {}) { return MPComponent(options) }; -/* mp-toutiao __webviewId__ */ -/* mp-baidu nodeId */ -const MOCKS = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__', '__webviewId__', 'nodeId']; +const mocks = ['nodeId']; -function initMocks (vm) { +function initPage (pageOptions) { + initComponent(pageOptions); +} + +function initComponent (componentOptions) { + componentOptions.messages = { + '__l': handleLink + }; +} + +function triggerLink (mpInstance, vueOptions) { + mpInstance.dispatch('__l', mpInstance.$vm || vueOptions); +} + +function handleLink (event) { + const target = event.value; + if (target.$mp) { + if (!target.$parent) { + target.$parent = this.$vm; + target.$parent.$children.push(target); + + target.$root = this.$vm.$root; + } + } else { + if (!target.parent) { + target.parent = this.$vm; + } + } +} + +function initMocks (vm, mocks) { const mpInstance = vm.$mp[vm.mpType]; - MOCKS.forEach(mock => { + mocks.forEach(mock => { if (hasOwn(mpInstance, mock)) { vm[mock] = mpInstance[mock]; } @@ -887,7 +915,7 @@ function createApp (vm) { { // 头条的 selectComponent 竟然是异步的 initRefs(this); } - initMocks(this); + initMocks(this, mocks); } }, created () { // 处理 injections @@ -922,36 +950,6 @@ function createApp (vm) { return vm } -function initPage (pageOptions) { - initComponent(pageOptions); -} - -function initComponent (componentOptions) { - componentOptions.messages = { - '__l': handleLink - }; -} - -function triggerLink (mpInstance, vueOptions) { - mpInstance.dispatch('__l', mpInstance.$vm || vueOptions); -} - -function handleLink (event) { - const target = event.value; - if (target.$mp) { - if (!target.$parent) { - target.$parent = this.$vm; - target.$parent.$children.push(target); - - target.$root = this.$vm.$root; - } - } else { - if (!target.parent) { - target.parent = this.$vm; - } - } -} - const hooks$1 = [ 'onShow', 'onHide', diff --git a/packages/uni-mp-baidu/package.json b/packages/uni-mp-baidu/package.json index 12b3ef2b0..2f95943b3 100644 --- a/packages/uni-mp-baidu/package.json +++ b/packages/uni-mp-baidu/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-baidu", - "version": "0.0.823", + "version": "0.0.824", "description": "uni-app mp-baidu", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-toutiao/dist/index.js b/packages/uni-mp-toutiao/dist/index.js index f38d25e62..32ce4f375 100644 --- a/packages/uni-mp-toutiao/dist/index.js +++ b/packages/uni-mp-toutiao/dist/index.js @@ -489,13 +489,80 @@ Component = function (options = {}) { return MPComponent(options) }; -/* mp-toutiao __webviewId__ */ -/* mp-baidu nodeId */ -const MOCKS = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__', '__webviewId__', 'nodeId']; +const instances = Object.create(null); + +const mocks = ['__route__', '__webviewId__', '__nodeid__']; + +function initPage (pageOptions) { + initComponent(pageOptions); +} + +function initComponent (componentOptions) { + if (componentOptions.properties) { // ref + componentOptions.properties.vueRef = { + type: String, + value: '' + }; + } + const oldAttached = componentOptions.lifetimes.attached; + componentOptions.lifetimes.attached = function () { + oldAttached.call(this); + // TODO 需要处理动态变化后的 refs + initRefs.call(this); + }; +} -function initMocks (vm) { +function initRefs () { + this.selectAllComponents('.vue-ref', (components) => { + components.forEach(component => { + const ref = component.data.vueRef; // 头条的组件 dataset 竟然是空的 + this.$vm.$refs[ref] = component.$vm || component; + }); + }); + this.selectAllComponents('.vue-ref-in-for', (forComponents) => { + forComponents.forEach(component => { + const ref = component.data.vueRef; + if (!this.$vm.$refs[ref]) { + this.$vm.$refs[ref] = []; + } + this.$vm.$refs[ref].push(component.$vm || component); + }); + }); +} + +function triggerLink (mpInstance) { + const nodeId = mpInstance.__nodeid__ + ''; + const webviewId = mpInstance.__webviewId__ + ''; + + instances[webviewId + '_' + nodeId] = mpInstance.$vm; + + mpInstance.triggerEvent('__l', { + nodeId, + webviewId + }, { + bubbles: true, + composed: true + }); +} +// TODO 目前有 bug,composed 不生效 +function handleLink (event) { + const nodeId = event.detail.nodeId; + const webviewId = event.detail.webviewId; + + const childVm = instances[webviewId + '_' + nodeId]; + + if (childVm) { + childVm.$parent = this.$vm; + childVm.$parent.$children.push(event.detail); + + childVm.$root = this.$vm.$root; + delete instances[webviewId + '_' + nodeId]; + } +} + +function initMocks (vm, mocks) { const mpInstance = vm.$mp[vm.mpType]; - MOCKS.forEach(mock => { + mocks.forEach(mock => { if (hasOwn(mpInstance, mock)) { vm[mock] = mpInstance[mock]; } @@ -866,7 +933,7 @@ function createApp (vm) { delete this.$options.mpInstance; if (this.mpType !== 'app') { - initMocks(this); + initMocks(this, mocks); } }, created () { // 处理 injections @@ -901,75 +968,6 @@ function createApp (vm) { return vm } -const instances = Object.create(null); - -function initPage (pageOptions) { - initComponent(pageOptions); -} - -function initComponent (componentOptions) { - if (componentOptions.properties) { // ref - componentOptions.properties.vueRef = { - type: String, - value: '' - }; - } - const oldAttached = componentOptions.lifetimes.attached; - componentOptions.lifetimes.attached = function () { - oldAttached.call(this); - // TODO 需要处理动态变化后的 refs - initRefs$1.call(this); - }; -} - -function initRefs$1 () { - this.selectAllComponents('.vue-ref', (components) => { - components.forEach(component => { - const ref = component.data.vueRef; // 头条的组件 dataset 竟然是空的 - this.$vm.$refs[ref] = component.$vm || component; - }); - }); - this.selectAllComponents('.vue-ref-in-for', (forComponents) => { - forComponents.forEach(component => { - const ref = component.data.vueRef; - if (!this.$vm.$refs[ref]) { - this.$vm.$refs[ref] = []; - } - this.$vm.$refs[ref].push(component.$vm || component); - }); - }); -} - -function triggerLink (mpInstance) { - const nodeId = mpInstance.__nodeid__ + ''; - const webviewId = mpInstance.__webviewId__ + ''; - - instances[webviewId + '_' + nodeId] = mpInstance.$vm; - - mpInstance.triggerEvent('__l', { - nodeId, - webviewId - }, { - bubbles: true, - composed: true - }); -} -// TODO 目前有 bug,composed 不生效 -function handleLink (event) { - const nodeId = event.detail.nodeId; - const webviewId = event.detail.webviewId; - - const childVm = instances[webviewId + '_' + nodeId]; - - if (childVm) { - childVm.$parent = this.$vm; - childVm.$parent.$children.push(event.detail); - - childVm.$root = this.$vm.$root; - delete instances[webviewId + '_' + nodeId]; - } -} - const hooks$1 = [ 'onShow', 'onHide', diff --git a/packages/uni-mp-toutiao/package.json b/packages/uni-mp-toutiao/package.json index fa28cf77d..47f0c2aa2 100644 --- a/packages/uni-mp-toutiao/package.json +++ b/packages/uni-mp-toutiao/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-toutiao", - "version": "0.0.321", + "version": "0.0.322", "description": "uni-app mp-toutiao", "main": "dist/index.js", "scripts": { diff --git a/packages/uni-mp-weixin/dist/index.js b/packages/uni-mp-weixin/dist/index.js index 391c6c2b5..daf672760 100644 --- a/packages/uni-mp-weixin/dist/index.js +++ b/packages/uni-mp-weixin/dist/index.js @@ -336,13 +336,33 @@ Component = function (options = {}) { return MPComponent(options) }; -/* mp-toutiao __webviewId__ */ -/* mp-baidu nodeId */ -const MOCKS = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__', '__webviewId__', 'nodeId']; +const mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__']; -function initMocks (vm) { +function triggerLink (mpInstance, vueOptions) { + mpInstance.triggerEvent('__l', mpInstance.$vm || vueOptions, { + bubbles: true, + composed: true + }); +} + +function handleLink (event) { + if (event.detail.$mp) { // vm + if (!event.detail.$parent) { + event.detail.$parent = this.$vm; + event.detail.$parent.$children.push(event.detail); + + event.detail.$root = this.$vm.$root; + } + } else { // vueOptions + if (!event.detail.parent) { + event.detail.parent = this.$vm; + } + } +} + +function initMocks (vm, mocks) { const mpInstance = vm.$mp[vm.mpType]; - MOCKS.forEach(mock => { + mocks.forEach(mock => { if (hasOwn(mpInstance, mock)) { vm[mock] = mpInstance[mock]; } @@ -744,7 +764,7 @@ function createApp (vm) { { // 头条的 selectComponent 竟然是异步的 initRefs(this); } - initMocks(this); + initMocks(this, mocks); } }, created () { // 处理 injections @@ -779,28 +799,6 @@ function createApp (vm) { return vm } -function triggerLink (mpInstance, vueOptions) { - mpInstance.triggerEvent('__l', mpInstance.$vm || vueOptions, { - bubbles: true, - composed: true - }); -} - -function handleLink (event) { - if (event.detail.$mp) { // vm - if (!event.detail.$parent) { - event.detail.$parent = this.$vm; - event.detail.$parent.$children.push(event.detail); - - event.detail.$root = this.$vm.$root; - } - } else { // vueOptions - if (!event.detail.parent) { - event.detail.parent = this.$vm; - } - } -} - const hooks$1 = [ 'onShow', 'onHide', diff --git a/packages/uni-mp-weixin/package.json b/packages/uni-mp-weixin/package.json index e1aa6406a..a3a357055 100644 --- a/packages/uni-mp-weixin/package.json +++ b/packages/uni-mp-weixin/package.json @@ -1,6 +1,6 @@ { "name": "@dcloudio/uni-mp-weixin", - "version": "0.0.945", + "version": "0.0.946", "description": "uni-app mp-weixin", "main": "dist/index.js", "scripts": { diff --git a/src/core/runtime/wrapper/create-app.js b/src/core/runtime/wrapper/create-app.js index f95b39ac1..667b70863 100644 --- a/src/core/runtime/wrapper/create-app.js +++ b/src/core/runtime/wrapper/create-app.js @@ -1,6 +1,10 @@ import 'uni-platform/runtime/index' import Vue from 'vue' + +import { + mocks +} from 'uni-platform/runtime/wrapper/index' import { initRefs, @@ -51,7 +55,7 @@ export function createApp (vm) { if (__PLATFORM__ !== 'mp-toutiao') { // 头条的 selectComponent 竟然是异步的 initRefs(this) } - initMocks(this) + initMocks(this, mocks) } }, created () { // 处理 injections diff --git a/src/core/runtime/wrapper/util.js b/src/core/runtime/wrapper/util.js index cf6957f56..3287d4e50 100644 --- a/src/core/runtime/wrapper/util.js +++ b/src/core/runtime/wrapper/util.js @@ -5,13 +5,9 @@ import { isPlainObject } from 'uni-shared' -/* mp-toutiao __webviewId__ */ -/* mp-baidu nodeId */ -const MOCKS = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__', '__webviewId__', 'nodeId'] - -export function initMocks (vm) { +export function initMocks (vm, mocks) { const mpInstance = vm.$mp[vm.mpType] - MOCKS.forEach(mock => { + mocks.forEach(mock => { if (hasOwn(mpInstance, mock)) { vm[mock] = mpInstance[mock] } diff --git a/src/platforms/app-plus/runtime/wrapper/index.js b/src/platforms/app-plus/runtime/wrapper/index.js index d5dceb800..2628b2b95 100644 --- a/src/platforms/app-plus/runtime/wrapper/index.js +++ b/src/platforms/app-plus/runtime/wrapper/index.js @@ -1,4 +1,5 @@ export { + mocks, handleLink, triggerLink } diff --git a/src/platforms/mp-baidu/runtime/wrapper/index.js b/src/platforms/mp-baidu/runtime/wrapper/index.js index 1f664c4f1..160ac73e6 100644 --- a/src/platforms/mp-baidu/runtime/wrapper/index.js +++ b/src/platforms/mp-baidu/runtime/wrapper/index.js @@ -1,3 +1,5 @@ +export const mocks = ['nodeId'] + export function initPage (pageOptions) { initComponent(pageOptions) } diff --git a/src/platforms/mp-toutiao/runtime/wrapper/index.js b/src/platforms/mp-toutiao/runtime/wrapper/index.js index 0dda3ecc1..4c3a710f1 100644 --- a/src/platforms/mp-toutiao/runtime/wrapper/index.js +++ b/src/platforms/mp-toutiao/runtime/wrapper/index.js @@ -1,5 +1,7 @@ const instances = Object.create(null) +export const mocks = ['__route__', '__webviewId__', '__nodeid__'] + export function initPage (pageOptions) { initComponent(pageOptions) } diff --git a/src/platforms/mp-weixin/runtime/wrapper/index.js b/src/platforms/mp-weixin/runtime/wrapper/index.js index b2fc64ca1..e4c21a487 100644 --- a/src/platforms/mp-weixin/runtime/wrapper/index.js +++ b/src/platforms/mp-weixin/runtime/wrapper/index.js @@ -1,3 +1,5 @@ +export const mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'] + export function initPage () { } -- GitLab