Git Product home page Git Product logo

microfront-end-single-spa's Introduction

microfront-end-single-spa

利用single-spa搭建的一个微前端架构,其中各个小型应用具有独立部署、独立运行、允许存在独立仓储的特性。由portal项目实现各个应用的组合

主要技术

  1. single-spa
  2. systemJs

项目结构

  1. menu项目,开发框架react
  2. portal项目,组件调度、路由分发
  3. project1项目,开发框架react
  4. project2项目,开发框架vue,由vue-cli3脚手架生成

项目介绍

menu项目

  1. 基于react框架,自定义webpack打包配置
  2. 集成antd-design

portal项目

  1. 不依赖三大框架,自定义webpack打包配置
  2. 集成systemJS,用于引入子模块打包后的js文件(例如bundle.js)
  3. 提供路由分发功能,具体请见/portal/src/config/portal/src/activityFns,用于控制懒加载模块js文件,例跳转到project2项目时,才开始加载project2打包后的js文件
  4. 提供页面容器,可以理解成最外层门户,详情请见/portal/src/index.html;预定义子模块的打包js文件,引入公共模块依赖,子模块不需要自己单独打包,例如react、vue、axios等开源框架;提供HTML容器
<div id='menu'></div>
<div id='content'>
    <div id="react"></div>
    <div id="vue"></div>
</div>

project1项目

  1. 基于react框架,自定义webpack打包配置
  2. 集成react-router-dom,实现路由与页面组件的绑定

project2项目

  1. 基于vue-cli3生成的VUE项目,引入了single-spa,即在vue-cli3项目基础上执行了vue add single-spa
  2. 集成了vuex、vue-router、axios、element-ui

基于portal整合的完整运行步骤

  1. 开启公共依赖模块的服务,我的公共依赖模块在portal项目下common-deps-static文件夹中,只需要在这个文件夹下开启服务即可,可以通过http-server插件,端口设置为8000,并且设置跨域--cors
  2. portal项目下,执行命令npm run start
  3. project2、menu、project1项目下,分别执行命令npm run dev
  4. chrome中打开页面:http://localhost:8233/即可

各个子模块单独启动

由于DEMO中,业务模块就menu、project1、project2,因此,只对这三个项目进行了webpack打包配置

  1. 启动本地开发模式(适用于:menu、project1、project2),都是相同的命令:npm run dev:local

提示(TIP)

  1. 很多同学说启动单个项目的时候,控制台报错,define is not defined
    这个是因为,在基于portal整合的启动模式下:npm run dev,project2(Vue)的打包成umd模式的,project1、menu是打包成amd模式,且只是一个单独的js文件,这样通过各自启动的IP端口打开页面是会报错的,浏览器解析不了这种JS模块,需要portal项目的systemjs来引入,而且npm run dev执行后,并没有生成index.html,更不可能打开页面。
    因此要单独启动小模块,请运行npm run dev:local,或参考package.json中的启动命令

预告

后续将在子模块中尝试集成各种优秀开源框架,探索single-spa到底有多大的利用价值!
能否应用到正式的大型超大型项目中?
优化微服务架构,达到开箱即用。

microfront-end-single-spa's People

Contributors

dependabot[bot] avatar justwiner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

microfront-end-single-spa's Issues

运行步骤1

运行步骤1如何开启服务?
是新建一个http-server就可以吗?

project2: npm run dev:local运行报错

ERROR TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:121:11)
at Object.resolve (path.js:139:9)
at F:\project\microfront-end-single-spa-master\project2\node_modules@vue\cli-service\lib\Service.js:297:48
at Array.map ()
at Service.resolveWebpackConfig (F:\project\microfront-end-single-spa-master\project2\node_modules@vue\cli-service\lib\Service.js:297:31)
at PluginAPI.resolveWebpackConfig (F:\project\microfront-end-single-spa-master\project2\node_modules@vue\cli-service\lib\PluginAPI.js:132:25)
at serve (F:\project\microfront-end-single-spa-master\project2\node_modules@vue\cli-service\lib\commands\serve.js:75:31)
at Service.run (F:\project\microfront-end-single-spa-master\project2\node_modules@vue\cli-service\lib\Service.js:230:12)
at Object. (F:\project\microfront-end-single-spa-master\project2\node_modules@vue\cli-service\bin\vue-cli-service.js:36:9)
at Module._compile (internal/modules/cjs/loader.js:1256:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1277:10)
at Module.load (internal/modules/cjs/loader.js:1105:32)
at Function.Module._load (internal/modules/cjs/loader.js:967:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47

hs -p 8000 --cors

run.bat中最后一个start cmd /k "cd portal/common-deps-static&&hs -p 8000 --cors"中的hs是啥命令,我的报错

D:\WebSpace\microfront-end-single-spa\portal\common-deps-static>hs -p 8000 --cors
'hs' is not recognized as an internal or external command,
operable program or batch file.

要安装啥?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.