提交 7c48ee1f 编写于 作者: fxy060608's avatar fxy060608

refactor(v3): renderjs

上级 43d111b9
此差异已折叠。
...@@ -1047,6 +1047,12 @@ function createSelectorQuery () { ...@@ -1047,6 +1047,12 @@ function createSelectorQuery () {
return this return this
}; };
} }
if (!query.in) {
query.in = function () {
return this
};
}
return query return query
} }
......
...@@ -168,12 +168,15 @@ at ${resourcePath}.vue:1`) ...@@ -168,12 +168,15 @@ at ${resourcePath}.vue:1`)
} }
const filterTemplate = [] const filterTemplate = []
options.mp.filterModules.forEach(name => { options.mp.filterModules.forEach(name => {
filterTemplate.push( const filterModule = options.filterModules[name]
options.mp.platform.createFilterTag( if (filterModule.type !== 'renderjs' && filterModule.attrs.lang !== 'renderjs') {
options.filterTagName, filterTemplate.push(
options.filterModules[name] options.mp.platform.createFilterTag(
options.filterTagName,
options.filterModules[name]
)
) )
) }
}) })
if (filterTemplate.length) { if (filterTemplate.length) {
......
...@@ -36,7 +36,8 @@ function getProvides (isAppService) { ...@@ -36,7 +36,8 @@ function getProvides (isAppService) {
'getRegExp': [wxsPath, 'getRegExp'] 'getRegExp': [wxsPath, 'getRegExp']
} }
} }
return { // app-view return { // app-view
'__f__': [path.resolve(__dirname, '../format-log.js'), 'default'],
'getDate': [wxsPath, 'getDate'], 'getDate': [wxsPath, 'getDate'],
'getRegExp': [wxsPath, 'getRegExp'] 'getRegExp': [wxsPath, 'getRegExp']
} }
...@@ -89,12 +90,12 @@ const v3 = { ...@@ -89,12 +90,12 @@ const v3 = {
'../../packages/webpack-uni-app-loader/view/script') '../../packages/webpack-uni-app-loader/view/script')
}) })
// view 层 renderjs // view 层 renderjs
rules.push({ // rules.push({
resourceQuery: [/lang=renderjs/, /blockType=renderjs/], // resourceQuery: [/lang=renderjs/, /blockType=renderjs/],
use: [{ // use: [{
loader: path.resolve(__dirname, '../../packages/webpack-uni-app-loader/view/renderjs') // loader: path.resolve(__dirname, '../../packages/webpack-uni-app-loader/view/renderjs')
}] // }]
}) // })
} }
scriptLoaders.push({ scriptLoaders.push({
loader: path.resolve(__dirname, loader: path.resolve(__dirname,
......
...@@ -27,13 +27,14 @@ module.exports = function parseCustomBlocks(descriptor, options) { ...@@ -27,13 +27,14 @@ module.exports = function parseCustomBlocks(descriptor, options) {
return true return true
} }
if ( // renderjs if ( // renderjs
options.isAppView && block.attrs.module &&
( (
block.type === 'renderjs' || block.type === 'renderjs' ||
block.attrs.lang === 'renderjs' block.attrs.lang === 'renderjs'
) )
) { ) {
return true descriptor.renderjs = block
modules[block.attrs.module] = block
} }
}) })
......
...@@ -141,6 +141,20 @@ module.exports = function (source) { ...@@ -141,6 +141,20 @@ module.exports = function (source) {
) )
} }
let renderjsImport = `var renderjs`
if(options.isAppView && descriptor.renderjs){
const src = descriptor.renderjs.src || resourcePath
const attrsQuery = attrsToQuery(descriptor.renderjs.attrs, 'js')
const query = `?vue&type=renderjs${attrsQuery}${inheritQuery}`
const request = stringifyRequest(src + query)
renderjsImport = (
`import renderjs from ${request}\n` +
`renderjs.__module = '${descriptor.renderjs.attrs.module}'\n` +
`export * from ${request}` // support named exports
)
}
// styles // styles
let stylesCode = `` let stylesCode = ``
// fixed by xxxxxx 仅限 view 层 // fixed by xxxxxx 仅限 view 层
...@@ -158,6 +172,7 @@ module.exports = function (source) { ...@@ -158,6 +172,7 @@ module.exports = function (source) {
// fixed by xxxxxx (injectStyles,auto components) // fixed by xxxxxx (injectStyles,auto components)
let code = ` let code = `
${templateImport} ${templateImport}
${renderjsImport}
${scriptImport} ${scriptImport}
${stylesCode} ${stylesCode}
...@@ -172,7 +187,8 @@ var component = normalizer( ...@@ -172,7 +187,8 @@ var component = normalizer(
${hasScoped ? JSON.stringify(id) : `null`}, ${hasScoped ? JSON.stringify(id) : `null`},
${isServer ? JSON.stringify(hash(request)) : `null`}, ${isServer ? JSON.stringify(hash(request)) : `null`},
${isShadow ? `true` : `false`}, ${isShadow ? `true` : `false`},
components components,
renderjs
) )
`.trim() + `\n` `.trim() + `\n`
......
...@@ -13,7 +13,8 @@ export default function normalizeComponent ( ...@@ -13,7 +13,8 @@ export default function normalizeComponent (
scopeId, scopeId,
moduleIdentifier, /* server only */ moduleIdentifier, /* server only */
shadowMode, /* vue-cli only */ shadowMode, /* vue-cli only */
components // fixed by xxxxxx auto components components, // fixed by xxxxxx auto components
renderjs // fixed by xxxxxx renderjs
) { ) {
// Vue.extend constructor export interop // Vue.extend constructor export interop
var options = typeof scriptExports === 'function' var options = typeof scriptExports === 'function'
...@@ -24,6 +25,13 @@ export default function normalizeComponent ( ...@@ -24,6 +25,13 @@ export default function normalizeComponent (
if (components) { if (components) {
options.components = Object.assign(components, options.components || {}) options.components = Object.assign(components, options.components || {})
} }
// fixed by xxxxxx renderjs
if (renderjs) {
(renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
this[renderjs.__module] = this
});
(options.mixins || (options.mixins = [])).push(renderjs)
}
// render functions // render functions
if (render) { if (render) {
......
...@@ -30,6 +30,19 @@ module.exports = function selectBlock ( ...@@ -30,6 +30,19 @@ module.exports = function selectBlock (
return return
} }
// renderjs
if (query.type === `renderjs`) {
if (appendExtension) {
loaderContext.resourcePath += '.js'
}
loaderContext.callback(
null,
descriptor.renderjs.content,
descriptor.renderjs.map
)
return
}
// styles // styles
if (query.type === `style` && query.index != null) { if (query.type === `style` && query.index != null) {
const style = descriptor.styles[query.index] const style = descriptor.styles[query.index]
......
...@@ -81,7 +81,7 @@ function updateView () { ...@@ -81,7 +81,7 @@ function updateView () {
) )
} }
window.addEventListener('resize', updateView) window.addEventListener('resize', updateView)
window.addEventListener('updateview', updateView) window.addEventListener('updateview', updateView)
function vdSync ({ function vdSync ({
...@@ -119,7 +119,9 @@ function getData (id, name) { ...@@ -119,7 +119,9 @@ function getData (id, name) {
function getChangeData (id, name) { function getChangeData (id, name) {
try { try {
const value = this.$r[id][name] const value = this.$r[id][name]
this.$set(this.wxsProps, name.replace('change:', ''), value) const wxsPropName = name.replace('change:', '')
this[wxsPropName] = value
this.$set(this.wxsProps, wxsPropName, value)
return value return value
} catch (e) { } catch (e) {
console.error(this.$options.__file + `:[${this._$id}]$r[${id}][${name}] is undefined`) console.error(this.$options.__file + `:[${this._$id}]$r[${id}][${name}] is undefined`)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册