ClassicHeader

<template>
  <header class="classic">
    <div class="left">
        <slot name="left"></slot>
    </div>
    <div class="right">
        <slot name="right"></slot>
    </div>
  </header>
</template>

<script>
export default {
  name: 'ClassicHeader',
}
</script>

<style scoped>
  header.classic {
    height: 45px;
    
    display: flex;
    align-items: center;
    justify-content: space-between;

    background-color: #f9f9fb;
    border-bottom: 1px solid #dcdfe6;  
  }

  header.classic .left {
    margin-left: 10px;
    font-size: 14px;
    font-weight: 400;
    color: #606266;
    user-select: none;
  }

  header.classic .right {
    margin-right: 10px;

    display: flex;
  }
</style>

这是一个名为 "ClassicHeader" 的 Vue 单文件组件 (SFC)。这个组件包括三个部分:模板(template)、脚本(script)和样式(style)。以下是组件的主要功能:

  1. 模板(template)部分:

    • 一个带有 "classic" 类名的 header 元素。
    • header 元素包含两个子 div,分别具有 "left" 和 "right" 类名。
    • 在这两个子 div 中,分别插入名为 "left" 和 "right" 的插槽(slot),以便在使用组件时可以在父组件中传入自定义内容。
  2. 脚本(script)部分:

    • 定义并导出一个名为 "ClassicHeader" 的 Vue 组件。
  3. 样式(style)部分:

    • 使用 scoped 属性,这样定义的样式仅应用于当前组件,不会影响其他组件。
    • header.classic 元素设置高度、布局、背景颜色和底部边框样式。
    • header.classic .left 设置左边距、字体大小、字体权重、颜色和禁止用户选择样式。
    • header.classic .right 设置右边距和布局样式。

简言之,ClassicHeader 是一个 Vue 组件,它定义了一个具有两个插槽的页眉,可用于在父组件中传入自定义的左侧和右侧内容。组件的样式主要针对页眉本身以及左右两侧内容的排列和外观。

SubTitle

<template>
  <div class="subTitle">
    <span><slot></slot></span>
  </div>
</template>

<script>
export default {
  name: 'SubTitle',
}
</script>

<style scoped>
  .subTitle {
    /* background-color: yellowgreen; */
    padding-bottom: 10px;
  }

  .subTitle span {
    font-family: 'Courier New', Courier, monospace;
    user-select: none;

    letter-spacing: 1px;
  }
</style>

这是一个名为 "SubTitle" 的 Vue 单文件组件 (SFC)。这个组件包括三个部分:模板(template)、脚本(script)和样式(style)。以下是组件的主要功能:

  1. 模板(template)部分:

    • 一个带有 "subTitle" 类名的 div 元素。
    • 在这个 div 元素中,插入一个默认插槽(slot),以便在使用组件时可以在父组件中传入自定义内容。
  2. 脚本(script)部分:

    • 定义并导出一个名为 "SubTitle" 的 Vue 组件。
  3. 样式(style)部分:

    • 使用 scoped 属性,这样定义的样式仅应用于当前组件,不会影响其他组件。
    • .subTitle 元素设置内部底部填充。
    • .subTitle span 设置字体、禁止用户选择样式和字母间距样式。

简言之,SubTitle 是一个 Vue 组件,它定义了一个带有默认插槽的副标题,可以在父组件中传入自定义内容。组件的样式主要针对副标题本身的外观和间距。

vue-my-cnblog\public\index.html

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
    <script src="./tinymce/tinymce.min.js"></script>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

这是一个简单的 HTML 文件,主要用于承载 Vue 项目的根组件。以下是 HTML 文件的主要内容:

  1. 文档类型、语言、字符集、浏览器兼容性和视口设置的元信息。

  2. 网页的 title 使用 <%= htmlWebpackPlugin.options.title %>,这是一个模板语法,用于在编译时从 webpack 的 HtmlWebpackPlugin 配置中读取 title

  3. 一个指向 favicon.ico 的图标链接。

  4. 引入一个外部脚本,这是 TinyMCE 编辑器的主要 JavaScript 文件,这个文件会在浏览器中加载 TinyMCE 编辑器。

  5. noscript 标签内有一个警告消息,当用户的浏览器禁用 JavaScript 时,会显示这个消息,提醒用户需要启用 JavaScript 以获得完整的功能体验。

  6. 一个带有 ID "app" 的 div 元素,Vue 项目的根组件将在这里挂载。

  7. 注释提到,生成的构建文件将自动注入到此 HTML 文件中。

这个 HTML 文件为 Vue 项目提供了基本的骨架结构,并通过引入 TinyMCE 编辑器脚本使其可在项目中使用。在编译时,构建好的 Vue 应用程序将挂载到带有 ID "app" 的 div 元素中。

<script src="./tinymce/tinymce.min.js"></script> 是在 HTML 文件中引入 TinyMCE 编辑器的方式。TinyMCE 是一个流行的 WYSIWYG(所见即所得)富文本编辑器,它允许用户在浏览器中创建和编辑 HTML 内容。

将 TinyMCE 编辑器脚本添加到 HTML 文件的原因有以下几点:

  1. 依赖加载:将 TinyMCE 编辑器作为一个外部依赖加载到项目中,确保在 Vue 应用程序中需要使用它时,TinyMCE 编辑器已经在浏览器中加载并可用。

  2. 全局可用:将 TinyMCE 编辑器作为外部脚本引入,使其在整个 Vue 项目中都可以访问和使用。这意味着在项目的任何地方都可以方便地使用 TinyMCE 编辑器创建和编辑富文本内容。

  3. 性能优化:将 TinyMCE 编辑器单独引入而不是将其打包到 Vue 项目的主 JS 文件中,有助于提高项目的构建速度和加载性能。这是因为浏览器会单独缓存这个文件,而不是将它与整个 Vue 应用程序一起加载。

总之,在 HTML 文件中引入 TinyMCE 编辑器脚本是为了确保其在整个 Vue 项目中都可用,便于在需要时使用它创建和编辑富文本内容,同时还能优化项目的性能。