wip(ssr): initial scaffold for compiler-ssr
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import { NodeTransform, NodeTypes, ElementTypes } from '@vue/compiler-dom'
|
||||
|
||||
export const ssrTransformComponent: NodeTransform = (node, context) => {
|
||||
if (
|
||||
node.type === NodeTypes.ELEMENT &&
|
||||
node.tagType === ElementTypes.COMPONENT
|
||||
) {
|
||||
return function ssrPostTransformComponent() {
|
||||
// generate a _push(_renderComponent) call
|
||||
// dynamic component as well
|
||||
// !check if we need to bail out for slots
|
||||
// TODO also handle scopeID here
|
||||
}
|
||||
}
|
||||
}
|
||||
70
packages/compiler-ssr/src/transforms/ssrTransformElement.ts
Normal file
70
packages/compiler-ssr/src/transforms/ssrTransformElement.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
NodeTransform,
|
||||
NodeTypes,
|
||||
ElementTypes,
|
||||
TemplateLiteral,
|
||||
createTemplateLiteral
|
||||
} from '@vue/compiler-dom'
|
||||
import { escapeHtml } from '@vue/server-renderer/src'
|
||||
|
||||
/*
|
||||
## Simple Element
|
||||
|
||||
``` html
|
||||
<div></div>
|
||||
```
|
||||
``` js
|
||||
return function render(_ctx, _push, _parent) {
|
||||
_push(`<div></div>`)
|
||||
}
|
||||
```
|
||||
|
||||
## Consecutive Elements
|
||||
|
||||
``` html
|
||||
<div>
|
||||
<span></span>
|
||||
</div>
|
||||
<div></div>
|
||||
```
|
||||
``` js
|
||||
return function render(_ctx, _push, _parent) {
|
||||
_push(`<div><span></span></div><div></div>`)
|
||||
}
|
||||
```
|
||||
*/
|
||||
|
||||
export const ssrTransformElement: NodeTransform = (node, context) => {
|
||||
if (
|
||||
node.type === NodeTypes.ELEMENT &&
|
||||
node.tagType === ElementTypes.ELEMENT
|
||||
) {
|
||||
return function ssrPostTransformElement() {
|
||||
// element
|
||||
// generate the template literal representing the open tag.
|
||||
const openTag: TemplateLiteral['elements'] = [`<${node.tag}`]
|
||||
|
||||
for (let i = 0; i < node.props.length; i++) {
|
||||
const prop = node.props[i]
|
||||
if (prop.type === NodeTypes.DIRECTIVE) {
|
||||
const directiveTransform = context.directiveTransforms[prop.name]
|
||||
if (directiveTransform) {
|
||||
// TODO directive transforms
|
||||
} else {
|
||||
// no corresponding ssr directive transform found.
|
||||
// TODO emit error
|
||||
}
|
||||
} else {
|
||||
// static prop
|
||||
openTag.push(
|
||||
` ${prop.name}` +
|
||||
(prop.value ? `="${escapeHtml(prop.value.content)}"` : ``)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
openTag.push(`>`)
|
||||
node.ssrCodegenNode = createTemplateLiteral(openTag)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
import { NodeTransform } from '@vue/compiler-dom'
|
||||
|
||||
export const ssrTransformSlotOutlet: NodeTransform = () => {}
|
||||
1
packages/compiler-ssr/src/transforms/ssrVBind.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVBind.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
1
packages/compiler-ssr/src/transforms/ssrVCloak.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVCloak.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
3
packages/compiler-ssr/src/transforms/ssrVFor.ts
Normal file
3
packages/compiler-ssr/src/transforms/ssrVFor.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { NodeTransform } from '@vue/compiler-dom'
|
||||
|
||||
export const ssrTransformFor: NodeTransform = () => {}
|
||||
1
packages/compiler-ssr/src/transforms/ssrVHtml.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVHtml.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
3
packages/compiler-ssr/src/transforms/ssrVIf.ts
Normal file
3
packages/compiler-ssr/src/transforms/ssrVIf.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { NodeTransform } from '@vue/compiler-dom'
|
||||
|
||||
export const ssrTransformIf: NodeTransform = () => {}
|
||||
1
packages/compiler-ssr/src/transforms/ssrVModel.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVModel.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
1
packages/compiler-ssr/src/transforms/ssrVOn.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVOn.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
1
packages/compiler-ssr/src/transforms/ssrVShow.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVShow.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
1
packages/compiler-ssr/src/transforms/ssrVSlot.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVSlot.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
1
packages/compiler-ssr/src/transforms/ssrVText.ts
Normal file
1
packages/compiler-ssr/src/transforms/ssrVText.ts
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
||||
Reference in New Issue
Block a user