vue-cli3+ts+webpack实现多入口多出口功能

“vue-cli3+ts+webpack实现多入口多出口功能”需要做如下几个步骤:

  1. 初始化项目

使用vue-cli3初始化一个vue项目,这个项目作为主项目,用于引入其他模块。

vue create my-project
  1. 添加模块

在主项目中,通过npm或yarn安装其他需要接入主项目的模块,例如我们需要接入一个blog模块,通过以下命令安装:

npm install blog --save
  1. 配置webpack

在vue-cli3中,webpack配置被封装到了vue.config.js文件中。

首先需要设置webpack入口entry和出口output

module.exports = {
  pages: {
    index: {
      entry: 'src/main.ts',
      template: 'public/index.html',
      filename: 'index.html'
    },
    blog: {
      entry: 'src/modules/blog/main.ts',
      template: 'public/blog.html',
      filename: 'blog.html'
    }
  }
}

其中pages对象中的key作为html文件名,value为入口文件名。我们通过配置多个entry和出口来实现多入口多出口的项目。

需要注意的是,每个入口文件的tsconfig.json中需要添加以下配置:

{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "moduleResolution": "node",
    "esModuleInterop": true,
  }
}
  1. 编写模块代码

src/modules/blog/目录下新建一个入口文件main.ts,可以在其中引入其他需要使用的模块,例如blog.ts

import Blog from './blog'

new Blog()

Blog类的定义写在blog.ts中:

export default class Blog {
  constructor() {
    console.log('blog module loaded!')
  }
}
  1. 运行项目

在主项目根目录下运行 npm run serve,打开http://localhost:8080可以看到主页,打开http://localhost:8080/blog.html可以看到博客页。

示例1:

假设我们有一个user模块,这个模块也需要接入主项目中进行使用。

  • 首先,在主项目中安装模块: npm install user --save
  • 然后,在vue.config.js中添加入口和出口:
  pages: {
    index: 'src/main.ts',
    blog: 'src/modules/blog/main.ts',
    user: 'src/modules/user/main.ts' // 添加user入口
  },
  • src/modules/user/目录下新建一个入口文件main.ts,可以在其中引入其他需要使用的模块,例如user.ts
import User from './user'

new User()
  • user.ts中编写User类代码:
export default class User {
  constructor() {
    console.log('user module loaded!')
  }
}

示例2:

假设我们需要使用typescript编写代码。

  • vue.config.js中,我们需要修改webpack配置,设置esModuleInteroptrue,这个选项在tsconfig.json中也需要设置。
module.exports = {
  pages: {
    index: 'src/main.ts',
    blog: 'src/modules/blog/main.ts'
  },

  configureWebpack: {
    module: {
      rules: [
        {
          test: /\.tsx?$/,
          loader: 'ts-loader',
          options: { appendTsSuffixTo: [/\.vue$/] }
        }
      ]
    },

    resolve: {
      extensions: ['.ts', '.tsx', '.js', '.json'],
    },
  },

  // 修改默认的入口文件名
  chainWebpack: config => {
    config.entry('app').clear().add('./src/main.ts')
  },

  // 这里添加vue-cli支持的全局变量
  pluginOptions: {
    'style-resources-loader': {
      preProcessor: 'less',
      patterns: [
        path.resolve(__dirname, './src/assets/less/variable.less'),
      ]
    }
  },

  css: {
    loaderOptions: {
      less: {
        javascriptEnabled: true
      }
    }
  }
}
  • 然后需要在每个模块的tsconfig.json中添加以下配置
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "sourceMap": true,
    "allowSyntheticDefaultImports": true,
    "resolveJsonModule": true,
    "experimentalDecorators": true,
    "isolatedModules": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "strictPropertyInitialization": true,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitDeclareDependencies": true,
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules", "dist"]
}
  • 在代码中,需要使用TypeScript语法编写所有模块的代码。

