提交 1006ae6a 编写于 作者: Q qiang

Merge branch 'dev' into alpha

...@@ -1359,7 +1359,7 @@ function parseBaseComponent (vueComponentOptions, { ...@@ -1359,7 +1359,7 @@ function parseBaseComponent (vueComponentOptions, {
} }
}, },
detached () { detached () {
this.$vm.$destroy(); this.$vm && this.$vm.$destroy();
} }
}, },
pageLifetimes: { pageLifetimes: {
......
...@@ -5639,8 +5639,10 @@ function insertBefore() { ...@@ -5639,8 +5639,10 @@ function insertBefore() {
} }
function removeChild() { function removeChild(node, child) {
if (child && child._$vd) {
child._$vd.removeElement(child);
}
} }
function appendChild() { function appendChild() {
......
...@@ -1493,7 +1493,7 @@ function parseBaseComponent (vueComponentOptions, { ...@@ -1493,7 +1493,7 @@ function parseBaseComponent (vueComponentOptions, {
} }
}, },
detached () { detached () {
this.$vm.$destroy(); this.$vm && this.$vm.$destroy();
} }
}, },
pageLifetimes: { pageLifetimes: {
......
...@@ -1418,7 +1418,7 @@ function parseBaseComponent (vueComponentOptions, { ...@@ -1418,7 +1418,7 @@ function parseBaseComponent (vueComponentOptions, {
} }
}, },
detached () { detached () {
this.$vm.$destroy(); this.$vm && this.$vm.$destroy();
} }
}, },
pageLifetimes: { pageLifetimes: {
......
...@@ -1583,7 +1583,7 @@ function parseBaseComponent (vueComponentOptions, { ...@@ -1583,7 +1583,7 @@ function parseBaseComponent (vueComponentOptions, {
} }
}, },
detached () { detached () {
this.$vm.$destroy(); this.$vm && this.$vm.$destroy();
} }
}, },
pageLifetimes: { pageLifetimes: {
......
...@@ -1371,7 +1371,7 @@ function parseBaseComponent (vueComponentOptions, { ...@@ -1371,7 +1371,7 @@ function parseBaseComponent (vueComponentOptions, {
} }
}, },
detached () { detached () {
this.$vm.$destroy(); this.$vm && this.$vm.$destroy();
} }
}, },
pageLifetimes: { pageLifetimes: {
......
...@@ -16,29 +16,29 @@ describe('codegen', () => { ...@@ -16,29 +16,29 @@ describe('codegen', () => {
it('generate directive', () => { it('generate directive', () => {
assertCodegen( assertCodegen(
'<p v-custom1:[arg1].modifier="value1" v-custom2></p>', '<p v-custom1:[arg1].modifier="value1" v-custom2></p>',
`with(this){return _c('v-uni-view',{attrs:{"_i":0}})}` `with(this){return _c('p',{attrs:{"_i":0}})}`
) )
}) })
it('generate v-for directive', () => { it('generate v-for directive', () => {
assertCodegen( assertCodegen(
'<div><template v-for="item in items"><div></div><div></div></template></div>', '<div><template v-for="item in items"><div></div><div></div></template></div>',
`with(this){return _c('v-uni-view',{attrs:{"_i":0}},[_l((_$g(1,'f')),function(item,$10,$20,$30){return [_c('v-uni-view',{key:item['k0'],attrs:{"_i":("2-"+$30)}}),_c('v-uni-view',{key:item['k1'],attrs:{"_i":("3-"+$30)}})]})],2)}` `with(this){return _c('div',{attrs:{"_i":0}},[_l((_$g(1,'f')),function(item,$10,$20,$30){return [_c('div',{key:item['k0'],attrs:{"_i":("2-"+$30)}}),_c('div',{key:item['k1'],attrs:{"_i":("3-"+$30)}})]})],2)}`
) )
assertCodegen( assertCodegen(
'<div><template v-for="item in items"><span v-if="item.sub"></span></template></div>', '<div><template v-for="item in items"><span v-if="item.sub"></span></template></div>',
`with(this){return _c('v-uni-view',{attrs:{"_i":0}},[_l((_$g(1,'f')),function(item,$10,$20,$30){return [(_$g(("2-"+$30),'i'))?_c('v-uni-label',{key:item['k0'],attrs:{"_i":("2-"+$30)}}):_e()]})],2)}` `with(this){return _c('div',{attrs:{"_i":0}},[_l((_$g(1,'f')),function(item,$10,$20,$30){return [(_$g(("2-"+$30),'i'))?_c('span',{key:item['k0'],attrs:{"_i":("2-"+$30)}}):_e()]})],2)}`
) )
}) })
it('generate events with multiple statements', () => { it('generate events with multiple statements', () => {
assertCodegen( assertCodegen(
'<div>A{{ d | e | f }}B{{text}}C</div>', '<div>A{{ d | e | f }}B{{text}}C</div>',
`with(this){return _c('v-uni-view',{attrs:{"_i":0}},[_v("A"+(_$g(0,'t0'))+"B"+(_$g(0,'t1'))+"C")])}` `with(this){return _c('div',{attrs:{"_i":0}},[_v("A"+(_$g(0,'t0'))+"B"+(_$g(0,'t1'))+"C")])}`
) )
}) })
it('generate slot fallback content', () => { it('generate slot fallback content', () => {
assertCodegen( assertCodegen(
'<div><slot><div>{{hi}}</div></slot></div>', '<div><slot><div>{{hi}}</div></slot></div>',
`with(this){return _c('v-uni-view',{attrs:{"_i":0}},[_t("default",[_c('v-uni-view',{attrs:{"_i":2}},[_v((_$g(2,'t0')))])],{"_i":1})],2)}` `with(this){return _c('div',{attrs:{"_i":0}},[_t("default",[_c('div',{attrs:{"_i":2}},[_v((_$g(2,'t0')))])],{"_i":1})],2)}`
) )
}) })
it('generate v-slot', () => { it('generate v-slot', () => {
...@@ -60,14 +60,14 @@ describe('codegen', () => { ...@@ -60,14 +60,14 @@ describe('codegen', () => {
it('generate wxs props', () => { it('generate wxs props', () => {
assertCodegen( assertCodegen(
'<p :change:prop="swipe.sizeReady" :prop="pos" @touchstart="swipe.touchstart" @touchmove="swipe.touchmove" @touchend="swipe.touchend" @change="change"></p>', '<p :change:prop="swipe.sizeReady" :prop="pos" @touchstart="swipe.touchstart" @touchmove="swipe.touchmove" @touchend="swipe.touchend" @change="change"></p>',
`with(this){return _c('v-uni-view',{wxsProps:{"change:prop":"pos"},attrs:{"change:prop":swipe.sizeReady,"prop":_$gc(0,'change:pos'),"_i":0},on:{"touchstart":function($event){$event = $handleWxsEvent($event);swipe.touchstart($event, $getComponentDescriptor())},"touchmove":function($event){$event = $handleWxsEvent($event);swipe.touchmove($event, $getComponentDescriptor())},"touchend":function($event){$event = $handleWxsEvent($event);swipe.touchend($event, $getComponentDescriptor())},"change":function($event){return $handleViewEvent($event)}}})}` `with(this){return _c('p',{wxsProps:{"change:prop":"pos"},attrs:{"change:prop":swipe.sizeReady,"prop":_$gc(0,'change:pos'),"_i":0},on:{"touchstart":function($event){$event = $handleWxsEvent($event);swipe.touchstart($event, $getComponentDescriptor())},"touchmove":function($event){$event = $handleWxsEvent($event);swipe.touchmove($event, $getComponentDescriptor())},"touchend":function($event){$event = $handleWxsEvent($event);swipe.touchend($event, $getComponentDescriptor())},"change":function($event){return $handleViewEvent($event)}}})}`
) )
}) })
// TODO 后续优化dataset // TODO 后续优化dataset
// it('generate dataset', () => { // it('generate dataset', () => {
// assertCodegen( // assertCodegen(
// '<view data-a="1" :data-b="b"></view>', // '<view data-a="1" :data-b="b"></view>',
// `with(this){return _c('v-uni-view',{attrs:{"_i":0}})}` // `with(this){return _c('div',{attrs:{"_i":0}})}`
// ) // )
// }) // })
it('generate dataset', () => { it('generate dataset', () => {
......
...@@ -209,11 +209,11 @@ function handleViewEvents (events) { ...@@ -209,11 +209,11 @@ function handleViewEvents (events) {
function genVModel (el, isScopedSlot) { function genVModel (el, isScopedSlot) {
if (el.model) { if (el.model) {
el.model.value = createGenVar(el.attrsMap[ID], isScopedSlot)('v-model', el.model.value) el.model.value = createGenVar(el.attrsMap[ID], isScopedSlot)('v-model', el.model.value)
if (el.tag === 'v-uni-input' || el.tag === 'v-uni-textarea') { // if (el.tag === 'v-uni-input' || el.tag === 'v-uni-textarea') {
el.model.callback = `function($$v){$handleVModelEvent(${el.attrsMap[ID]},$$v)}` // el.model.callback = `function($$v){$handleVModelEvent(${el.attrsMap[ID]},$$v)}`
} else { // } else {
el.model.callback = `function(){}` el.model.callback = `function(){}`
} // }
} }
} }
......
...@@ -110,6 +110,15 @@ const v3 = { ...@@ -110,6 +110,15 @@ const v3 = {
}] }]
}) })
if (isAppService) {
rules.push({
test: [/\.css$/, /\.p(ost)?css$/, /\.scss$/, /\.sass$/, /\.less$/, /\.styl(us)?$/],
use: [{
loader: path.resolve(__dirname, '../../packages/webpack-uni-app-loader/service/style.js')
}]
})
}
const entry = {} const entry = {}
if (isAppService) { if (isAppService) {
entry['app-service'] = path.resolve(process.env.UNI_INPUT_DIR, getMainEntry()) entry['app-service'] = path.resolve(process.env.UNI_INPUT_DIR, getMainEntry())
...@@ -281,6 +290,12 @@ const v3 = { ...@@ -281,6 +290,12 @@ const v3 = {
} }
} }
if (isAppService) { // service 层移除 css 相关
['css', 'postcss', 'scss', 'sass', 'less', 'stylus'].forEach(cssLang => {
webpackConfig.module.rules.delete(cssLang)
})
}
webpackConfig.plugins.delete('hmr') webpackConfig.plugins.delete('hmr')
webpackConfig.plugins.delete('html') webpackConfig.plugins.delete('html')
webpackConfig.plugins.delete('copy') webpackConfig.plugins.delete('copy')
......
module.exports = function(source, map) {
console.warn(
`App平台 v3 模式暂不支持在 js 文件中引用"${this._module && this._module.rawRequest || this.resourcePath}"`
)
return ''
}
...@@ -103,7 +103,7 @@ module.exports = function(source, map) { ...@@ -103,7 +103,7 @@ module.exports = function(source, map) {
import 'uni-pages?${JSON.stringify({type:'view'})}' import 'uni-pages?${JSON.stringify({type:'view'})}'
function initView(){ function initView(){
${getStylesCode(this)} ${getStylesCode(this)}
injectStyles() typeof injectStyles ==='function' && injectStyles()
${getDefineComponents(parseComponents(source, traverse)).join('\n')} ${getDefineComponents(parseComponents(source, traverse)).join('\n')}
UniViewJSBridge.publishHandler('webviewReady') UniViewJSBridge.publishHandler('webviewReady')
} }
......
...@@ -50,7 +50,7 @@ function getNodeInfo (el, fields) { ...@@ -50,7 +50,7 @@ function getNodeInfo (el, fields) {
info.left = rect.left info.left = rect.left
info.right = rect.right info.right = rect.right
info.top = rect.top - top info.top = rect.top - top
info.bottom = rect.bottom info.bottom = rect.bottom - top
} }
if (fields.size) { if (fields.size) {
info.width = rect.width info.width = rect.width
......
...@@ -77,7 +77,7 @@ export default function parseBaseComponent (vueComponentOptions, { ...@@ -77,7 +77,7 @@ export default function parseBaseComponent (vueComponentOptions, {
} }
}, },
detached () { detached () {
this.$vm.$destroy() this.$vm && this.$vm.$destroy()
} }
}, },
pageLifetimes: { pageLifetimes: {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册