提交 9f4b3960 编写于 作者: Q qiang

chore: build runtime

上级 bc69d645
...@@ -900,6 +900,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -900,6 +900,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
......
...@@ -1636,6 +1636,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -1636,6 +1636,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
......
...@@ -1313,6 +1313,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -1313,6 +1313,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
...@@ -1883,7 +1888,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix']; ...@@ -1883,7 +1888,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix'];
function isPage () { function isPage () {
// 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page // 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page
// 否则会导致mounted不执行 // 否则会导致mounted不执行
return typeof this.ownerId === 'undefined' // 基础库 3.290.33 及以上 ownerId 为 null
return typeof this.ownerId === 'undefined' || this.ownerId === null
} }
function initRelation (detail) { function initRelation (detail) {
......
...@@ -1072,6 +1072,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -1072,6 +1072,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
......
...@@ -1233,6 +1233,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -1233,6 +1233,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
......
...@@ -1325,6 +1325,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -1325,6 +1325,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
...@@ -2121,34 +2126,50 @@ function parseBaseComponent (vueComponentOptions, { ...@@ -2121,34 +2126,50 @@ function parseBaseComponent (vueComponentOptions, {
return [componentOptions, VueComponent] return [componentOptions, VueComponent]
} }
const components = [];
function parseComponent (vueOptions) { function parseComponent (vueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions); const [componentOptions, VueComponent] = parseBaseComponent(vueOptions);
// 基础库 2.0 以上 attached 顺序错乱,按照 created 顺序强制纠正
componentOptions.lifetimes.created = function created () {
components.push(this);
};
componentOptions.lifetimes.attached = function attached () { componentOptions.lifetimes.attached = function attached () {
const properties = this.properties; this.__lifetimes_attached = function () {
const properties = this.properties;
const options = { const options = {
mpType: isPage.call(this) ? 'page' : 'component', mpType: isPage.call(this) ? 'page' : 'component',
mpInstance: this, mpInstance: this,
propsData: properties propsData: properties
}; };
initVueIds(properties.vueId, this); initVueIds(properties.vueId, this);
// 初始化 vue 实例 // 初始化 vue 实例
this.$vm = new VueComponent(options); this.$vm = new VueComponent(options);
// 处理$slots,$scopedSlots(暂不支持动态变化$slots) // 处理$slots,$scopedSlots(暂不支持动态变化$slots)
initSlots(this.$vm, properties.vueSlots); initSlots(this.$vm, properties.vueSlots);
// 处理父子关系 // 处理父子关系
initRelation.call(this, { initRelation.call(this, {
vuePid: this._$vuePid, vuePid: this._$vuePid,
mpInstance: this mpInstance: this
}); });
// 触发首次 setData // 触发首次 setData
this.$vm.$mount(); this.$vm.$mount();
};
let component = this;
while (component && component.__lifetimes_attached && components[0] && component === components[0]) {
components.shift();
component.__lifetimes_attached();
delete component.__lifetimes_attached;
component = components[0];
}
}; };
// ready 比 handleLink 还早,初始化逻辑放到 handleLink 中 // ready 比 handleLink 还早,初始化逻辑放到 handleLink 中
......
...@@ -969,6 +969,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -969,6 +969,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
......
...@@ -1039,6 +1039,11 @@ function initProperties (props, isBehavior = false, file = '') { ...@@ -1039,6 +1039,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object, type: Object,
value: null value: null
}; };
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null, type: null,
value: [], value: [],
...@@ -1477,7 +1482,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix']; ...@@ -1477,7 +1482,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix'];
function isPage () { function isPage () {
// 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page // 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page
// 否则会导致mounted不执行 // 否则会导致mounted不执行
return typeof this.ownerId === 'undefined' // 基础库 3.290.33 及以上 ownerId 为 null
return typeof this.ownerId === 'undefined' || this.ownerId === null
} }
function findVmByVueId (vm, vuePid) { function findVmByVueId (vm, vuePid) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册