完整代码请参考: https://github.com/frankfangfei/vue-cli3-multi-pages

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli3+ts+webpack实现多入口多出口功能 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 关于c++:错误:标识符“cout”未定义。

    在C++中,如果您在程序中使用cout,但未包含必要的头文件,则会出现“错误:标识符’cout’未定义”的错误。在本攻略,我们将详细讲解如何解决此,并提供两个示例说明。 包含头文件 解决“错误:标识符’cout’未定义”的错误,我们需要包含iostream头文件。该头文件包含了cout和cin等标准输入输出流对象的定义。以下是一个示例,演示了如包含iostr…

    other 2023年5月9日
    00
  • Chrome界面变大怎么办 两种谷歌Chrome浏览器界面缩放的解决方案

    针对“Chrome界面变大怎么办 两种谷歌Chrome浏览器界面缩放的解决方案”的问题,我将提供以下完整攻略: 问题现象 在使用Chrome浏览器浏览网页时,可能会出现突然界面变大的情况,这往往会给用户造成不便,影响了用户的使用体验,那么该如何解决呢?这里提供两种Chrome浏览器界面缩放的解决方案,让大家轻松应对突发情况。 解决方案一:通过快捷键解决 操作…

    other 2023年6月26日
    00
  • CentOS中环境变量与配置文件的深入讲解

    CentOS中环境变量与配置文件的深入讲解 什么是环境变量? 环境变量是指在操作系统中用于指定操作系统运行环境的变量。这些变量储存在操作系统的内核空间或者用户空间,用于配置与系统运行相关的各种参数,比如路径、编译器等。 如何设置环境变量? 在CentOS中,我们可以通过以下两种方式来设置环境变量: 1. 使用export命令 我们可以使用export命令来将…

    other 2023年6月27日
    00
  • 原生JS实现图片懒加载(lazyload)实例

    下面就来详细讲解原生JS实现图片懒加载(lazyload)实例的完整攻略。 什么是懒加载(lazyload) 懒加载(也称为延迟加载)是一种在网页上优化图片加载的技术,它可以减少网页的初次加载时间,提高用户体验。懒加载的原理是在页面初始加载时,只加载可视区域内的图片,当用户滑动页面时,再加载其他区域的图片,这样可以避免一次性请求大量的图片资源,减少页面的下载…

    other 2023年6月25日
    00
  • 使用ViewPager实现三个fragment切换

    ViewPager是Android中常用的控件之一,可以实现多个Fragment之间的切换。本文将介绍使用ViewPager实现三个Fragment切换的完整攻略,包括创建Fragment、创建ViewPager、设置适配器等内容,并提供两个示例说明。 1. 创建Fragment 在使用ViewPager实现Fragment切换之前,我们需要先创建三个Fra…

    other 2023年5月5日
    00
  • iOS App开发中的UIStackView堆叠视图使用教程

    iOS App开发中的UIStackView堆叠视图使用教程 UIStackView是iOS开发中一个非常强大的布局容器,它可以帮助我们快速创建和管理视图的布局。本教程将详细介绍如何在iOS App开发中使用UIStackView。 1. 创建UIStackView 要创建一个UIStackView,首先需要在Interface Builder中拖拽一个St…

    other 2023年7月28日
    00
  • windows下gitbash安装教程(小白教程)

    下面是详细的“Windows下GitBash安装教程(小白教程)”。 步骤一:下载Git安装包 首先,从Git官网下载Git安装包。请根据您当前使用的操作系统版本选择对应的安装包,使用以下链接下载: Git for Windows 官方下载页面 示例:如果您的电脑是 Windows 10 操作系统,则应选择“64位Git for Windows 2.32.0…

    other 2023年6月27日
    00
  • 使用Ruby编写脚本进行系统管理的教程

    以下是使用Ruby编写脚本进行系统管理的完整攻略: 步骤1:安装Ruby 首先,确保您的系统已经安装了Ruby。您可以从Ruby官方网站(https://www.ruby-lang.org/)下载并安装适合您系统的Ruby版本。 步骤2:创建脚本文件 在您选择的文本编辑器中创建一个新的Ruby脚本文件,例如system_management.rb。 步骤3:…

    other 2023年10月17日
    00
合作推广
合作推广
分享本页
返回顶部