提交 d04fabd4 编写于 作者: fxy060608's avatar fxy060608

build uni runtime (mp-toutiao mocks)

上级 3fb1baba
......@@ -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',
......
{
"name": "@dcloudio/uni-app-plus",
"version": "0.0.226",
"version": "0.0.227",
"description": "uni-app app-plus",
"main": "dist/index.js",
"scripts": {
......
......@@ -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',
......
{
"name": "@dcloudio/uni-mp-baidu",
"version": "0.0.823",
"version": "0.0.824",
"description": "uni-app mp-baidu",
"main": "dist/index.js",
"scripts": {
......
......@@ -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',
......
{
"name": "@dcloudio/uni-mp-toutiao",
"version": "0.0.321",
"version": "0.0.322",
"description": "uni-app mp-toutiao",
"main": "dist/index.js",
"scripts": {
......
......@@ -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',
......
{
"name": "@dcloudio/uni-mp-weixin",
"version": "0.0.945",
"version": "0.0.946",
"description": "uni-app mp-weixin",
"main": "dist/index.js",
"scripts": {
......
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
......
......@@ -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]
}
......
export {
mocks,
handleLink,
triggerLink
}
......
export const mocks = ['nodeId']
export function initPage (pageOptions) {
initComponent(pageOptions)
}
......
const instances = Object.create(null)
export const mocks = ['__route__', '__webviewId__', '__nodeid__']
export function initPage (pageOptions) {
initComponent(pageOptions)
}
......
export const mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__']
export function initPage () {
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册