You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue SSR Webpack结构疑问:包含<!--vue-ssr-outlet-->的主模板在哪?

关于Vue SSR主模板缺失的问题解答

你完全没遗漏内容!那个带有<!--vue-ssr-outlet-->标记的主模板确实不在官方给出的基础目录结构里——因为它属于SSR渲染流程里的布局层内容,需要你根据项目情况自行创建,或者结合使用的服务端框架来定义。

下面给你拆解几种常见的实现方式:

1. 创建独立的HTML模板文件

这是最通用的做法,你可以在项目根目录或者src文件夹下新建一个类似index.template.html的文件,内容示例如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>我的Vue SSR应用</title>
  <!-- 可通过Webpack插件自动注入打包后的CSS资源 -->
  <% if (htmlWebpackPlugin.options.files.css) { %>
    <% htmlWebpackPlugin.options.files.css.forEach(css => { %>
      <link rel="stylesheet" href="<%= css %>">
    <% }) %>
  <% } %>
</head>
<body>
  <!-- 服务端渲染的Vue内容会替换这个标记 -->
  <!--vue-ssr-outlet-->
  <!-- 可通过Webpack插件自动注入客户端bundle脚本 -->
  <% if (htmlWebpackPlugin.options.files.js) { %>
    <% htmlWebpackPlugin.options.files.js.forEach(js => { %>
      <script src="<%= js %>"></script>
    <% }) %>
  <% } %>
</body>
</html>

之后在Webpack配置或者服务端渲染的核心逻辑中,指定使用这个模板来包裹服务端渲染出的Vue页面内容即可。

2. 在服务端框架中直接编写模板

如果你使用Express、Koa这类服务端框架,也可以直接在路由处理函数里用字符串拼接或者模板引擎(比如EJS、Pug)来定义布局,把服务端渲染的Vue内容直接插入到对应位置。举个Express的简单示例:

// Express路由处理逻辑
app.get('*', (req, res) => {
  const app = createApp()
  
  // 将Vue实例渲染为HTML字符串
  renderer.renderToString(app, (err, vueHtml) => {
    if (err) {
      return res.status(500).end('服务器内部错误')
    }
    // 直接用字符串拼接生成完整HTML,这里的vueHtml就对应模板里的<!--vue-ssr-outlet-->
    res.send(`
      <!DOCTYPE html>
      <html>
        <head><title>Vue SSR Demo</title></head>
        <body>
          ${vueHtml}
          <script src="/dist/client-bundle.js"></script>
        </body>
      </html>
    `)
  })
})

不过这种方式灵活性较低,更推荐用第一种独立模板文件的方案,配合vue-server-renderer的createBundleRenderer来加载使用。

3. 官方目录结构为啥没包含它?

官方给出的目录结构是Vue SSR的核心代码结构,聚焦在应用本身的通用入口、客户端/服务端入口这些核心文件上。而布局模板属于工程化配置的一部分,不同项目可能有不同的存放位置和写法(比如有的放在public目录,有的放在src/templates文件夹),所以官方没有把它固定到基础结构里。

总结下来:你只需要自行创建包含<!--vue-ssr-outlet-->的HTML模板,再在服务端渲染配置中关联它就可以了,完全不是遗漏了内容哦~

内容的提问来源于stack exchange,提问作者LongHike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:34:22