Skip to content

Commit

Permalink
feat: 支持Taro.render写法
Browse files Browse the repository at this point in the history
  • Loading branch information
luckyadam committed May 8, 2018
1 parent d0a09b0 commit 6d154c3
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 26 deletions.
49 changes: 24 additions & 25 deletions packages/taro-cli/src/h5.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@ const FILE_TYPE = {
function processEntry (code) {
const ast = babylon.parse(code, babylonConfig)
let taroImportDefaultName
let componentClassName
let providorImportName
let storeName
let hasAddNervJsImportDefaultName = false
let renderCallCode

traverse(ast, {
enter (astPath) {
Expand All @@ -93,9 +93,6 @@ function processEntry (code) {
node.decorators || []
)
)
componentClassName = renameComponentClassName
} else {
componentClassName = node.id.name
}
} else if (node.superClass.name === 'Component') {
if (node.id === null) {
Expand All @@ -108,9 +105,6 @@ function processEntry (code) {
node.decorators || []
)
)
componentClassName = renameComponentClassName
} else {
componentClassName = node.id.name
}
}
},
Expand Down Expand Up @@ -187,22 +181,31 @@ function processEntry (code) {
},
CallExpression (astPath) {
const node = astPath.node
const calleeName = node.callee.name
const callee = node.callee
const calleeName = callee.name
const parentPath = astPath.parentPath

if (calleeName === configStoreFuncName) {
if (parentPath.isAssignmentExpression()) {
storeName = parentPath.node.left.name
} else if (parentPath.isVariableDeclarator()) {
storeName = parentPath.node.id.name
} else {
storeName = 'store'
if (t.isMemberExpression(callee)) {
if (callee.object.name === taroImportDefaultName && callee.property.name === 'render') {
callee.object.name = nervJsImportDefaultName
renderCallCode = generate(astPath.node).code
astPath.remove()
}
} else if (calleeName === setStoreFuncName) {
if (parentPath.isAssignmentExpression() ||
parentPath.isExpressionStatement() ||
parentPath.isVariableDeclarator()) {
parentPath.remove()
} else {
if (calleeName === configStoreFuncName) {
if (parentPath.isAssignmentExpression()) {
storeName = parentPath.node.left.name
} else if (parentPath.isVariableDeclarator()) {
storeName = parentPath.node.id.name
} else {
storeName = 'store'
}
} else if (calleeName === setStoreFuncName) {
if (parentPath.isAssignmentExpression() ||
parentPath.isExpressionStatement() ||
parentPath.isVariableDeclarator()) {
parentPath.remove()
}
}
}
}
Expand Down Expand Up @@ -275,17 +278,13 @@ function processEntry (code) {
`${taroImportDefaultName}.initNativeApi(${taroImportDefaultName})`,
babylonConfig
)()
const renderApp = template(
`${nervJsImportDefaultName}.render(<${componentClassName} />, document.getElementById('app'))`,
babylonConfig
)()

node.body.unshift(importTaro)
node.body.unshift(importTaroRouter)
tabBar && node.body.unshift(importComponents)
node.body.push(initNativeApi)
node.body.push(initRouter)
node.body.push(renderApp)
node.body.push(template(renderCallCode, babylonConfig)())
}
}
})
Expand Down
10 changes: 10 additions & 0 deletions packages/taro-cli/src/weapp.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,16 @@ function parseAst (type, ast, sourceFilePath, filePath) {
}
},

CallExpression (astPath) {
const node = astPath.node
const callee = node.callee
if (t.isMemberExpression(callee)) {
if (callee.object.name === taroImportDefaultName && callee.property.name === 'render') {
astPath.remove()
}
}
},

ExportDefaultDeclaration (astPath) {
const node = astPath.node
const declaration = node.declaration
Expand Down
6 changes: 5 additions & 1 deletion packages/taro-h5/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import {
ENV_TYPE,
Events,
eventCenter,
render,
internal_safe_get,
internal_dynamic_recursive } from '@tarojs/taro'
internal_dynamic_recursive
} from '@tarojs/taro'

import initNativeApi from './native-api'

Expand All @@ -15,6 +17,7 @@ export {
ENV_TYPE,
Events,
eventCenter,
render,
internal_safe_get,
internal_dynamic_recursive
}
Expand All @@ -25,6 +28,7 @@ export default {
ENV_TYPE,
Events,
eventCenter,
render,
internal_safe_get,
internal_dynamic_recursive
}
3 changes: 3 additions & 0 deletions packages/taro-weapp/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
Events,
eventCenter,
ENV_TYPE,
render,
internal_safe_get,
internal_dynamic_recursive
} from '@tarojs/taro'
Expand All @@ -21,6 +22,7 @@ export {
Events,
eventCenter,
getEnv,
render,
ENV_TYPE,
internal_safe_get,
internal_dynamic_recursive
Expand All @@ -34,6 +36,7 @@ export default {
Events,
eventCenter,
getEnv,
render,
ENV_TYPE,
internal_safe_get,
internal_dynamic_recursive
Expand Down
3 changes: 3 additions & 0 deletions packages/taro/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { get as internal_safe_get } from './internal/safe-get'
import { dynamicRecursive as internal_dynamic_recursive } from './internal/dynamic-recursive'
import { getEnv, ENV_TYPE } from './env'
import Events from './events'
import render from './render'

const eventCenter = new Events()

Expand All @@ -13,6 +14,7 @@ export {
eventCenter,
getEnv,
ENV_TYPE,
render,
internal_safe_get,
internal_dynamic_recursive
}
Expand All @@ -23,6 +25,7 @@ export default {
eventCenter,
getEnv,
ENV_TYPE,
render,
internal_safe_get,
internal_dynamic_recursive
}
1 change: 1 addition & 0 deletions packages/taro/src/render.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default function render () {}

0 comments on commit 6d154c3

Please sign in to comment.