Skip to content

SPA MPA

题目

何时用 SPA 何时用 MPA ?

分析

  • SPA - Single-page Application 单页面应用,只有一个 html 文件,用前端路由切换功能
  • MPA - Multi-page Application 多页面应用,每个页面是单独的 html 文件

现在基于 React Vue 开发时,大部分产出的都是 SPA ,很少会产出 MPA 。
但并不是所有的场景都适用于 SPA ,项目设计时要确定好,否则后面不好改。

SPA 适用于一个综合应用

特点

  • 功能较多,一个界面展示不完
  • 以操作为主,不是以展示为主

举例

  • 大型的后台管理系统(阿里云的管理后台)
  • 知识库(语雀、腾讯文档)
  • 功能较复杂的 WebApp(外卖)

MPA 适用于孤立的页面

特点

  • 功能较少,一个页面展示得开
  • 以展示为主,而非操作

举例

  • 分享页(微信公众号文章)
  • 新闻 App 里的落地页(有可能是用 H5 + hybrid 开发的)

Webpack 打包

js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

module.exports = {
  mode: 'production',
  // 多入口
  entry: {
    home: './src/home/index.js',
    product: './src/product/index.js',
    about: './src/about/index.js'
  },
  output: {
    filename: 'js/[name].[contentHash].js', // name 即 entry 的 key
    path: path.resolve(__dirname, './dist')
  },
  plugins: [
    new CleanWebpackPlugin(),

    // 三个页面
    new HtmlWebpackPlugin({
      title: '首页',
      template: './template/index.html',
      filename: 'home.html',
      chunks: ['home']
    }),
    new HtmlWebpackPlugin({
      title: '产品',
      template: './template/product.html',
      filename: 'product.html',
      chunks: ['product']
    }),
    new HtmlWebpackPlugin({
      title: '关于',
      template: './template/about.html',
      filename: 'about.html',
      chunks: ['about']
    })
  ]
}

扩展:技术是一回事,怎么做是另外的事儿

讲一个故事,说明这个问题,请大家注意。

我之前的一个同事,他技术很好。 我就问他一个问题:你觉得在项目发布之前,最需要做的是什么?
他回复是:1. 扩展性还不太好,得增强一下;2. 解决当前的 bug 。

然后我继续追问:1. 你觉得扩展性不好用,是扩展什么功能不好用,举个例子来说明?2. 目前记录的这些 bug ,那几个是高优的?
然后他没有回答出来。

技术人员有这个想法很正常,我之前也是。
我刚毕业那 2 年,对自己维护的一个系统提出了很多升级意见,都是自己从书上、竞品参考的。但领导问:这些如何实际应用到我们的项目?
我就回答不上来了。