个人网站搭建保姆级教程(2)- 前端工程umi脚手架搭建

前言

最近搞了个服务器,想着自己做个网站的脚手架,因为自己是纯前端新手,而且半路出家,中途踩了好多坑,准备写5篇给各位大佬们分享一下,如何从0搭建个人网站

  1. 服务器购买与环境搭建
  2. 前端工程umi脚手架搭建
  3. 服务器node前端启动文件
  4. 服务器node后端编写
  5. 数据库搭建

框架选取

选择了umi框架(react),因为umi框架非常成熟,而且可以直接打包成可以直接线上服务器的版本

具体可以参考官方文档https://umijs.org/zh-CN/docs/getting-started

框架搭建

新建一个文件夹,打开cmd,输入

yarn create @umijs/umi-app

 

等待漫长的加载,之后打开项目的根目录,需要注意的是下面两个文件

.umirc.ts umi的配置文件,比如代理、路由等等都是在这里配置的

package.json文件,主要是打包配置,可以配置本地开发环境的环境、线上的打包环境和一些常用的命令

.umirc.ts的说明

以下是我的.umirc.ts

import { defineConfig, IConfig } from 'umi';
import routes from './config/.umire.routes';
import proxy from './config/.umirc.proxy';

const config: IConfig = {
  publicPath: './',
  nodeModulesTransform: {
    type: 'none',
  },
  // proxy,
  routes,
  fastRefresh: {},
}

export default config;

 可以像我这样配置,这样routes可以在外部文件进行配置

(比如我这个,在./config目录下新建一个.umire.routes文件,如下)

export default [
  { path: '/login', component: '@/pages/login' },
  {
    path: '/',
    component: '@/layouts/index',
    routes: [
      { exact: true, path: '/', component: '@/pages/home' },
      { path: '/roomList', exact: true, component: '@/pages/roomList' },
      { path: '/user', exact: true, component: '@/pages/user' },
      { path: '/room', exact: true, component: '@/pages/room' },
      { redirect: '/login' },
    ],
  },
];

首先定义了路由/login是跳转到组件/pages/login,然后定义其他路由,这里其他页面还使用了layout布局,具体可以参考umi文档

package.json的说明

{
  "name": "test",
  "version": "1.0.0",
  "description": "pininglan",
  "author": "pininglan",
  "main": "/src/pages/index.ts",
  "private": false,
  "scripts": {
    "start": "umi dev",
    "build": "umi build",
    "postinstall": "umi generate tmp",
    "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
    "test": "umi-test",
    "test:coverage": "umi-test --coverage"
  },
  "gitHooks": {
    "pre-commit": "lint-staged"
  },
  "lint-staged": {
    "*.{js,jsx,less,md,json}": [
      "prettier --write"
    ],
    "*.ts?(x)": [
      "prettier --parser=typescript --write"
    ]
  },
  "dependencies": {
    "@ant-design/pro-form": "1.7.5",
    "@ant-design/pro-layout": "4.10.2",
    "@ant-design/pro-table": "1.0.22",
    "ahooks": "^3.0.1",
    "antd": "4.6.4",
    "classnames": "^2.3.1",
    "css-vars-ponyfill": "^2.3.2",
    "current-user": "^0.1.36",
    "dva": "^2.4.0",
    "dva-cli": "^0.10.1",
    "echarts": "^5.1.2",
    "echarts-for-react": "^3.0.1",
    "eventemitter3": "^4.0.7",
    "express": "^4.17.3",
    "moment": "^2.22.2",
    "qs": "^6.10.2",
    "react": "^16.8.6",
    "react-custom-scrollbars": "^4.2.1",
    "react-dom": "^16.8.6",
    "react-keep-alive": "^2.5.2",
    "react-pm-idaas-auth": "^0.1.3",
    "react-pm-utils": "^0.0.54",
    "react-use": "^11.3.2",
    "reconnecting-websocket": "^4.4.0",
    "redux": "^4.0.1",
    "resize-observer-polyfill": "^1.5.1",
    "umi": "^3.5.21"
  },
  "devDependencies": {
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "@umijs/preset-react": "1.x",
    "@umijs/test": "^3.5.21",
    "lint-staged": "^10.0.7",
    "prettier": "^2.2.0",
    "typescript": "^4.1.2",
    "yorkie": "^2.0.0"
  }
}

