当前位置:首页 > 技术 > 正文内容

通过多入口构建独立空白页面的Vue应用方案

访客 技术 2026年6月14日 1

在基于 Vue.js 构建的应用中,通常会将全局组件(如导航栏、页脚、侧边栏)放置于主入口文件中。然而,部分场景如登录页、广告投放页或全屏展示页,需要完全脱离这些公共组件的影响,呈现纯净的空白界面。

虽然可以通过条件渲染控制组件显示,但当存在多个此类页面时,维护成本显著上升。为此,采用多入口(Multi-Entry)架构可实现每个页面拥有独立的运行环境,彻底隔离样式与逻辑。

核心原理:多入口机制

多入口允许在一个项目中定义多个独立的 HTML 入口文件及对应的 JavaScript 入口,每个入口对应一个独立的 Vue 应用实例,拥有各自的路由、状态和样式作用域,互不干扰。

实现步骤

1. 配置构建工具

根据所使用的构建工具,配置多个入口点。

Webpack 方案(Vue CLI)
// vue.config.js
const { defineConfig } = require('@vue/cli-service');

module.exports = defineConfig({
  pages: {
    main: {
      entry: 'src/main.js',
      template: 'public/index.html',
      filename: 'index.html'
    },
    blank: {
      entry: 'src/blank-entry.js',
      template: 'public/blank.html',
      filename: 'blank.html'
    }
  }
});
Vite 方案
// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  build: {
    rollupOptions: {
      input: {
        main: 'index.html',
        blank: 'blank.html'
      }
    }
  },
  plugins: [vue()]
});

2. 创建独立入口资源

空白页模板文件(public/blank.html)
<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8" />
  <title>纯空白页面</title>
</head>
<body>
  <div id="app"></div>
  <script type="module" src="/src/blank-entry.js"></script>
</body>
</html>
空白页入口脚本(src/blank-entry.js)
import { createApp } from 'vue';
import BlankView from './views/BlankView.vue';

// 初始化独立应用实例
const appInstance = createApp(BlankView);
appInstance.mount('#app');
空白页组件(src/views/BlankView.vue)
<template>
  <div class="full-screen">
    <h2>此页面无任何公共组件干扰</h2>
    <p>仅包含必要内容,适用于广告落地页或全屏展示场景。</p>
  </div>
</template>

<style scoped>
.full-screen {
  margin: 0;
  padding: 0;
  height: 100vh;
  background: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
</style>

3. 路由支持(可选)

若需页面跳转功能,可在独立入口中集成路由系统。

// src/blank-router.js
import { createRouter, createWebHistory } from 'vue-router';
import BlankView from './views/BlankView.vue';

export const blankRouter = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/landing', component: BlankView }
  ]
});

在入口文件中引入并使用:

import { blankRouter } from './blank-router';
const appInstance = createApp(BlankView);
appInstance.use(blankRouter);
appInstance.mount('#app');

最终,访问 /blank.html 即可加载一个完全独立、无污染的空白页面,适用于高定制化需求场景。

返回列表

上一篇:搭建首个Kylin分析引擎环境的完整指南

没有最新的文章了...

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。