相关疑难解决方法(0)

将 VNode 渲染为 html 字符串

我正在开发一个 Vue 服务器端模板引擎,该包的一部分包括一个头管理系统。

我正在为 Vue 开发一个服务器端渲染器,为了让 SSR 的主管管理工作,它需要一种将VNodes 渲染为文本的方法。

我的问题: 如何将 VNode 渲染为字符串?例如:

this.$ssrContext.head = renderVNodesToString(this.$slots.head)

示例用例:

master.vue

<template>
    <div id="app">
        <slot name="content"></slot>
    </div>
</template>
<script>
export default {
    created: function(){
        if(this.$isServer){
            var VNodesToRender = this.$slots.head
            this.$ssrContext.head = 'rendered VNode here'
        }
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

home.vue

<template>
    <master>
        <template slot="content">
            Hello World
        </template>
        <template slot="head">
            <script src="https://unpkg.com/vue/dist/vue.js"></script>
            <title>Hello</title>
        </template>
    </master>
</template>
<script>
import master from "layouts/master.vue"

export default {
    components: {
        master
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

我的目标是将home.vue的 …

javascript vue.js

7
推荐指数
0
解决办法
5186
查看次数

如何使用名为Vue的slot呈现静态内容列表?

我在弄清楚如何使以下各项工作方面遇到困难:

我的父母模板

<comp>
  <a href="#" slot="links>link 1</a>
  <a href="#" slot="links>link 2</a>
</comp>
Run Code Online (Sandbox Code Playgroud)

我的组件comp模板如下所示:

<ul class="comp">
  <li class="comp-item"><slot name="links"></slot></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

目前,我所有的定位li标记都转到了单个标记(这是预期的),但是我希望能够为li插入的每个命名插槽生成多个标记,如下所示:

<ul class="comp">
  <li class="comp-item"><a href="#" slot="links>link 1</a></li>
  <li class="comp-item"><a href="#" slot="links>link 2</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在不使用作用域插槽的情况下实现我所需要的?因为我的内容是纯HTML,所以我觉得没有必要将静态内容放入prop中以进行呈现。

从我所看到的情况来看,大多数vue UI框架都要求您为列表项使用另一个自定义组件,我觉得这个问题已被淘汰。还有其他方法吗?

javascript components slot vue.js vuejs2

5
推荐指数
1
解决办法
2383
查看次数

标签 统计

javascript ×2

vue.js ×2

components ×1

slot ×1

vuejs2 ×1