首页 > 其他分享 >前端微服务--qiankun--傻瓜式操作教学

前端微服务--qiankun--傻瓜式操作教学

时间:2023-01-17 18:55:06浏览次数:54  
标签:index react -- 傻瓜式 loader qiankun webpack js

前言

  qiankun框架实现效果类似于我们之前所使用的iframe,之所以现在放弃使用iframe是因为有url不同步,刷新页面iframe url状态丢失,后退前进按钮无法使用等等的问题,因此我们选择了更方便实用的qiankun。

 

用法:

  创建主基站

  1. 自己创建一个文件夹,里面写index.html,index.js,package.json,webpack.config.js 这四个文件,如果想的或可以再加上index.css或index.less

 

 

 

  2. package.json   下面的代码直接粘贴上去

{
  "name": "main",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server",
    "build": "webpack",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Rechard",
  "devDependencies": {
    "@babel/core": "^7.20.12",
    "@babel/plugin-transform-react-jsx": "^7.20.7",
    "@babel/preset-env": "^7.20.2",
    "babel-loader": "^9.1.2",
    "cross-env": "^7.0.3",
    "css-loader": "^6.7.3",
    "html-webpack-plugin": "^5.5.0",
    "less": "^4.1.3",
    "less-loader": "^11.1.0",
    "style-loader": "^3.3.1",
    "webpack": "^5.75.0",
    "webpack-cli": "^5.0.1",
    "webpack-dev-server": "^4.11.1"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "vue": "^2.6.11",
    "zone.js": "^0.12.0"
  }
}

  

  3. webpack.config.js  下面的代码直接粘贴上去,配置不喜欢的可以自己改哈

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './index.js',
  devtool: 'source-map',
  devServer: {
    open: true,
    port: '10086',
    // clientLogLevel: 'none',//关闭日志
    historyApiFallback: true,
    allowedHosts: "all",
    compress: true,
    headers: {
      'Access-Control-Allow-Origin': '*',
    },
    client: {
      overlay: { warnings: false, errors: true }
    }
  },
  output: {
    publicPath: '/',
  },
  mode: 'development',
  resolve: {
    extensions: ['.js', '.jsx', '.ts', '.tsx'],
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
            plugins: ['@babel/plugin-transform-react-jsx'],
          },
        },
      },
      {
        test: /\.(le|c)ss$/,
        use: ['style-loader', 'css-loader', 'less-loader'],
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './index.html',
      minify: {
        removeComments: true,
        collapseWhitespace: true,
      }
    })
  ]
};

  

  4. npm install ,建议cnpm install 或 yarn ,速度快些

 

  5. index.html

<!DOCTYPE html>
<html lang="en">
<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">
  <title>主文件</title>
  <style>
    a {
      margin: 10px;
    }
  </style>
</head>
<body>
  <ul>
    <li><a href="/vue">vue</a></li>
    <li><a href="/react">react</a></li>
    <li><a href="/angular">angular</a></li>
  </ul>
  <main id="container"></main>
</body>
</html>

  

  6. index.js

import { registerMicroApps, start } from 'qiankun';

registerMicroApps([
  {
    name: 'reactApp',//应用名
    entry: '//localhost:7100',//微应用的地址,改为线上项目地址,但线上项目地址要先需要允许跨域访问
    container: '#container',//挂载的dom节点,会渲染在html的<main id="container">上
    activeRule: '/react',//访问路径,像这个项目就是 http://localhost:10086/vue/home 就可以访问到localhost:7100 项目的内容,下面的几个微项目同理
  },
  {
    name: 'vueApp',
    entry: '//localhost:7101',
    container: '#container',
    activeRule: '/vue',
  },
  {
    name: 'angularApp',
    entry: '//localhost:7102',
    container: '#container',
    activeRule: '/angular',
  },
]);
// 启动 qiankun
start();

  

  7. npm run start  启动项目(启动项目前需要先启动微应用,微应用往往是已经上线的项目,比如腾讯书城、腾讯新闻、腾讯官网等等,但是这些每个都需要单独登录,但通过主应用可以实现单点登录的效果,而且微应用无需下载相关依赖,只需要配置生命周期即可);

  效果图

 

 

 

  通过上述操作就可以建立基站(也就是主项目),然后放服务器访问即可,qiankun最大的好处就是无需影响原先的子项目,不需要单独放一块,技术栈互不影响,哪怕vue,react,angular,jquery或者之前的jsp等等都能完美兼容,而且qiankun提供了相关的api微应用之间可以进行数据交互,例如其中一个微应用做了登录操作,存储其Token,那么其他微应用拿到了Token就不需要跳转登录页即可正常访问,来实现单点登录的效果。

  配置微应用的方法在官网介绍的非常详细,大家根据不同的框架然后对应的修改自己项目的配置,再增加三个qiankun框架的生命周期即可,都是傻瓜式操作,很简单。

  

  微应用项目的动态配置地址:https://qiankun.umijs.org/zh/guide/tutorial

 

 

  另外我写了简单的qiankun 项目,供大家参考:https://github.com/zengxudong-bit/qiankun-demo

 

标签:index,react,--,傻瓜式,loader,qiankun,webpack,js
From: https://www.cnblogs.com/zxd66666/p/17058526.html

相关文章