@mpxjs/webpack-plugin 2.7.0-beta.2 → 2.7.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dependencies/CommonJsVariableDependency.js +2 -7
- package/lib/dependencies/DynamicEntryDependency.js +5 -1
- package/lib/dependencies/{RecordStaticResourceDependency.js → RecordResourceMapDependency.js} +12 -7
- package/lib/dependencies/RemoveEntryDependency.js +40 -0
- package/lib/dependencies/ResolveDependency.js +8 -7
- package/lib/extractor.js +5 -4
- package/lib/file-loader.js +2 -2
- package/lib/helpers.js +1 -0
- package/lib/index.js +136 -112
- package/lib/json-compiler/helper.js +14 -21
- package/lib/json-compiler/index.js +67 -51
- package/lib/json-compiler/plugin.js +21 -5
- package/lib/loader.js +27 -50
- package/lib/native-loader.js +28 -65
- package/lib/parser.js +1 -2
- package/lib/platform/json/wx/index.js +7 -2
- package/lib/platform/template/wx/component-config/button.js +3 -3
- package/lib/platform/template/wx/component-config/navigator.js +1 -1
- package/lib/resolver/AddEnvPlugin.js +3 -2
- package/lib/resolver/AddModePlugin.js +3 -2
- package/lib/runtime/base.styl +5 -0
- package/lib/runtime/components/web/getInnerListeners.js +51 -45
- package/lib/runtime/components/web/mpx-keep-alive.vue +4 -1
- package/lib/runtime/components/web/mpx-tab-bar-container.vue +2 -2
- package/lib/runtime/optionProcessor.js +5 -20
- package/lib/runtime/stringify.wxs +3 -3
- package/lib/selector.js +3 -6
- package/lib/style-compiler/index.js +4 -5
- package/lib/template-compiler/bind-this.js +4 -4
- package/lib/template-compiler/compiler.js +105 -45
- package/lib/template-compiler/index.js +3 -6
- package/lib/template-compiler/trans-dynamic-class-expr.js +3 -3
- package/lib/utils/const.js +5 -1
- package/lib/utils/eval-json-js.js +31 -0
- package/lib/utils/get-json-content.js +41 -0
- package/lib/utils/resolve.js +13 -0
- package/lib/web/processJSON.js +113 -142
- package/lib/web/processScript.js +30 -24
- package/lib/web/processTemplate.js +56 -40
- package/lib/wxs/i18n-loader.js +1 -3
- package/lib/wxs/loader.js +6 -26
- package/lib/wxs/pre-loader.js +7 -8
- package/lib/wxss/processCss.js +44 -44
- package/package.json +8 -8
- package/lib/built-in-loader.js +0 -49
- package/lib/record-loader.js +0 -11
- package/lib/utils/get-main-compilation.js +0 -6
- package/lib/utils/read-json-for-src.js +0 -34
package/lib/native-loader.js
CHANGED
|
@@ -3,10 +3,11 @@ const JSON5 = require('json5')
|
|
|
3
3
|
const parseRequest = require('./utils/parse-request')
|
|
4
4
|
const config = require('./config')
|
|
5
5
|
const createHelpers = require('./helpers')
|
|
6
|
-
const
|
|
6
|
+
const getJSONContent = require('./utils/get-json-content')
|
|
7
7
|
const async = require('async')
|
|
8
8
|
const matchCondition = require('./utils/match-condition')
|
|
9
9
|
const fixUsingComponent = require('./utils/fix-using-component')
|
|
10
|
+
const { JSON_JS_EXT } = require('./utils/const')
|
|
10
11
|
|
|
11
12
|
module.exports = function (content) {
|
|
12
13
|
this.cacheable()
|
|
@@ -23,7 +24,6 @@ module.exports = function (content) {
|
|
|
23
24
|
const moduleId = 'm' + mpx.pathHash(filePath)
|
|
24
25
|
const { resourcePath, queryObj } = parseRequest(this.resource)
|
|
25
26
|
const mode = mpx.mode
|
|
26
|
-
const defs = mpx.defs
|
|
27
27
|
const globalSrcMode = mpx.srcMode
|
|
28
28
|
const localSrcMode = queryObj.mode
|
|
29
29
|
const packageName = queryObj.packageRoot || mpx.currentPackageRoot || 'main'
|
|
@@ -33,12 +33,10 @@ module.exports = function (content) {
|
|
|
33
33
|
const resourceName = path.join(parsed.dir, parsed.name)
|
|
34
34
|
const isApp = !(pagesMap[resourcePath] || componentsMap[resourcePath])
|
|
35
35
|
const srcMode = localSrcMode || globalSrcMode
|
|
36
|
-
const fs = this._compiler.inputFileSystem
|
|
37
36
|
const typeExtMap = config[srcMode].typeExtMap
|
|
38
37
|
const typeResourceMap = {}
|
|
39
38
|
const autoScope = matchCondition(resourcePath, mpx.autoScopeRules)
|
|
40
39
|
|
|
41
|
-
const EXT_MPX_JSON = '.json.js'
|
|
42
40
|
const CSS_LANG_EXT_MAP = {
|
|
43
41
|
less: '.less',
|
|
44
42
|
stylus: '.styl',
|
|
@@ -46,36 +44,14 @@ module.exports = function (content) {
|
|
|
46
44
|
scss: '.scss'
|
|
47
45
|
}
|
|
48
46
|
|
|
49
|
-
let
|
|
47
|
+
let useJSONJS = false
|
|
50
48
|
let cssLang = ''
|
|
51
49
|
const hasScoped = (queryObj.scoped || autoScope) && mode === 'ali'
|
|
52
50
|
const hasComment = false
|
|
53
51
|
const isNative = true
|
|
54
52
|
|
|
55
|
-
const tryEvalMPXJSON = (callback) => {
|
|
56
|
-
const { rawResourcePath } = parseRequest(typeResourceMap['json'])
|
|
57
|
-
const _src = rawResourcePath
|
|
58
|
-
this.addDependency(_src)
|
|
59
|
-
fs.readFile(_src, (err, raw) => {
|
|
60
|
-
if (err) {
|
|
61
|
-
callback(err)
|
|
62
|
-
} else {
|
|
63
|
-
try {
|
|
64
|
-
const source = raw.toString('utf-8')
|
|
65
|
-
const text = mpxJSON.compileMPXJSONText({ source, defs, filePath: _src })
|
|
66
|
-
callback(null, text)
|
|
67
|
-
} catch (e) {
|
|
68
|
-
callback(e)
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
|
|
74
53
|
const checkFileExists = (extName, callback) => {
|
|
75
|
-
this.resolve(parsed.dir, resourceName + extName,
|
|
76
|
-
err = null
|
|
77
|
-
callback(err, result)
|
|
78
|
-
})
|
|
54
|
+
this.resolve(parsed.dir, resourceName + extName, callback)
|
|
79
55
|
}
|
|
80
56
|
|
|
81
57
|
function checkCSSLangFiles (callback) {
|
|
@@ -89,7 +65,7 @@ module.exports = function (content) {
|
|
|
89
65
|
if (!err && result) {
|
|
90
66
|
results[i] = result
|
|
91
67
|
}
|
|
92
|
-
callback(
|
|
68
|
+
callback()
|
|
93
69
|
})
|
|
94
70
|
}, function (err) {
|
|
95
71
|
for (let i = 0; i < langs.length; i++) {
|
|
@@ -103,14 +79,13 @@ module.exports = function (content) {
|
|
|
103
79
|
})
|
|
104
80
|
}
|
|
105
81
|
|
|
106
|
-
function
|
|
107
|
-
|
|
108
|
-
checkFileExists(EXT_MPX_JSON, (err, result) => {
|
|
82
|
+
function checkJSONJSFile (callback) {
|
|
83
|
+
checkFileExists(JSON_JS_EXT, (err, result) => {
|
|
109
84
|
if (!err && result) {
|
|
110
85
|
typeResourceMap.json = result
|
|
111
|
-
|
|
86
|
+
useJSONJS = true
|
|
112
87
|
}
|
|
113
|
-
callback(
|
|
88
|
+
callback()
|
|
114
89
|
})
|
|
115
90
|
}
|
|
116
91
|
|
|
@@ -119,55 +94,42 @@ module.exports = function (content) {
|
|
|
119
94
|
(callback) => {
|
|
120
95
|
async.parallel([
|
|
121
96
|
checkCSSLangFiles,
|
|
122
|
-
|
|
97
|
+
checkJSONJSFile
|
|
123
98
|
], (err) => {
|
|
124
99
|
callback(err)
|
|
125
100
|
})
|
|
126
101
|
},
|
|
127
102
|
(callback) => {
|
|
128
103
|
async.forEachOf(typeExtMap, (ext, key, callback) => {
|
|
129
|
-
// 检测到
|
|
130
|
-
if (
|
|
104
|
+
// 检测到jsonjs或cssLang时跳过对应类型文件检测
|
|
105
|
+
if (typeResourceMap[key]) {
|
|
131
106
|
return callback()
|
|
132
107
|
}
|
|
133
108
|
checkFileExists(ext, (err, result) => {
|
|
134
109
|
if (!err && result) {
|
|
135
110
|
typeResourceMap[key] = result
|
|
136
111
|
}
|
|
137
|
-
callback(
|
|
112
|
+
callback()
|
|
138
113
|
})
|
|
139
114
|
}, callback)
|
|
140
115
|
},
|
|
141
116
|
(callback) => {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
if (typeResourceMap['json']) {
|
|
147
|
-
// eslint-disable-next-line handle-callback-err
|
|
148
|
-
const { rawResourcePath } = parseRequest(typeResourceMap['json'])
|
|
149
|
-
fs.readFile(rawResourcePath, (err, raw) => {
|
|
150
|
-
if (err) {
|
|
151
|
-
callback(err)
|
|
152
|
-
} else {
|
|
153
|
-
callback(null, raw.toString('utf-8'))
|
|
154
|
-
}
|
|
155
|
-
})
|
|
156
|
-
} else {
|
|
157
|
-
callback(null, '{}')
|
|
158
|
-
}
|
|
159
|
-
}
|
|
117
|
+
getJSONContent({
|
|
118
|
+
src: typeResourceMap.json,
|
|
119
|
+
useJSONJS
|
|
120
|
+
}, this, callback)
|
|
160
121
|
}, (content, callback) => {
|
|
161
|
-
let
|
|
122
|
+
let json
|
|
162
123
|
try {
|
|
163
|
-
|
|
164
|
-
if (ret.usingComponents) {
|
|
165
|
-
fixUsingComponent(ret.usingComponents, mode)
|
|
166
|
-
usingComponents = usingComponents.concat(Object.keys(ret.usingComponents))
|
|
167
|
-
}
|
|
124
|
+
json = JSON5.parse(content)
|
|
168
125
|
} catch (e) {
|
|
126
|
+
return callback(e)
|
|
127
|
+
}
|
|
128
|
+
let usingComponents = Object.keys(mpx.usingComponents)
|
|
129
|
+
if (json.usingComponents) {
|
|
130
|
+
fixUsingComponent(json.usingComponents, mode)
|
|
131
|
+
usingComponents = usingComponents.concat(Object.keys(json.usingComponents))
|
|
169
132
|
}
|
|
170
|
-
|
|
171
133
|
const {
|
|
172
134
|
getRequire
|
|
173
135
|
} = createHelpers(loaderContext)
|
|
@@ -179,8 +141,6 @@ module.exports = function (content) {
|
|
|
179
141
|
resourcePath
|
|
180
142
|
})
|
|
181
143
|
|
|
182
|
-
if (type !== 'script') this.addDependency(src)
|
|
183
|
-
|
|
184
144
|
switch (type) {
|
|
185
145
|
case 'template':
|
|
186
146
|
if (isApp) return ''
|
|
@@ -199,6 +159,9 @@ module.exports = function (content) {
|
|
|
199
159
|
scoped: hasScoped
|
|
200
160
|
})
|
|
201
161
|
break
|
|
162
|
+
case 'json':
|
|
163
|
+
if (useJSONJS) part.useJSONJS = true
|
|
164
|
+
break
|
|
202
165
|
}
|
|
203
166
|
return getRequire(type, part, extraOptions)
|
|
204
167
|
}
|
package/lib/parser.js
CHANGED
|
@@ -6,7 +6,7 @@ const SourceMapGenerator = require('source-map').SourceMapGenerator
|
|
|
6
6
|
const splitRE = /\r?\n/g
|
|
7
7
|
const emptyRE = /^(?:\/\/)?\s*$/
|
|
8
8
|
|
|
9
|
-
module.exports = (content, { filePath, needMap, mode,
|
|
9
|
+
module.exports = (content, { filePath, needMap, mode, env }) => {
|
|
10
10
|
// 缓存需要mode隔离,不同mode经过区块条件编译parseComponent得到的内容并不一致
|
|
11
11
|
const cacheKey = hash(filePath + content + mode + env)
|
|
12
12
|
|
|
@@ -14,7 +14,6 @@ module.exports = (content, { filePath, needMap, mode, defs, env }) => {
|
|
|
14
14
|
if (output) return JSON.parse(output)
|
|
15
15
|
output = compiler.parseComponent(content, {
|
|
16
16
|
mode,
|
|
17
|
-
defs,
|
|
18
17
|
filePath,
|
|
19
18
|
pad: 'line',
|
|
20
19
|
env
|
|
@@ -73,7 +73,12 @@ module.exports = function getSpec ({ warn, error }) {
|
|
|
73
73
|
swan: deletePath()
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
|
-
test: 'onReachBottomDistance
|
|
76
|
+
test: 'onReachBottomDistance',
|
|
77
|
+
qq: deletePath(),
|
|
78
|
+
jd: deletePath()
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
test: 'disableScroll',
|
|
77
82
|
ali: deletePath(),
|
|
78
83
|
qq: deletePath(),
|
|
79
84
|
jd: deletePath()
|
|
@@ -84,7 +89,7 @@ module.exports = function getSpec ({ warn, error }) {
|
|
|
84
89
|
swan: deletePath()
|
|
85
90
|
},
|
|
86
91
|
{
|
|
87
|
-
test: 'navigationBarTextStyle|navigationStyle|
|
|
92
|
+
test: 'navigationBarTextStyle|navigationStyle|backgroundTextStyle',
|
|
88
93
|
ali: deletePath()
|
|
89
94
|
},
|
|
90
95
|
{
|
|
@@ -79,7 +79,7 @@ module.exports = function ({ print }) {
|
|
|
79
79
|
if (isMustache(value)) {
|
|
80
80
|
// 如果是个变量,报warning
|
|
81
81
|
baiduValueLog({ name, value })
|
|
82
|
-
} else if (supportList.indexOf(value) === -1) {
|
|
82
|
+
} else if (value && supportList.indexOf(value) === -1) {
|
|
83
83
|
baiduValueLogError({ name, value })
|
|
84
84
|
}
|
|
85
85
|
},
|
|
@@ -91,7 +91,7 @@ module.exports = function ({ print }) {
|
|
|
91
91
|
if (isMustache(value)) {
|
|
92
92
|
// 如果是个变量,报warning
|
|
93
93
|
qqValueLog({ name, value })
|
|
94
|
-
} else if (supportList.indexOf(value) === -1) {
|
|
94
|
+
} else if (value && supportList.indexOf(value) === -1) {
|
|
95
95
|
qqValueLogError({ name, value })
|
|
96
96
|
}
|
|
97
97
|
},
|
|
@@ -103,7 +103,7 @@ module.exports = function ({ print }) {
|
|
|
103
103
|
ttValueLog({ name, value })
|
|
104
104
|
} else {
|
|
105
105
|
const supportList = ['share', 'getPhoneNumber', 'contact']
|
|
106
|
-
if (supportList.indexOf(value) === -1) {
|
|
106
|
+
if (value && supportList.indexOf(value) === -1) {
|
|
107
107
|
ttValueLogError({ name, value })
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -44,7 +44,7 @@ module.exports = function ({ print }) {
|
|
|
44
44
|
// 如果是个变量,报warning~
|
|
45
45
|
aliPropLog(attr)
|
|
46
46
|
} else {
|
|
47
|
-
let supportedList = ['navigate', 'redirect', 'switchTab', 'navigateBack', 'reLaunch']
|
|
47
|
+
let supportedList = ['navigate', 'redirect', 'switchTab', 'navigateBack', 'reLaunch', 'exit']
|
|
48
48
|
if (supportedList.indexOf(attr.value) === -1) {
|
|
49
49
|
aliValueLogError(attr)
|
|
50
50
|
}
|
|
@@ -3,6 +3,7 @@ const stringifyQuery = require('../utils/stringify-query')
|
|
|
3
3
|
const parseQuery = require('loader-utils').parseQuery
|
|
4
4
|
const addInfix = require('../utils/add-infix')
|
|
5
5
|
const matchCondition = require('../utils/match-condition')
|
|
6
|
+
const { JSON_JS_EXT } = require('../utils/const')
|
|
6
7
|
|
|
7
8
|
module.exports = class AddEnvPlugin {
|
|
8
9
|
constructor (source, env, fileConditionRules, target) {
|
|
@@ -24,8 +25,8 @@ module.exports = class AddEnvPlugin {
|
|
|
24
25
|
}
|
|
25
26
|
const resourcePath = request.path
|
|
26
27
|
let extname = ''
|
|
27
|
-
if (resourcePath.endsWith(
|
|
28
|
-
extname =
|
|
28
|
+
if (resourcePath.endsWith(JSON_JS_EXT)) {
|
|
29
|
+
extname = JSON_JS_EXT
|
|
29
30
|
} else {
|
|
30
31
|
extname = path.extname(resourcePath)
|
|
31
32
|
}
|
|
@@ -3,6 +3,7 @@ const stringifyQuery = require('../utils/stringify-query')
|
|
|
3
3
|
const parseQuery = require('loader-utils').parseQuery
|
|
4
4
|
const matchCondition = require('../utils/match-condition')
|
|
5
5
|
const addInfix = require('../utils/add-infix')
|
|
6
|
+
const { JSON_JS_EXT } = require('../utils/const')
|
|
6
7
|
|
|
7
8
|
module.exports = class AddModePlugin {
|
|
8
9
|
constructor (source, mode, fileConditionRules, target) {
|
|
@@ -24,8 +25,8 @@ module.exports = class AddModePlugin {
|
|
|
24
25
|
}
|
|
25
26
|
const resourcePath = request.path
|
|
26
27
|
let extname = ''
|
|
27
|
-
if (resourcePath.endsWith(
|
|
28
|
-
extname =
|
|
28
|
+
if (resourcePath.endsWith(JSON_JS_EXT)) {
|
|
29
|
+
extname = JSON_JS_EXT
|
|
29
30
|
} else {
|
|
30
31
|
extname = path.extname(resourcePath)
|
|
31
32
|
}
|
package/lib/runtime/base.styl
CHANGED
|
@@ -120,3 +120,8 @@ html, body, .app {
|
|
|
120
120
|
font-family "weui"
|
|
121
121
|
src url('data:application/octet-stream;base64,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') format('truetype')
|
|
122
122
|
}
|
|
123
|
+
|
|
124
|
+
.mpx-root-view {
|
|
125
|
+
display: inline
|
|
126
|
+
line-height: normal
|
|
127
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isEmptyObject } from './util'
|
|
2
|
+
const isTouchDevice = 'ontouchstart' in document.documentElement
|
|
2
3
|
|
|
3
4
|
function processModel (listeners, context) {
|
|
4
5
|
// 该函数只有wx:model的情况下才调用,而且默认e.detail.value有值
|
|
@@ -54,58 +55,63 @@ function processTap (listeners, context) {
|
|
|
54
55
|
})
|
|
55
56
|
if (isEmptyObject(listenerMap)) return
|
|
56
57
|
context.__mpxTapInfo = context.__mpxTapInfo || {}
|
|
57
|
-
let events
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
let events
|
|
59
|
+
if (isTouchDevice) {
|
|
60
|
+
events = {
|
|
61
|
+
touchstart (e) {
|
|
62
|
+
context.__mpxTapInfo.detail = {
|
|
63
|
+
x: e.changedTouches[0].pageX,
|
|
64
|
+
y: e.changedTouches[0].pageY
|
|
65
|
+
}
|
|
66
|
+
context.__mpxTapInfo.startTimer = null
|
|
67
|
+
context.__mpxTapInfo.needTap = true
|
|
68
|
+
if (listenerMap.longpress || listenerMap.longtap) {
|
|
69
|
+
context.__mpxTapInfo.startTimer = setTimeout(() => {
|
|
70
|
+
context.__mpxTapInfo.needTap = false
|
|
71
|
+
if (listenerMap.longpress) {
|
|
72
|
+
const re = inheritEvent('longpress', e, context.__mpxTapInfo.detail)
|
|
73
|
+
context.$emit('longpress', re)
|
|
74
|
+
}
|
|
75
|
+
if (listenerMap.longtap) {
|
|
76
|
+
const re = inheritEvent('longtap', e, context.__mpxTapInfo.detail)
|
|
77
|
+
context.$emit('longtap', re)
|
|
78
|
+
}
|
|
79
|
+
}, 350)
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
touchmove (e) {
|
|
83
|
+
const tapDetailInfo = context.__mpxTapInfo.detail || {}
|
|
84
|
+
const currentPageX = e.changedTouches[0].pageX
|
|
85
|
+
const currentPageY = e.changedTouches[0].pageY
|
|
86
|
+
if (Math.abs(currentPageX - tapDetailInfo.x) > 1 || Math.abs(currentPageY - tapDetailInfo.y) > 1) {
|
|
68
87
|
context.__mpxTapInfo.needTap = false
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const re = inheritEvent('longtap', e, context.__mpxTapInfo.detail)
|
|
75
|
-
context.$emit('longtap', re)
|
|
76
|
-
}
|
|
77
|
-
}, 350)
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
touchmove (e) {
|
|
81
|
-
const tapDetailInfo = context.__mpxTapInfo.detail || {}
|
|
82
|
-
const currentPageX = e.changedTouches[0].pageX
|
|
83
|
-
const currentPageY = e.changedTouches[0].pageY
|
|
84
|
-
if (Math.abs(currentPageX - tapDetailInfo.x) > 1 || Math.abs(currentPageY - tapDetailInfo.y) > 1) {
|
|
85
|
-
context.__mpxTapInfo.needTap = false
|
|
88
|
+
context.__mpxTapInfo.startTimer && clearTimeout(context.__mpxTapInfo.startTimer)
|
|
89
|
+
context.__mpxTapInfo.startTimer = null
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
touchend (e) {
|
|
86
93
|
context.__mpxTapInfo.startTimer && clearTimeout(context.__mpxTapInfo.startTimer)
|
|
87
|
-
context.__mpxTapInfo.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
context.__mpxTapInfo.startTimer && clearTimeout(context.__mpxTapInfo.startTimer)
|
|
92
|
-
if (listenerMap.tap && context.__mpxTapInfo.needTap) {
|
|
93
|
-
const re = inheritEvent('tap', e, context.__mpxTapInfo.detail)
|
|
94
|
-
context.$emit('tap', re)
|
|
94
|
+
if (listenerMap.tap && context.__mpxTapInfo.needTap) {
|
|
95
|
+
const re = inheritEvent('tap', e, context.__mpxTapInfo.detail)
|
|
96
|
+
context.$emit('tap', re)
|
|
97
|
+
}
|
|
95
98
|
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
}
|
|
100
|
+
} else {
|
|
101
|
+
events = {
|
|
102
|
+
click (e) {
|
|
103
|
+
if (listenerMap.tap) {
|
|
104
|
+
context.__mpxTapInfo.detail = {
|
|
105
|
+
x: e.pageX,
|
|
106
|
+
y: e.pageY
|
|
107
|
+
}
|
|
108
|
+
const re = inheritEvent('tap', e, context.__mpxTapInfo.detail)
|
|
109
|
+
context.$emit('tap', re)
|
|
102
110
|
}
|
|
103
|
-
const re = inheritEvent('tap', e, context.__mpxTapInfo.detail)
|
|
104
|
-
context.$emit('tap', re)
|
|
105
111
|
}
|
|
106
|
-
context.__mpxTapInfo.hadTouch = false
|
|
107
112
|
}
|
|
108
113
|
}
|
|
114
|
+
|
|
109
115
|
mergeListeners(listeners, events, {
|
|
110
116
|
force: true
|
|
111
117
|
})
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { inBrowser } from '../../../utils/env'
|
|
3
|
+
|
|
3
4
|
function isDef (v) {
|
|
4
5
|
return v !== undefined && v !== null
|
|
5
6
|
}
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
|
|
31
32
|
function getVnodeKey (vnode) {
|
|
32
33
|
if (vnode && vnode.componentOptions) {
|
|
33
|
-
return vnode.
|
|
34
|
+
return vnode.componentOptions.Ctor.cid + (vnode.componentOptions.tag ? ('::' + (vnode.componentOptions.tag)) : '')
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -73,6 +74,8 @@
|
|
|
73
74
|
const current = stack[i - 1]
|
|
74
75
|
if (current.vnode && current.vnodeKey === vnodeKey && current.vnode.componentInstance) {
|
|
75
76
|
vnode.componentInstance = current.vnode.componentInstance
|
|
77
|
+
// 避免组件实例复用但是vnode.key不一致带来的bad case
|
|
78
|
+
vnode.key = current.vnode.key
|
|
76
79
|
break
|
|
77
80
|
}
|
|
78
81
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
'mpx-tab-bar': tabBarPagesMap['mpx-tab-bar']
|
|
16
16
|
}
|
|
17
17
|
tabBar.list.forEach(({ pagePath }) => {
|
|
18
|
-
const name = pagePath.replace(
|
|
18
|
+
const name = pagePath.replace(/\//g, '-')
|
|
19
19
|
const page = tabBarPagesMap[pagePath]
|
|
20
20
|
if (page) {
|
|
21
21
|
components[name] = page
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
currentComponent () {
|
|
40
40
|
const index = this.currentIndex
|
|
41
41
|
const tabItem = tabBar.list[index]
|
|
42
|
-
return tabItem.pagePath.replace(
|
|
42
|
+
return tabItem.pagePath.replace(/\//g, '-')
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
watch: {
|
|
@@ -4,7 +4,7 @@ export default function processOption (
|
|
|
4
4
|
option,
|
|
5
5
|
ctorType,
|
|
6
6
|
firstPage,
|
|
7
|
-
|
|
7
|
+
outputPath,
|
|
8
8
|
pageConfig,
|
|
9
9
|
pagesMap,
|
|
10
10
|
componentsMap,
|
|
@@ -25,23 +25,6 @@ export default function processOption (
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
// 注册v-ex-classes自定义指令处理externalClasses
|
|
29
|
-
Vue.directive('ex-classes', (el, binding, vnode) => {
|
|
30
|
-
const context = vnode.context
|
|
31
|
-
if (context) {
|
|
32
|
-
const externalClasses = context.$options.externalClasses || []
|
|
33
|
-
const classList = el.classList
|
|
34
|
-
binding.value.forEach((className) => {
|
|
35
|
-
const actualExternalClassNames = context.$attrs[className]
|
|
36
|
-
if (externalClasses.indexOf(className) !== -1 && actualExternalClassNames) {
|
|
37
|
-
classList.remove(className)
|
|
38
|
-
actualExternalClassNames.split(/\s+/).forEach((actualExternalClassName) => {
|
|
39
|
-
if (actualExternalClassName) classList.add(actualExternalClassName)
|
|
40
|
-
})
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
28
|
Vue.directive('animation', (el, binding) => {
|
|
46
29
|
const newActions = binding && binding.value && binding.value.actions
|
|
47
30
|
if (el.actions === newActions) {
|
|
@@ -121,7 +104,9 @@ export default function processOption (
|
|
|
121
104
|
redirect: '/' + firstPage
|
|
122
105
|
})
|
|
123
106
|
}
|
|
107
|
+
const webRouteConfig = global.__mpx.config.webRouteConfig
|
|
124
108
|
global.__mpxRouter = option.router = new VueRouter({
|
|
109
|
+
...webRouteConfig,
|
|
125
110
|
routes: routes
|
|
126
111
|
})
|
|
127
112
|
global.__mpxRouter.stack = []
|
|
@@ -354,8 +339,8 @@ registered in parent context!`)
|
|
|
354
339
|
option.mixins = [mixin]
|
|
355
340
|
}
|
|
356
341
|
|
|
357
|
-
if (
|
|
358
|
-
option.componentPath = '/' +
|
|
342
|
+
if (outputPath) {
|
|
343
|
+
option.componentPath = '/' + outputPath
|
|
359
344
|
}
|
|
360
345
|
|
|
361
346
|
return option
|
|
@@ -93,7 +93,7 @@ function isDef (v) {
|
|
|
93
93
|
return v !== undefined && v !== null
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
function
|
|
96
|
+
function stringifyDynamicClass (value) {
|
|
97
97
|
if (!value) return ''
|
|
98
98
|
if (likeArray(value)) {
|
|
99
99
|
return stringifyArray(value)
|
|
@@ -111,7 +111,7 @@ function stringifyArray (value) {
|
|
|
111
111
|
var res = ''
|
|
112
112
|
var stringified
|
|
113
113
|
for (var i = 0; i < value.length; i++) {
|
|
114
|
-
if (isDef(stringified =
|
|
114
|
+
if (isDef(stringified = stringifyDynamicClass(value[i])) && stringified !== '') {
|
|
115
115
|
if (res) res += ' '
|
|
116
116
|
res += stringified
|
|
117
117
|
}
|
|
@@ -207,7 +207,7 @@ module.exports = {
|
|
|
207
207
|
if (typeof staticClass !== 'string') {
|
|
208
208
|
return console.log('Template attr class must be a string!')
|
|
209
209
|
}
|
|
210
|
-
return concat(staticClass,
|
|
210
|
+
return concat(staticClass, stringifyDynamicClass(dynamicClass))
|
|
211
211
|
},
|
|
212
212
|
stringifyStyle: function (staticStyle, dynamicStyle) {
|
|
213
213
|
var normalizedDynamicStyle = normalizeDynamicStyle(dynamicStyle)
|
package/lib/selector.js
CHANGED
|
@@ -13,20 +13,17 @@ module.exports = function (content) {
|
|
|
13
13
|
const index = queryObj.index || 0
|
|
14
14
|
const mode = mpx.mode
|
|
15
15
|
const env = mpx.env
|
|
16
|
-
const defs = mpx.defs
|
|
17
16
|
const filePath = this.resourcePath
|
|
18
17
|
const parts = parseComponent(content, {
|
|
19
18
|
filePath,
|
|
20
19
|
needMap: this.sourceMap,
|
|
21
20
|
mode,
|
|
22
|
-
defs,
|
|
23
21
|
env
|
|
24
22
|
})
|
|
25
|
-
let part = parts[type]
|
|
23
|
+
let part = parts[type]
|
|
26
24
|
if (Array.isArray(part)) {
|
|
27
|
-
part = part[index]
|
|
28
|
-
content: ''
|
|
29
|
-
}
|
|
25
|
+
part = part[index]
|
|
30
26
|
}
|
|
27
|
+
part = part || { content: '' }
|
|
31
28
|
this.callback(null, part.content, part.map)
|
|
32
29
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const postcss = require('postcss')
|
|
2
2
|
const loadPostcssConfig = require('./load-postcss-config')
|
|
3
|
+
const { MPX_ROOT_VIEW, MPX_APP_MODULE_ID } = require('../utils/const')
|
|
3
4
|
const trim = require('./plugins/trim')
|
|
4
5
|
const rpx = require('./plugins/rpx')
|
|
5
6
|
const vw = require('./plugins/vw')
|
|
@@ -15,12 +16,10 @@ module.exports = function (css, map) {
|
|
|
15
16
|
const { resourcePath, queryObj } = parseRequest(this.resource)
|
|
16
17
|
const id = queryObj.moduleId || queryObj.mid
|
|
17
18
|
const mpx = this.getMpx()
|
|
19
|
+
const appInfo = mpx.appInfo
|
|
18
20
|
const defs = mpx.defs
|
|
19
21
|
const mode = mpx.mode
|
|
20
|
-
const
|
|
21
|
-
const componentsMap = mpx.componentsMap[packageName]
|
|
22
|
-
const pagesMap = mpx.pagesMap
|
|
23
|
-
const isApp = !(pagesMap[resourcePath] || componentsMap[resourcePath])
|
|
22
|
+
const isApp = resourcePath === appInfo.resourcePath
|
|
24
23
|
const transRpxRulesRaw = mpx.transRpxRules
|
|
25
24
|
const transRpxRules = transRpxRulesRaw ? (Array.isArray(transRpxRulesRaw) ? transRpxRulesRaw : [transRpxRulesRaw]) : []
|
|
26
25
|
|
|
@@ -85,7 +84,7 @@ module.exports = function (css, map) {
|
|
|
85
84
|
.then(result => {
|
|
86
85
|
// ali环境添加全局样式抹平root差异
|
|
87
86
|
if (mode === 'ali' && isApp) {
|
|
88
|
-
result.css +=
|
|
87
|
+
result.css += `\n.${MPX_ROOT_VIEW} { display: initial }\n.${MPX_APP_MODULE_ID} { line-height: normal }`
|
|
89
88
|
}
|
|
90
89
|
if (result.messages) {
|
|
91
90
|
result.messages.forEach(({ type, file }) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const babylon = require('
|
|
2
|
-
const traverse = require('babel
|
|
3
|
-
const t = require('babel
|
|
4
|
-
const generate = require('babel
|
|
1
|
+
const babylon = require('@babel/parser')
|
|
2
|
+
const traverse = require('@babel/traverse').default
|
|
3
|
+
const t = require('@babel/types')
|
|
4
|
+
const generate = require('@babel/generator').default
|
|
5
5
|
|
|
6
6
|
let names = 'Infinity,undefined,NaN,isFinite,isNaN,' +
|
|
7
7
|
'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
|