Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
0596d62d
U
uni-app
项目概览
DCloud
/
uni-app
2 个月 前同步成功
通知
718
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0596d62d
编写于
12月 27, 2019
作者:
fxy060608
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev' of
https://github.com/dcloudio/uni-app
into alpha
上级
bb5a77cc
76981422
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
197 addition
and
93 deletion
+197
-93
packages/vue-cli-plugin-uni/lib/mp.js
packages/vue-cli-plugin-uni/lib/mp.js
+0
-4
packages/vue-cli-plugin-uni/lib/scoped.js
packages/vue-cli-plugin-uni/lib/scoped.js
+0
-83
packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/MODIFY.md
...ugin-uni/packages/@vue/component-compiler-utils/MODIFY.md
+2
-1
packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/dist/stylePlugins/scoped.js
...@vue/component-compiler-utils/dist/stylePlugins/scoped.js
+10
-3
src/platforms/app-plus/view/components/ad/index.vue
src/platforms/app-plus/view/components/ad/index.vue
+182
-0
src/platforms/app-plus/view/framework/plugins/data.js
src/platforms/app-plus/view/framework/plugins/data.js
+3
-2
未找到文件。
packages/vue-cli-plugin-uni/lib/mp.js
浏览文件 @
0596d62d
const
path
=
require
(
'
path
'
)
const
webpack
=
require
(
'
webpack
'
)
const
moduleAlias
=
require
(
'
module-alias
'
)
// TODO 重写 vue scoped(若升级 vue 编译器,需要确认该文件路径是否发生变化)
moduleAlias
.
addAlias
(
'
./stylePlugins/scoped
'
,
path
.
resolve
(
__dirname
,
'
./scoped.js
'
))
const
{
parseEntry
,
getMainEntry
,
...
...
packages/vue-cli-plugin-uni/lib/scoped.js
已删除
100644 → 0
浏览文件 @
bb5a77cc
'
use strict
'
Object
.
defineProperty
(
exports
,
'
__esModule
'
,
{
value
:
true
})
const
postcss
=
require
(
'
postcss
'
)
// postcss-selector-parser does have typings but it's problematic to work with.
const
selectorParser
=
require
(
'
postcss-selector-parser
'
)
exports
.
default
=
postcss
.
plugin
(
'
add-id
'
,
(
options
)
=>
(
root
)
=>
{
const
id
=
options
const
keyframes
=
Object
.
create
(
null
)
root
.
each
(
function
rewriteSelector
(
node
)
{
if
(
!
node
.
selector
)
{
// handle media queries
if
(
node
.
type
===
'
atrule
'
)
{
if
(
node
.
name
===
'
media
'
||
node
.
name
===
'
supports
'
)
{
node
.
each
(
rewriteSelector
)
}
else
if
(
/-
?
keyframes$/
.
test
(
node
.
name
))
{
// register keyframes
keyframes
[
node
.
params
]
=
node
.
params
=
node
.
params
+
'
-
'
+
id
}
}
return
}
node
.
selector
=
selectorParser
((
selectors
)
=>
{
selectors
.
each
((
selector
)
=>
{
let
node
=
null
selector
.
each
((
n
)
=>
{
// ">>>" combinator
// and /deep/ alias for >>>, since >>> doesn't work in SASS
if
(
n
.
type
===
'
combinator
'
&&
(
n
.
value
===
'
>>>
'
||
n
.
value
===
'
/deep/
'
))
{
n
.
value
=
'
'
n
.
spaces
.
before
=
n
.
spaces
.
after
=
''
return
false
}
if
(
n
.
type
!==
'
pseudo
'
&&
n
.
type
!==
'
combinator
'
)
{
node
=
n
}
})
if
(
node
)
{
node
.
spaces
.
after
=
''
}
else
{
// For deep selectors & standalone pseudo selectors,
// the attribute selectors are prepended rather than appended.
// So all leading spaces must be eliminated to avoid problems.
selector
.
first
.
spaces
.
before
=
''
}
selector
.
insertAfter
(
node
,
selectorParser
.
className
({
value
:
id
}))
})
}).
processSync
(
node
.
selector
)
})
// If keyframes are found in this <style>, find and rewrite animation names
// in declarations.
// Caveat: this only works for keyframes and animation rules in the same
// <style> element.
if
(
Object
.
keys
(
keyframes
).
length
)
{
root
.
walkDecls
(
decl
=>
{
// individual animation-name declaration
if
(
/^
(
-
\w
+-
)?
animation-name$/
.
test
(
decl
.
prop
))
{
decl
.
value
=
decl
.
value
.
split
(
'
,
'
)
.
map
(
v
=>
keyframes
[
v
.
trim
()]
||
v
.
trim
())
.
join
(
'
,
'
)
}
// shorthand
if
(
/^
(
-
\w
+-
)?
animation$/
.
test
(
decl
.
prop
))
{
decl
.
value
=
decl
.
value
.
split
(
'
,
'
)
.
map
(
v
=>
{
const
vals
=
v
.
trim
().
split
(
/
\s
+/
)
const
i
=
vals
.
findIndex
(
val
=>
keyframes
[
val
])
if
(
i
!==
-
1
)
{
vals
.
splice
(
i
,
1
,
keyframes
[
vals
[
i
]])
return
vals
.
join
(
'
'
)
}
else
{
return
v
}
})
.
join
(
'
,
'
)
}
})
}
})
packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/MODIFY.md
浏览文件 @
0596d62d
dist/compileTemplate
dist/parse
dist/parseCustomBlocks
dist/stylePlugins/scoped.js
\ No newline at end of file
packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/dist/stylePlugins/scoped.js
浏览文件 @
0596d62d
...
...
@@ -58,9 +58,16 @@ exports.default = postcss.plugin('add-id', (options) => (root) => {
// So all leading spaces must be eliminated to avoid problems.
selector
.
first
.
spaces
.
before
=
''
;
}
// fixed by xxxxxx (h5 平台继续使用 attribute,其他平台使用 className)
if
(
process
.
env
.
UNI_PLATFORM
===
'
h5
'
){
selector
.
insertAfter
(
node
,
selectorParser
.
attribute
({
attribute
:
id
}));
}
else
{
selector
.
insertAfter
(
node
,
selectorParser
.
className
({
value
:
id
}));
}
});
}).
processSync
(
node
.
selector
);
});
...
...
src/platforms/app-plus/view/components/ad/index.vue
0 → 100644
浏览文件 @
0596d62d
<
template
>
<uni-ad
v-bind=
"attrs"
v-on=
"$listeners"
>
<div
ref=
"container"
class=
"uni-ad-container"
/>
</uni-ad>
</
template
>
<
script
>
import
{
subscriber
}
from
'
uni-mixins
'
import
native
from
'
../../mixins/native
'
const
methods
=
[
'
draw
'
]
const
attrs
=
[
'
adpid
'
,
'
data
'
]
export
default
{
name
:
'
Ad
'
,
mixins
:
[
subscriber
,
native
],
props
:
{
adpid
:
{
type
:
[
Number
,
String
],
default
:
''
},
data
:
{
type
:
Object
,
default
:
null
}
},
data
()
{
return
{
hidden
:
false
}
},
computed
:
{
attrs
()
{
const
obj
=
{}
attrs
.
forEach
(
key
=>
{
let
val
=
this
.
$props
[
key
]
val
=
key
===
'
src
'
?
this
.
$getRealPath
(
val
)
:
val
obj
[
key
.
replace
(
/
[
A-Z
]
/g
,
str
=>
'
-
'
+
str
.
toLowerCase
())]
=
val
})
return
obj
}
},
watch
:
{
hidden
(
val
)
{
this
.
adView
&&
this
.
adView
[
val
?
'
hide
'
:
'
show
'
]()
},
adpid
(
val
)
{
if
(
val
)
{
this
.
_loadData
(
val
)
}
},
data
(
val
)
{
if
(
val
)
{
this
.
_fillData
(
val
)
}
}
},
mounted
()
{
let
adStyle
=
Object
.
assign
({
id
:
'
AdView
'
+
Date
.
now
()
},
this
.
position
)
let
adView
=
this
.
adView
=
plus
.
ad
.
createAdView
(
adStyle
)
adView
.
interceptTouchEvent
(
false
)
plus
.
webview
.
currentWebview
().
append
(
adView
)
if
(
this
.
hidden
)
{
adView
.
hide
()
}
this
.
$watch
(
'
attrs
'
,
()
=>
{
this
.
_request
()
},
{
deep
:
true
})
this
.
$watch
(
'
position
'
,
()
=>
{
this
.
adView
&&
this
.
adView
.
setStyle
(
this
.
position
)
},
{
deep
:
true
})
// 模板渲染有效
adView
.
setDislikeListener
&&
adView
.
setDislikeListener
((
data
)
=>
{
this
.
adView
&&
this
.
adView
.
close
()
this
.
$refs
.
container
.
style
.
height
=
'
0px
'
this
.
_updateView
()
this
.
$trigger
(
'
close
'
,
{},
data
)
})
adView
.
setRenderingListener
&&
adView
.
setRenderingListener
((
data
)
=>
{
if
(
data
.
result
===
0
)
{
this
.
$refs
.
container
.
style
.
height
=
data
.
height
+
'
px
'
this
.
_updateView
()
}
else
{
this
.
$trigger
(
'
error
'
,
{},
{
errCode
:
data
.
result
})
}
})
// 仅 Android 下载类广告
adView
.
setDownloadListener
&&
adView
.
setDownloadListener
((
data
)
=>
{
this
.
$trigger
(
'
downloadchange
'
,
{},
data
)
})
this
.
_request
()
},
beforeDestroy
()
{
delete
this
.
adView
},
methods
:
{
_handleSubscribe
({
type
,
data
=
{}
})
{
if
(
methods
.
includes
(
type
))
{
this
.
adView
&&
this
.
adView
[
type
](
data
)
}
},
_request
()
{
if
(
!
this
.
adView
)
{
return
}
if
(
this
.
data
)
{
this
.
_fillData
(
this
.
data
)
}
else
if
(
this
.
adpid
)
{
this
.
_loadData
()
}
},
_loadData
(
adpid
)
{
plus
.
ad
.
getAds
({
adpid
:
adpid
||
this
.
adpid
,
count
:
1
,
width
:
this
.
position
.
width
},
(
res
)
=>
{
this
.
_fillData
(
res
[
0
])
},
(
err
)
=>
{
this
.
$trigger
(
'
error
'
,
{},
{
errCode
:
err
.
code
,
errMsg
:
err
.
message
})
})
},
_fillData
(
data
)
{
this
.
adView
.
renderingBind
(
data
)
// const height = plus.ad.measureAdHeight(this.position.width.replace('px', ''), data)
// this.$refs.container.style.height = height + 'px'
this
.
$trigger
(
'
load
'
,
{},
{})
},
_updateView
()
{
window
.
dispatchEvent
(
new
CustomEvent
(
'
updateview
'
))
}
}
}
</
script
>
<
style
>
uni-ad
{
display
:
block
;
overflow
:
hidden
;
}
uni-ad
[
hidden
]
{
display
:
none
;
}
uni-ad
.uni-ad-container
{
width
:
100%
;
min-height
:
1px
;
}
</
style
>
src/platforms/app-plus/view/framework/plugins/data.js
浏览文件 @
0596d62d
...
...
@@ -69,7 +69,7 @@ function broadcast (vm, componentName, eventName, ...params) {
})
}
const
NATIVE_COMPONENTS
=
[
'
Camera
'
,
'
LivePlayer
'
,
'
LivePusher
'
,
'
Map
'
,
'
Video
'
,
'
CoverView
'
,
'
CoverImage
'
]
const
NATIVE_COMPONENTS
=
[
'
Camera
'
,
'
LivePlayer
'
,
'
LivePusher
'
,
'
Map
'
,
'
Video
'
,
'
CoverView
'
,
'
CoverImage
'
,
'
Ad
'
]
function
updateView
()
{
const
pages
=
getCurrentPages
()
...
...
@@ -82,6 +82,7 @@ function updateView () {
}
window
.
addEventListener
(
'
resize
'
,
updateView
)
window
.
addEventListener
(
'
updateview
'
,
updateView
)
function
vdSync
({
data
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录