refactor(ssr): prefix ssr helpers

This commit is contained in:
Evan You
2020-02-06 12:07:25 -05:00
parent f3e70b3733
commit bc8f91d181
16 changed files with 256 additions and 136 deletions

View File

@@ -1,5 +1,5 @@
import { escapeHtml, toDisplayString } from '@vue/shared'
export function interpolate(value: unknown): string {
export function ssrInterpolate(value: unknown): string {
return escapeHtml(toDisplayString(value))
}

View File

@@ -14,7 +14,7 @@ import {
const shouldIgnoreProp = makeMap(`key,ref,innerHTML,textContent`)
export function renderAttrs(
export function ssrRenderAttrs(
props: Record<string, unknown>,
tag?: string
): string {
@@ -29,18 +29,18 @@ export function renderAttrs(
}
const value = props[key]
if (key === 'class') {
ret += ` class="${renderClass(value)}"`
ret += ` class="${ssrRenderClass(value)}"`
} else if (key === 'style') {
ret += ` style="${renderStyle(value)}"`
ret += ` style="${ssrRenderStyle(value)}"`
} else {
ret += renderDynamicAttr(key, value, tag)
ret += ssrRenderDynamicAttr(key, value, tag)
}
}
return ret
}
// render an attr with dynamic (unknown) key.
export function renderDynamicAttr(
export function ssrRenderDynamicAttr(
key: string,
value: unknown,
tag?: string
@@ -63,7 +63,7 @@ export function renderDynamicAttr(
// Render a v-bind attr with static key. The key is pre-processed at compile
// time and we only need to check and escape value.
export function renderAttr(key: string, value: unknown): string {
export function ssrRenderAttr(key: string, value: unknown): string {
if (!isRenderableValue(value)) {
return ``
}
@@ -78,11 +78,11 @@ function isRenderableValue(value: unknown): boolean {
return type === 'string' || type === 'number' || type === 'boolean'
}
export function renderClass(raw: unknown): string {
export function ssrRenderClass(raw: unknown): string {
return escapeHtml(normalizeClass(raw))
}
export function renderStyle(raw: unknown): string {
export function ssrRenderStyle(raw: unknown): string {
if (!raw) {
return ''
}

View File

@@ -1,6 +1,6 @@
import { isArray, isString, isObject } from '@vue/shared'
export function renderList(
export function ssrRenderList(
source: unknown,
renderItem: (value: unknown, key: string | number, index?: number) => void
) {

View File

@@ -9,7 +9,7 @@ export type SSRSlot = (
parentComponent: ComponentInternalInstance | null
) => void
export function renderSlot(
export function ssrRenderSlot(
slots: Slots | SSRSlots,
slotName: string,
slotProps: Props,

View File

@@ -1,42 +1,45 @@
import { looseEqual as _looseEqual, looseIndexOf } from '@vue/shared'
import { renderAttr } from './renderAttrs'
import { looseEqual, looseIndexOf } from '@vue/shared'
import { ssrRenderAttr } from './ssrRenderAttrs'
export const looseEqual = _looseEqual as (a: unknown, b: unknown) => boolean
export const ssrLooseEqual = looseEqual as (a: unknown, b: unknown) => boolean
export function looseContain(arr: unknown[], value: unknown): boolean {
export function ssrLooseContain(arr: unknown[], value: unknown): boolean {
return looseIndexOf(arr, value) > -1
}
// for <input :type="type" v-model="model" value="value">
export function renderDynamicModel(
export function ssrRenderDynamicModel(
type: unknown,
model: unknown,
value: unknown
) {
switch (type) {
case 'radio':
return _looseEqual(model, value) ? ' checked' : ''
return looseEqual(model, value) ? ' checked' : ''
case 'checkbox':
return (Array.isArray(model)
? looseContain(model, value)
? ssrLooseContain(model, value)
: model)
? ' checked'
: ''
default:
// text types
return renderAttr('value', model)
return ssrRenderAttr('value', model)
}
}
// for <input v-bind="obj" v-model="model">
export function getDynamicModelProps(existingProps: any = {}, model: unknown) {
export function ssrGetDynamicModelProps(
existingProps: any = {},
model: unknown
) {
const { type, value } = existingProps
switch (type) {
case 'radio':
return _looseEqual(model, value) ? { checked: true } : null
return looseEqual(model, value) ? { checked: true } : null
case 'checkbox':
return (Array.isArray(model)
? looseContain(model, value)
? ssrLooseContain(model, value)
: model)
? { checked: true }
: null