欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue?+?qiankun?項(xiàng)目搭建過程

 更新時(shí)間:2023年03月03日 10:58:58   作者:小蒜瓣  
這篇文章主要介紹了vue?+?qiankun?項(xiàng)目搭建,首先是通過cli3構(gòu)建vue2項(xiàng)目,通過qiankun改造主應(yīng)用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、cli3構(gòu)建vue2項(xiàng)目

1、前期工作:查看cli安裝情況與安裝

npm install -g @vue/cli

已安裝情況查看:vue -V(大寫的V)

2、新建項(xiàng)目

vue create main-project

3、選擇自定義配置

配置選擇

選擇vue版本、babel、router、vuex、css預(yù)處理器、lint格式校驗(yàn)

選擇vue 2.x

qiankun 子應(yīng)用建議使用 history路由模式 

 選擇自己喜歡的css預(yù)處理器

選擇eslint標(biāo)準(zhǔn)配置

提交保存eslint都需要驗(yàn)證 

單獨(dú)的配置文件

不保存這個(gè)配置 

項(xiàng)目創(chuàng)建成功

自己喜歡的eslint配置eslintrc.js 

module.exports = {
    root: true,
    env: {
            node: true
    },
    extends: [
        'plugin:vue/essential',
        '@vue/standard'
    ],
    parserOptions: {
        parser: 'babel-eslint'
    },
    rules: {
        'semi': 'off',
        'quotes': 'off',
        'indent': ["error", 4],
        "space-before-function-paren": "off",
        'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
        'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
    }
}

4、進(jìn)入項(xiàng)目文件夾內(nèi) cd frame安裝插件

安裝依賴的插件 element ui、 axios

安裝element ui:

npm i element-ui -S

安裝完成后修改main.js

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App.vue'
import router from './router'
import store from './store'
 
Vue.use(ElementUI)
 
Vue.config.productionTip = false
 
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

安裝axios:

npm install axios

新建了個(gè)文件夾api index.js 引用axios,統(tǒng)一處理api與使用qiankun與此無關(guān)

import Axios from 'axios'

到此只是建項(xiàng)目,兩個(gè)項(xiàng)目一個(gè)main-project 和sub-project

主應(yīng)用 main-project:

子應(yīng)用 sub-project:

二、qiankun改造主應(yīng)用

1、 主應(yīng)用安裝qiankun

npm install qiankun --save

2、給菜單增加一個(gè)router-link,to值為"/subProject",并且在router-view的下面增加一個(gè)id為VueContainer的盒子,用于承載子應(yīng)用。

3、 新增一個(gè)qiankun文件夾里面加個(gè)index.js。導(dǎo)入qiankun中的registerMicroApps和star兩個(gè)方法,注冊(cè)子應(yīng)用并啟動(dòng)qiankun

import { registerMicroApps, start } from "qiankun";
 
export const useQiankun = () => {
    const apps = [
        {
            name: "sub-project",
            entry: "http://localhost:8091", // 主應(yīng)用端口用8090,子應(yīng)用8091
            container: "#VueContainer",
            activeRule: "/subProject", // 與route-link to的相同
            props: {
                msg: "這是父應(yīng)用傳過來的值,傳遞給子應(yīng)用sub-project"
            }
        }
    ]
 
    registerMicroApps(apps, {
        beforeLoad: [
            (app) => {
                console.log(`${app.name}的beforeLoad`);
            }
        ],
        beforeMount: [
            (app) => {
                console.log(`${app.name}的beforeMount`);
            }
        ],
        afterMount: [
            (app) => {
                console.log(`${app.name}的afterMount`);
            }
        ],
        beforeUnmount: [
            (app) => {
                console.log(`${app.name}的beforeUnmount`);
            }
        ],
        afterUnmount: [
            (app) => {
                console.log(`${app.name}的afterUnmount`);
            }
        ]
    });
 
    start({ experimentalStyleIsolation: true, prefetch: "all" });
};

4、在main.js里 導(dǎo)入 qiankun/index, 注冊(cè)子應(yīng)用并啟動(dòng)

import { useQiankun } from './qiankun/index'    
 
vueApp.$nextTick(() => {
    useQiankun()
})

三、qiankun改造子應(yīng)用

1、 主應(yīng)用安裝qiankun

npm install qiankun --save

2、先修改一下vue實(shí)例掛載的id,#app改為subApp便于區(qū)分

3、在src中增加一個(gè)文件夾qiankun,public-path.js,判斷window.__ POWERED_BY_QIANKUN __,如果是從qiankun啟動(dòng)則將window. __ INJECTED_PUBLIC_PATH_BY_QIANKUN __ 的值賦值給 __ webpack_public_path __ 

if (window.__POWERED_BY_QIANKUN__) {
  // eslint-disable-next-line camelcase, no-undef
  __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__
}

 4、router/index.js改造,創(chuàng)造vue實(shí)例移入main.js

5、main.js 導(dǎo)入VueRouter、routes、 public-path移除原來的router

import "./public-path";
import VueRouter from "vue-router";
import routes from "./router";

6、main.js中創(chuàng)建vue實(shí)例的代碼提到render函數(shù)里,并接收一個(gè)參數(shù),

router實(shí)例也放入render函數(shù),修改router/index.js,process.env.BASE_URL,指定base值為:“/subProject”

判斷public-path的window.__POWERED_BY_QIANKUN__如果不是從qiankun啟動(dòng),直接調(diào)用render表示獨(dú)立運(yùn)行

