vue接入微前端无界框架总结

写在前面:
这里就不介绍为什么使用微前端,真正做前端同学应该都知道的。本文主要是做个总结我在公司项目中实际使用微前端,项目已经在公司生产上运行了4个月左右了,目前没有发现什么问题,在此记录下,方便以后在使用的时候忘记。
我在项目中使用的是无界微前端框架来做的。关于无界的介绍和使用可以去无界官网文档github地址官网demo
查看研究。

一、安装(主应用)

在主应用中安装无界,我主使用的vue2项目,所以安装的是wujie-vue2版本的,其他前端框架(react)可以去无界文档找对应的版本安装

npm install wujie-vue2 --save // 注意这里是在主应用中安装

二、使用(主应用)

在项目入口文件中(main.js)引入无界

import WujieVue from 'wujie-vue2'
// 这个文件主要是配置一些子应用的测试环境地址
import hostMap from './hostMap.js'
// 这里是有多个子应用的时候,可以把子应用的地址配置放在一个文件,导入进来就行了
import {  ENV_DOMAIN_MT_MAP } from '@/constants/sub-app.js'

const { setupApp, preloadApp } = WujieVue // 使用到无界API
Vue.use(WujieVue)

// 创建应用,主要是设置配置,preloadApp、startApp的配置基于这个配置做覆盖
setupApp({
  name: '子应用名称', // 这里这个名称要和展示子应用页面设置的名称一样哦!!!!
  url: hostMap(ENV_DOMAIN_MT_MAP[process.env.VUE_APP_API_ENV]), // 子应用的域名链接
})
preloadApp({
  name: '子应用名称', // 这里这个名称要和展示子应用页面设置的名称一样哦!!!!
  url: hostMap(ENV_DOMAIN_MT_MAP[process.env.VUE_APP_API_ENV]), // 子应用的域名链接
})

hostMap.js文件

// 这里就不写公司的应用域名了,用百度做例子,到时候把自己子应用的域名写上就行了
const map = {
  // 子应用的测试环境
  '//dev-baidu.baidu.cn/': ''//dev-baidu.baidu.cn/',

// 子应用的预发环境
  '//staging-baidu.baidu.cn/': '//staging-baidu.baidu.cn/',

  // 子应用的生产环境
  '//baidu.baidu.cn/': '//baidu.baidu.cn/',
}

export default function hostMap(host) {
  if (process.env.NODE_ENV === 'production') return map[host]
  return host
}

constants/sub-app.js文件

// 子应该环境域名,这里就不写公司的应用域名了,用百度做例子,到时候把自己子应用的域名写上就行了
export const ENV_DOMAIN_MT_MAP = {
  development: '//子应用开发测试域名/', // 开发/测试环境 例如:dev.baidu.com
  staging: '//子应用预发环境域名/', // 预发环境 例如:staging.baidu.com
  production: '/子应用生产环境域名/' // 生产环境 例如:baidu.com
}

新建一个展示子应用的页面(这里是真正使用无界的时候了)
instant-sticker/instant-sticker.vue

<!-- 展示子应用的页面 -->
<style lang="scss" scoped>
#instant {
  height: calc(100vh - 81px);
}
</style>

<template>
  <div style="width: 100%; height: 100%;">
    <WujieVue
      width="100%"
      height="100%"
      name="子应用名称,这里这个名称要和main.js中设置的一样哦!!!"
      :url="mtUrl"
      :sync="true"
    />
  </div>
</template>

<script>
import user from '@/utils/user' // 这个可以忽略,是获取用户信息的
import hostMap from '@/hostMap'
import { ENV_DOMAIN_MT_MAP } from '@/constants/sub-app.js'

export default {
  name: 'instant-sticker',
  data() {
    return {
      mtUrl: '', // 子应用链接
      token: '', // 子应用需要的参数
    }
  },
  mounted() {
    this.token = user.getToken()
    this.mtUrl = `${hostMap(ENV_DOMAIN_MT_MAP[process.env.VUE_APP_API_ENV])}directBank?token=${this.token}`
  }
}
</script>

三、子应用中的配置

在子应用的配置其实很简单的,只需要在子应用main.js中稍作配置就行
main.js

// 给vue实例挂载 window.__POWERED_BY_WUJIE__,用来区分项目是否已微前端的方式放在主应用中使用
Vue.prototype.$wujie = window.__POWERED_BY_WUJIE__ ? true : false
// 子应用中使用微前端框架 - 无界 走这里
if (window.__POWERED_BY_WUJIE__) {
  let instance
  window.__WUJIE_MOUNT = () => {
    instance = new Vue({ router, store, render: (h) => h(App) }).$mount('#app')
  }
  window.__WUJIE_UNMOUNT = () => {
    instance.$destroy()
  }
} else {
	// 子应用没有以微前端的方式,使用走这里
  new Vue({
    router,
    store,
    render: (h) => h(App)
  }).$mount('#app')
}
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要连接Vue框架前端和数据库后端,可以使用Vue.js与Node.js的组合来实现。具体步骤如下: 1. 创建Vue.js项目 使用Vue CLI创建一个新的Vue.js项目: ```bash vue create my-project ``` 2. 创建Node.js后端 在项目根目录下创建一个名为"backend"的文件夹,并在其中创建一个名为"server.js"的文件。使用Express.js框架创建一个简单的Node.js后端: ```javascript const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`) }) ``` 3. 连接数据库 使用Node.js的MySQL模块连接数据库,可以使用以下代码: ```javascript const mysql = require('mysql') const connection = mysql.createConnection({ host: 'localhost', user: 'yourusername', password: 'yourpassword', database: 'yourdatabase' }) connection.connect((err) => { if (err) throw err console.log('Connected to database') }) ``` 4. 创建API 在Node.js后端中创建API,以便Vue.js前端可以与后端进行通信。例如,可以创建一个名为"/users"的API,用于获取所有用户的数据: ```javascript app.get('/users', (req, res) => { connection.query('SELECT * FROM users', (error, results, fields) => { if (error) throw error res.send(results) }) }) ``` 5. 在Vue.js中调用API 在Vue.js中,可以使用Axios库调用Node.js后端中的API。例如,可以在Vue.js组件中使用以下代码获取所有用户的数据: ```javascript import axios from 'axios' export default { data() { return { users: [] } }, created() { axios.get('http://localhost:3000/users') .then(response => { this.users = response.data }) .catch(error => { console.log(error) }) } } ``` 上面的代码使用Axios库调用了Node.js后端中的"/users" API,并将返回的数据存储在Vue.js组件的"data"属性中。 通过上述步骤,可以在Vue.js前端和Node.js后端之间建立连接,从而实现前端与数据库后端的数据交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值