这里大部分都不用改,只需要在dependencies和devDependencies下面把一些常用的npm包给挂载好就行了(推荐挂载比如moment、ant design这种常用的包)我这边把常用的npm包都已经挂载好了,可以直接复制粘贴

这个时候项目就算配置好了,我们在终端执行yarn install进行npm包的下载

下载好后,执行yarn start,就可以在本机localhost的8000端口起你的前端服务了,虽然现在是一片空白

如何打包

写好后,执行,yarn build,进行打包,打包好了后项目根目录会多一个dist文件夹

这里就是umi把需要的文件和代码通通打包成这三个文件,我们需要把这个文件夹给上传到我们的服务器(上传文件到服务器可以参考我的上一篇文章个人网站搭建保姆级教程(1)-服务器购买与环境搭建_皮宁澜的博客-CSDN博客

Xftp可以直接拖拽上传

之后,在服务器上将前端工程的服务构建起来即可(可以参考我的下一篇教程,服务器node前端启动文件)

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接入 umi3 和接入其他 React 应用一样,只需要在主应用中安装 `@umijs/plugin-qiankun` 插件,并在子应用中使用 `qiankun` 的 `registerMicroApps` 方法注册子应用。 具体步骤如下: 1. 在主应用中安装 `@umijs/plugin-qiankun` 插件: ```bash yarn add @umijs/plugin-qiankun -D ``` 2. 在主应用中的 `.umirc.ts` 或 `config/config.ts` 文件中配置 `qiankun` 插件: ```typescript export default { // ... plugins: ['@umijs/plugin-qiankun'], qiankun: { master: { // 主应用配置 }, }, }; ``` 3. 在主应用中使用 `qiankun` 的 `registerMicroApps` 方法注册子应用: ```typescript import { registerMicroApps, start } from 'qiankun'; import React from 'react'; import ReactDOM from 'react-dom'; function render({ appContent, loading }) { const container = document.getElementById('app-container'); ReactDOM.render( <div> {loading && <p>Loading...</p>} <div dangerouslySetInnerHTML={{ __html: appContent }} /> </div>, container, ); } registerMicroApps([ { name: 'sub-app', entry: '//localhost:8000', container: '#sub-app-container', activeRule: '/sub-app', }, ]); start(); ``` 4. 在子应用中使用 `react-app-rewired` 对 `create-react-app` 脚手架进行配置。 由于 `create-react-app` 脚手架默认隐藏了 webpack 配置,我们需要使用 `react-app-rewired` 来暴露 webpack 配置。具体做法可以参考官方文档:https://umijs.org/plugins/qiankun#%E5%AD%90%E5%BA%94%E7%94%A8 5. 在子应用中导出一个 render 方法,用于子应用启动时挂载到主应用中: ```typescript import React from 'react'; import ReactDOM from 'react-dom'; function render(props: any) { const { container } = props; ReactDOM.render(<App />, container); } export default render; ``` 6. 在子应用中使用 `qiankun` 的 `start` 方法启动子应用: ```typescript import { start } from 'qiankun'; import render from './render'; // 导出生命周期钩子函数 export const bootstrap = async () => {}; export const mount = async (props: any) => { render(props); }; export const unmount = async () => {}; // 启动子应用 start(); ``` 以上就是在 micro-app 微前端中接入 umi3 react 的基本步骤,需要注意的是,在子应用中同样需要安装 `qiankun` 包和 `react` 包,并且在开发时需要同时启动主应用和子应用,才能看到微前端的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值