let instance
let router
function render(props = {}) {
    const { container } = props;
    router = new VueRouter({
        mode: "history",
        base: "/subProject",
        routes
    });
    instance = new Vue({
        router,
        store,
        render: (h) => h(App)
    }).$mount(container ? container.querySelector("#subApp") : "#subApp");
}
// 如果不是從qiankun啟動(dòng),直接調(diào)用render表示獨(dú)立運(yùn)行
if (!window.__POWERED_BY_QIANKUN__) {
    render();
}

5、main.js 導(dǎo)出3個(gè)必需的方法bootstrap,mount和unmount;mount函數(shù)中調(diào)用render方法進(jìn)行子應(yīng)用渲染。unmount函數(shù)中將render方法中創(chuàng)建的vue實(shí)例銷毀。

export async function bootstrap() {
    console.log("[vue] vue bapp bootstraped");
}
export async function mount(props) {
    console.log("[vue] props from main framework", props);
    render(props);
}
export async function unmount() {
    instance.$destroy();
    instance.$el.innerHTML = "";
    instance = null;
    router = null;
}

整體的main.js

import "./qiankun/public-path";
import Vue from "vue";
import VueRouter from "vue-router";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import "./assets/main.css";
import App from "./App.vue";
import routes from "./router";
import store from "./store";
 
Vue.use(ElementUI);
 
Vue.config.productionTip = false;
 
let instance
let router
function render(props = {}) {
    const { container } = props;
    router = new VueRouter({
        mode: "history",
        base: "/subProject",
        routes
    });
    instance = new Vue({
        router,
        store,
        render: (h) => h(App)
    }).$mount(container ? container.querySelector("#subApp") : "#subApp");
}
// 如果不是從qiankun啟動(dòng),直接調(diào)用render表示獨(dú)立運(yùn)行
if (!window.__POWERED_BY_QIANKUN__) {
    render();
}
 
export async function bootstrap() {
    console.log("[vue] vue bapp bootstraped");
}
export async function mount(props) {
    console.log("[vue] props from main framework", props);
    render(props);
}
export async function unmount() {
    instance.$destroy();
    instance.$el.innerHTML = "";
    instance = null;
    router = null;
}

5、增加vue.config.js,

配置允許跨域:“ Access-Control-Allow-Origin:’*’ ”,并配置webpack的output.library和output.libraryTarget

const { name } = require('./package');
module.exports = {
    productionSourceMap: false,
    lintOnSave: process.env.NODE_ENV === 'development',
    devServer: {
        proxy: {
            "/cmp": {
                target: "https://11.11.9.206:8080",
                ws: true,
                changeOrigin: true,
                secure: false
                // pathRewrite: { "^/cmp/api": "" }
            }
        },
        headers: {
            'Access-Control-Allow-Origin': '*'
        }
    },
    configureWebpack: {
        name: name,
        output: {
            library: `${name}-[name]`,
            libraryTarget: 'umd', // 把微應(yīng)用打包成 umd 庫格式
            jsonpFunction: `webpackJsonp_${name}`
        }
    }
};

 6、最終樣子       

到此這篇關(guān)于vue + qiankun 項(xiàng)目搭建的文章就介紹到這了,更多相關(guān)vue  qiankun 項(xiàng)目搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 圖文講解用vue-cli腳手架創(chuàng)建vue項(xiàng)目步驟

    圖文講解用vue-cli腳手架創(chuàng)建vue項(xiàng)目步驟

    本次小編給大家?guī)淼氖顷P(guān)于用vue-cli腳手架創(chuàng)建vue項(xiàng)目步驟講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-02-02
  • 解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題

    解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題

    今天小編就為大家分享一篇解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vuex如何在非組件中調(diào)用mutations方法

    vuex如何在非組件中調(diào)用mutations方法

    這篇文章主要介紹了vuex如何在非組件中調(diào)用mutations方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue實(shí)戰(zhàn)教程之仿肯德基宅急送App

    Vue實(shí)戰(zhàn)教程之仿肯德基宅急送App

    這篇文章主要介紹了Vue實(shí)戰(zhàn)教程之仿肯德基宅急送App,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 在vue中使用echarts的方法以及可能遇到的問題

    在vue中使用echarts的方法以及可能遇到的問題

    Echarts是一個(gè)與框架無關(guān)的JS圖表庫,但是它基于Js,這樣很多框架都能使用它,下面這篇文章主要給大家介紹了關(guān)于在vue中使用echarts的方法以及可能遇到的問題的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Vue實(shí)現(xiàn)監(jiān)聽dom節(jié)點(diǎn)寬高變化方式

    Vue實(shí)現(xiàn)監(jiān)聽dom節(jié)點(diǎn)寬高變化方式

    這篇文章主要介紹了Vue實(shí)現(xiàn)監(jiān)聽dom節(jié)點(diǎn)寬高變化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 基于vue中keep-alive緩存問題的解決方法

    基于vue中keep-alive緩存問題的解決方法

    今天小編就為大家分享一篇基于vue中keep-alive緩存問題的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解Vue中watch的高級(jí)用法

    詳解Vue中watch的高級(jí)用法

    我們通過實(shí)例代碼給大家分享了Vue中watch的高級(jí)用法,對(duì)此知識(shí)點(diǎn)有需要的朋友可以跟著學(xué)習(xí)下。
    2018-05-05
  • Vue?+?Element?自定義上傳封面組件功能

    Vue?+?Element?自定義上傳封面組件功能

    這篇文章主要介紹了Vue?+?Element?自定義上傳封面組件,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 詳解VUE項(xiàng)目中安裝和使用vant組件

    詳解VUE項(xiàng)目中安裝和使用vant組件

    這篇文章主要介紹了VUE安裝和使用vant組件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論