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日

相关文章

  • Android自定义UI手势密码简单版

    下面我来详细讲解 “Android自定义UI手势密码简单版” 的完整攻略。 一、背景知识 在开始讲解制作手势密码的过程之前,需要先了解一下Android中常用的一些UI控件,例如:View、Canvas、Path、Paint等。其中,View是Android中最基础的UI控件,Canvas是用于绘制的基础容器,Path用于描述绘制图形的路径,Paint用于设…

    other 2023年6月25日
    00
  • hdmiedid处理过程

    当HDMI设备连接到显示器时,源设备会发送一个EDID读取请求。显示器会响应该请求,并将EDID数据发送回源设备。EDID数据通常存储在显示器的EEPROM中,可以通过I2C总线进行访问。 源设备会解析接收到的EDID数据,并确定显示器的能力和特性。EDID数据包括显示器的制造商、型号、分辨率、刷新率、色彩空间、音频支持等信息。源设备可以使用这信息来确定最佳…

    other 2023年5月8日
    00
  • Web.config(应用程序的配置信息)总结

    当我们开发Web应用时,我们经常需要配置很多信息,例如数据库连接字符串、异常处理、授权验证等等。对于ASP.NET/Web应用来说,我们可以使用Web.config文件来存储这些配置信息。下面是Web.config配置文件的一些重要关键点。 Web.config文件的位置 Web.config文件通常位于Web应用的根目录下。当Web应用启动时,它会自动加载…

    other 2023年6月25日
    00
  • win10系统下word2010文档怎样添加绘图

    Win10系统下Word2010文档添加绘图的完整攻略 Microsoft Word是一款常用的文字处理软件,它不仅可以处理文字,还可以添加各种图形和绘图。本文将提供一个完整攻略,介绍Win10系统下Word2010文档添加绘图的方法,并提供两个示例说明。 添加绘图 在Word2010中添加绘图通常包括以下步骤: 步骤1:打开Word 在Windows 10…

    other 2023年5月8日
    00
  • postman接口做关联测试的方法步骤

    Postman接口做关联测试的方法步骤攻略 Postman是一款常用的API开发和测试工具,它提供了丰富的功能来进行接口测试。在进行关联测试时,我们可以使用Postman的环境变量和脚本功能来实现接口之间的数据传递和关联。下面是使用Postman进行接口关联测试的详细步骤: 步骤一:创建环境变量 打开Postman,点击左上角的齿轮图标,选择\”Manage…

    other 2023年7月29日
    00
  • 一起学vue:crud(增删改查)

    以下是“一起学vue:crud(增删改查)”的完整攻略,包含两个示例说明: 步骤1:创建Vue项目 首先,需要创建一个Vue项目。可以使用Vue CLI创建一个新的Vue项目。以下是创建步骤: 安装Vue CLI: bash npm install -g @vue/cli 创建一个新的Vue项目: bash vue create my-project 其中,…

    other 2023年5月9日
    00
  • layui表格自定义toolbar

    当然,我很乐意为您提供有关“locate命令详解”的完整攻略。以下是详细的步骤和两个示例: 1 locate命令详解 locate命令是Linux系统中的一个命令行工具,用于快速查找文件。它可以在文件系统中搜索文件名,而不是搜索文件内容。locate命令使用一个数据库来存储文件名和路径信息,因此它比使用find命令更快。 2 locate命令的使用 以下是使…

    other 2023年5月6日
    00
  • iOS13.3正式版怎么降级 iOS13.3新特性与升降级全攻略

    iOS 13.3正式版降级攻略 如果你想将你的设备从iOS 13.3升级到iOS 13.3正式版,下面是一个详细的降级攻略。在这个过程中,我们将使用iTunes来完成降级操作。 步骤一:备份设备 在开始降级之前,务必备份你的设备。这样可以确保你的数据在降级过程中不会丢失。你可以通过iCloud或iTunes进行备份。 步骤二:下载iOS 13.3正式版固件 …

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