Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
4908babc
U
uni-app
项目概览
DCloud
/
uni-app
6 个月 前同步成功
通知
751
Star
38709
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
8
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
8
Issue
8
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4908babc
编写于
8月 22, 2019
作者:
fxy060608
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev' of
https://github.com/dcloudio/uni-app
into dev
上级
2c706286
d28b01d3
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
189 addition
and
116 deletion
+189
-116
packages/uni-stat/dist/index.js
packages/uni-stat/dist/index.js
+49
-23
packages/uni-stat/package.json
packages/uni-stat/package.json
+1
-1
packages/uni-stat/src/stat.js
packages/uni-stat/src/stat.js
+49
-23
packages/uni-template-compiler/__tests__/compiler-extra.spec.js
...es/uni-template-compiler/__tests__/compiler-extra.spec.js
+6
-3
packages/uni-template-compiler/__tests__/demo.js
packages/uni-template-compiler/__tests__/demo.js
+4
-1
packages/uni-template-compiler/lib/index.js
packages/uni-template-compiler/lib/index.js
+28
-18
packages/vue-cli-plugin-uni/packages/webpack-custom-block-loader/index.js
...-plugin-uni/packages/webpack-custom-block-loader/index.js
+44
-44
packages/webpack-uni-mp-loader/lib/template-new.js
packages/webpack-uni-mp-loader/lib/template-new.js
+8
-3
未找到文件。
packages/uni-stat/dist/index.js
浏览文件 @
4908babc
...
...
@@ -446,16 +446,21 @@ class Util {
},
0
);
}
_sendReportRequest
(
options
)
{
this
.
_navigationBarTitle
.
lt
=
'
1
'
;
let
query
=
options
.
query
&&
JSON
.
stringify
(
options
.
query
)
!==
'
{}
'
?
'
?
'
+
JSON
.
stringify
(
options
.
query
)
:
''
;
this
.
statData
.
lt
=
'
1
'
;
this
.
statData
.
url
=
options
.
path
+
query
;
this
.
statData
.
url
=
(
options
.
path
+
query
)
||
''
;
this
.
statData
.
t
=
getTime
();
this
.
statData
.
sc
=
getScene
(
options
.
scene
);
this
.
statData
.
fvts
=
getFirstVisitTime
();
this
.
statData
.
lvts
=
getLastVisitTime
();
this
.
statData
.
tvc
=
getTotalVisitCount
();
this
.
getNetworkInfo
();
if
(
getPlatformName
()
===
'
n
'
)
{
this
.
getProperty
();
}
else
{
this
.
getNetworkInfo
();
}
}
_sendPageRequest
(
opt
)
{
...
...
@@ -479,6 +484,13 @@ class Util {
t
:
getTime
(),
p
:
this
.
statData
.
p
};
if
(
getPlatformName
()
===
'
n
'
&&
this
.
statData
.
p
===
'
a
'
)
{
setTimeout
(()
=>
{
this
.
request
(
options
);
},
200
);
return
}
this
.
request
(
options
);
}
...
...
@@ -499,6 +511,12 @@ class Util {
t
:
getTime
(),
p
:
this
.
statData
.
p
};
if
(
getPlatformName
()
===
'
n
'
&&
this
.
statData
.
p
===
'
a
'
)
{
setTimeout
(()
=>
{
this
.
request
(
options
,
type
);
},
200
);
return
}
this
.
request
(
options
,
type
);
}
_sendEventRequest
({
...
...
@@ -531,6 +549,13 @@ class Util {
});
}
getProperty
()
{
plus
.
runtime
.
getProperty
(
plus
.
runtime
.
appid
,
(
wgtinfo
)
=>
{
this
.
statData
.
v
=
wgtinfo
.
version
||
''
;
this
.
getNetworkInfo
();
});
}
getLocation
()
{
if
(
statConfig
.
getLocation
)
{
uni
.
getLocation
({
...
...
@@ -618,28 +643,29 @@ class Util {
return
}
setTimeout
(()
=>
{
uni
.
request
({
url
:
STAT_URL
,
method
:
'
POST
'
,
data
:
optionsData
,
success
:
()
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request success
'
);
}
},
fail
:
(
e
)
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request fail
'
,
e
);
}
if
(
++
this
.
_retry
<
3
)
{
setTimeout
(()
=>
{
this
.
request
(
data
);
},
1000
);
}
uni
.
request
({
url
:
STAT_URL
,
method
:
'
POST
'
,
// header: {
// 'content-type': 'application/json' // 默认值
// },
data
:
optionsData
,
success
:
()
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request success
'
);
}
});
},
200
);
},
fail
:
(
e
)
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request fail
'
,
e
);
}
if
(
++
this
.
_retry
<
3
)
{
setTimeout
(()
=>
{
this
.
request
(
data
);
},
1000
);
}
}
});
}
/**
...
...
packages/uni-stat/package.json
浏览文件 @
4908babc
{
"name"
:
"@dcloudio/uni-stat"
,
"version"
:
"0.0.11
1
"
,
"version"
:
"0.0.11
3
"
,
"description"
:
""
,
"main"
:
"dist/index.js"
,
"scripts"
:
{
...
...
packages/uni-stat/src/stat.js
浏览文件 @
4908babc
...
...
@@ -181,16 +181,21 @@ class Util {
},
0
)
}
_sendReportRequest
(
options
)
{
this
.
_navigationBarTitle
.
lt
=
'
1
'
;
let
query
=
options
.
query
&&
JSON
.
stringify
(
options
.
query
)
!==
'
{}
'
?
'
?
'
+
JSON
.
stringify
(
options
.
query
)
:
''
;
this
.
statData
.
lt
=
'
1
'
;
this
.
statData
.
url
=
options
.
path
+
query
;
this
.
statData
.
url
=
(
options
.
path
+
query
)
||
''
;
this
.
statData
.
t
=
getTime
();
this
.
statData
.
sc
=
getScene
(
options
.
scene
);
this
.
statData
.
fvts
=
getFirstVisitTime
();
this
.
statData
.
lvts
=
getLastVisitTime
();
this
.
statData
.
tvc
=
getTotalVisitCount
();
this
.
getNetworkInfo
();
if
(
getPlatformName
()
===
'
n
'
)
{
this
.
getProperty
();
}
else
{
this
.
getNetworkInfo
();
}
}
_sendPageRequest
(
opt
)
{
...
...
@@ -214,6 +219,13 @@ class Util {
t
:
getTime
(),
p
:
this
.
statData
.
p
}
if
(
getPlatformName
()
===
'
n
'
&&
this
.
statData
.
p
===
'
a
'
)
{
setTimeout
(()
=>
{
this
.
request
(
options
);
},
200
)
return
}
this
.
request
(
options
);
}
...
...
@@ -234,6 +246,12 @@ class Util {
t
:
getTime
(),
p
:
this
.
statData
.
p
}
if
(
getPlatformName
()
===
'
n
'
&&
this
.
statData
.
p
===
'
a
'
)
{
setTimeout
(()
=>
{
this
.
request
(
options
,
type
)
},
200
)
return
}
this
.
request
(
options
,
type
)
}
_sendEventRequest
({
...
...
@@ -266,6 +284,13 @@ class Util {
});
}
getProperty
()
{
plus
.
runtime
.
getProperty
(
plus
.
runtime
.
appid
,
(
wgtinfo
)
=>
{
this
.
statData
.
v
=
wgtinfo
.
version
||
''
;
this
.
getNetworkInfo
();
});
}
getLocation
()
{
if
(
statConfig
.
getLocation
)
{
uni
.
getLocation
({
...
...
@@ -353,28 +378,29 @@ class Util {
return
}
setTimeout
(()
=>
{
uni
.
request
({
url
:
STAT_URL
,
method
:
'
POST
'
,
data
:
optionsData
,
success
:
()
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request success
'
);
}
},
fail
:
(
e
)
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request fail
'
,
e
);
}
if
(
++
this
.
_retry
<
3
)
{
setTimeout
(()
=>
{
this
.
request
(
data
);
},
1000
);
}
uni
.
request
({
url
:
STAT_URL
,
method
:
'
POST
'
,
// header: {
// 'content-type': 'application/json' // 默认值
// },
data
:
optionsData
,
success
:
()
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request success
'
);
}
});
},
200
)
},
fail
:
(
e
)
=>
{
if
(
process
.
env
.
NODE_ENV
===
'
development
'
)
{
console
.
log
(
'
stat request fail
'
,
e
);
}
if
(
++
this
.
_retry
<
3
)
{
setTimeout
(()
=>
{
this
.
request
(
data
);
},
1000
);
}
}
});
}
/**
...
...
packages/uni-template-compiler/__tests__/compiler-extra.spec.js
浏览文件 @
4908babc
...
...
@@ -14,14 +14,17 @@ function assertCodegen (template, templateCode, renderCode = `with(this){}`, opt
expect
(
res
.
render
).
toBe
(
renderCode
)
}
describe
(
'
mp:compiler-extra
'
,
()
=>
{
describe
(
'
mp:compiler-extra
'
,
()
=>
{
it
(
'
generate mp filter
'
,
()
=>
{
assertCodegen
(
/* eslint-disable no-template-curly-in-string */
`<view @touchmove="a.touchmove">{{t.a}}{{t['a']}}{{t.a(b)}}{{t['a'](b)}}{{u.t.a(b)}}{{u.t.a}}</view>`
,
`<view bindtouchmove="{{a.touchmove}}">{{t.a+t[
\'a\']+t.a(b)+t[\'a\
'](b)+$root.g0+u.t.a}}</view>`
,
`<view bindtouchmove="{{a.touchmove}}">{{t.a+t[
'a']+t.a(b)+t['a
'](b)+$root.g0+u.t.a}}</view>`
,
'
with(this){var g0=u.t.a(b);$mp.data=Object.assign({},{$root:{g0:g0}})}
'
,
{
filterModules
:
[
'
t
'
,
'
a
'
]
filterModules
:
{
t
:
{},
a
:
{}
}
}
)
})
...
...
packages/uni-template-compiler/__tests__/demo.js
浏览文件 @
4908babc
...
...
@@ -10,7 +10,10 @@ const res = compiler.compile(
isTest
:
true
,
platform
:
'
mp-weixin
'
},
filterModules
:
[
'
t
'
,
'
a
'
]
filterModules
:
{
t
:
{},
a
:
{}
}
})
// ---BEGIN:JSON---{"n":"v"}---END:JSON---
console
.
log
(
res
)
packages/uni-template-compiler/lib/index.js
浏览文件 @
4908babc
...
...
@@ -39,8 +39,8 @@ module.exports = {
options
.
mp
.
resourcePath
=
options
.
resourcePath
options
.
mp
.
globalUsingComponents
=
options
.
globalUsingComponents
||
Object
.
create
(
null
)
options
.
mp
.
filterModules
=
options
.
filterModules
||
[]
options
.
mp
.
filterModules
=
Object
.
keys
(
options
.
filterModules
||
{})
// (可用的原生微信小程序组件,global+scoped)
options
.
mp
.
wxComponents
=
options
.
wxComponents
||
Object
.
create
(
null
)
...
...
@@ -88,21 +88,31 @@ at ${resourcePath}.vue:1`)
})
/**
* TODO
* 方案0.最佳方案是在 loader 中直接 emitFile,但目前 vue template-loader 不好介入,自定义的 compiler 结果又无法顺利返回给 loader
* 方案1.通过 loader 传递 emitFile 来提交生成 wxml,需要一个 template loader 来给自定义 compier 增加 emitFile
* 方案2.缓存 wxml 内容,由 plugin 生成 assets 来提交生成 wxml
* ...暂时使用方案1
*/
* TODO
* 方案0.最佳方案是在 loader 中直接 emitFile,但目前 vue template-loader 不好介入,自定义的 compiler 结果又无法顺利返回给 loader
* 方案1.通过 loader 传递 emitFile 来提交生成 wxml,需要一个 template loader 来给自定义 compier 增加 emitFile
* 方案2.缓存 wxml 内容,由 plugin 生成 assets 来提交生成 wxml
* ...暂时使用方案1
*/
if
(
options
.
emitFile
)
{
if
(
options
.
updateSpecialMethods
)
{
options
.
updateSpecialMethods
(
resourcePath
,
[...
res
.
specialMethods
])
}
const
filterTemplate
=
[]
options
.
mp
.
filterModules
.
forEach
(
name
=>
{
const
filterTag
=
options
.
filterTagName
const
filterModule
=
options
.
filterModules
[
name
]
if
(
filterModule
.
content
)
{
filterTemplate
.
push
(
`<
${
filterTag
}
module="
${
name
}
">
${
filterModule
.
content
}
</
${
filterTag
}
>`
)
}
})
if
(
process
.
UNI_ENTRY
[
resourcePath
]
&&
process
.
env
.
UNI_PLATFORM
!==
'
app-plus
'
&&
process
.
env
.
UNI_PLATFORM
!==
'
h5
'
process
.
env
.
UNI_PLATFORM
!==
'
app-plus
'
&&
process
.
env
.
UNI_PLATFORM
!==
'
h5
'
)
{
// 检查是否启用 shadow
let
colorType
=
false
...
...
@@ -112,12 +122,12 @@ at ${resourcePath}.vue:1`)
const
windowJson
=
JSON
.
parse
(
pageJsonStr
)
if
(
process
.
env
.
UNI_PLATFORM
===
'
mp-alipay
'
)
{
colorType
=
windowJson
.
allowsBounceVertical
===
'
NO
'
&&
windowJson
.
navigationBarShadow
&&
windowJson
.
navigationBarShadow
.
colorType
windowJson
.
navigationBarShadow
&&
windowJson
.
navigationBarShadow
.
colorType
}
else
{
colorType
=
windowJson
.
disableScroll
&&
windowJson
.
navigationBarShadow
&&
windowJson
.
navigationBarShadow
.
colorType
windowJson
.
navigationBarShadow
&&
windowJson
.
navigationBarShadow
.
colorType
}
}
catch
(
e
)
{}
}
...
...
@@ -142,8 +152,8 @@ at ${resourcePath}.vue:1`)
if
(
res
.
generic
&&
res
.
generic
.
length
&&
options
.
updateGenericComponents
res
.
generic
.
length
&&
options
.
updateGenericComponents
)
{
options
.
updateGenericComponents
(
resourcePath
,
...
...
@@ -152,8 +162,8 @@ at ${resourcePath}.vue:1`)
}
if
(
res
.
componentGenerics
&&
Object
.
keys
(
res
.
componentGenerics
).
length
&&
options
.
updateComponentGenerics
Object
.
keys
(
res
.
componentGenerics
).
length
&&
options
.
updateComponentGenerics
)
{
options
.
updateComponentGenerics
(
resourcePath
,
...
...
packages/vue-cli-plugin-uni/packages/webpack-custom-block-loader/index.js
浏览文件 @
4908babc
...
...
@@ -2,61 +2,61 @@ const path = require('path')
const
loaderUtils
=
require
(
'
loader-utils
'
)
const
{
parse
parse
}
=
require
(
require
.
resolve
(
'
@vue/component-compiler-utils
'
,
{
paths
:
[
require
.
resolve
(
'
vue-loader
'
)]
paths
:
[
require
.
resolve
(
'
vue-loader
'
)]
}))
// 确保使用的与 vue-loader 一致
const
{
getPlatformFilterTag
getPlatformFilterTag
}
=
require
(
'
@dcloudio/uni-cli-shared/lib/platform
'
)
const
FILTER_TAG
=
getPlatformFilterTag
()
module
.
exports
=
function
(
source
)
{
if
(
!
FILTER_TAG
)
{
return
source
}
const
loaderContext
=
this
const
{
sourceMap
,
rootContext
,
resourcePath
}
=
loaderContext
const
options
=
loaderUtils
.
getOptions
(
loaderContext
)
||
{}
const
filename
=
path
.
basename
(
resourcePath
)
const
context
=
rootContext
||
process
.
cwd
()
const
sourceRoot
=
path
.
dirname
(
path
.
relative
(
context
,
resourcePath
))
// 使用 @vue/component-compiler-utils 来处理,共用 cache
const
descriptor
=
parse
({
source
,
compiler
:
options
.
compiler
,
filename
,
sourceRoot
,
needMap
:
sourceMap
})
if
(
!
descriptor
.
template
)
{
return
source
}
const
modules
=
new
Set
()
if
(
!
FILTER_TAG
)
{
return
source
}
const
loaderContext
=
this
const
{
sourceMap
,
rootContext
,
resourcePath
}
=
loaderContext
const
options
=
loaderUtils
.
getOptions
(
loaderContext
)
||
{}
const
filename
=
path
.
basename
(
resourcePath
)
const
context
=
rootContext
||
process
.
cwd
()
const
sourceRoot
=
path
.
dirname
(
path
.
relative
(
context
,
resourcePath
))
// 使用 @vue/component-compiler-utils 来处理,共用 cache
const
descriptor
=
parse
({
source
,
compiler
:
options
.
compiler
,
filename
,
sourceRoot
,
needMap
:
sourceMap
})
if
(
!
descriptor
.
template
)
{
return
source
}
descriptor
.
customBlocks
.
filter
(
block
=>
{
if
(
block
.
type
===
FILTER_TAG
&&
block
.
attrs
.
module
)
{
modules
.
add
(
block
.
attrs
.
module
)
}
})
const
modules
=
Object
.
create
(
null
)
if
(
modules
.
size
)
{
descriptor
.
template
.
attrs
[
'
filter-modules
'
]
=
[...
modules
]
descriptor
.
customBlocks
.
filter
(
block
=>
{
if
(
block
.
type
===
FILTER_TAG
&&
block
.
attrs
.
module
)
{
modules
[
block
.
attrs
.
module
]
=
block
}
// delete customBlocks
descriptor
.
customBlocks
.
length
=
0
})
return
source
if
(
Object
.
keys
(
modules
))
{
descriptor
.
template
.
attrs
[
'
filter-modules
'
]
=
JSON
.
stringify
(
modules
)
}
// delete customBlocks
descriptor
.
customBlocks
.
length
=
0
return
source
}
packages/webpack-uni-mp-loader/lib/template-new.js
浏览文件 @
4908babc
...
...
@@ -18,11 +18,16 @@ const {
updateUsingGlobalComponents
}
=
require
(
'
@dcloudio/uni-cli-shared/lib/cache
'
)
const
{
getPlatformFilterTag
}
=
require
(
'
@dcloudio/uni-cli-shared/lib/platform
'
)
const
{
normalizeNodeModules
}
=
require
(
'
./shared
'
)
const
templateExt
=
getPlatformExts
().
template
const
filterTagName
=
getPlatformFilterTag
()
||
''
module
.
exports
=
function
(
content
)
{
this
.
cacheable
&&
this
.
cacheable
()
...
...
@@ -35,14 +40,14 @@ module.exports = function (content) {
const
wxComponents
=
getWXComponents
(
resourcePath
.
replace
(
path
.
extname
(
resourcePath
),
''
))
const
params
=
loaderUtils
.
parseQuery
(
this
.
resourceQuery
)
const
filterModules
=
(
params
&&
params
[
'
filter-modules
'
]
||
''
).
split
(
'
,
'
)
/* eslint-disable no-mixed-operators */
const
filterModules
=
JSON
.
parse
(
params
&&
params
[
'
filter-modules
'
]
||
'
{}
'
)
Object
.
assign
(
vueLoaderOptions
.
options
.
compilerOptions
,
{
mp
:
{
platform
:
process
.
env
.
UNI_PLATFORM
},
filterModules
,
filterTagName
,
resourcePath
,
emitFile
:
this
.
emitFile
,
wxComponents
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录