Installations
npm install egg-react-webpack-boilerplate
Developer Guide
Typescript
No
Module System
N/A
Min. Node Version
>=10.0.0
Node Version
16.18.0
NPM Version
8.19.2
Releases
Unable to fetch releases
Contributors
Unable to fetch Contributors
Languages
JavaScript (99.5%)
Smarty (0.5%)
Developer
Download Statistics
Total Downloads
13,787
Last Day
2
Last Week
38
Last Month
182
Last Year
1,363
GitHub Statistics
670 Stars
168 Commits
93 Forks
19 Watching
26 Branches
1 Contributors
Package Meta Information
Latest Version
5.1.0
Package Id
egg-react-webpack-boilerplate@5.1.0
Unpacked Size
1.80 MB
Size
1.47 MB
File Count
129
NPM Version
8.19.2
Node Version
16.18.0
Publised On
01 Apr 2023
Total Downloads
Cumulative downloads
Total Downloads
13,787
Last day
-80%
2
Compared to previous day
Last week
-25.5%
38
Compared to previous week
Last month
237%
182
Compared to previous month
Last year
-19.9%
1,363
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Dependencies
28
egg-react-webpack-boilerplate
基于 Egg + React + Webpack 服务端渲染 SSR (Server Side Render) 和 前端渲染 CSR (Client Side Render) 工程骨架项目。
- 线上访问: http://49.233.172.37:7001
- 文档请见: Egg + React 工程解决方案
截图
版本
功能性需求或者Bug问题, 欢迎大家 PR 完善, 如果你需要了解更多信息,请加QQ群: 433207205(备注:Node.js).
因该项目包含了多种实现, 提供多种例子实现,为防干扰, 特提供纯净版本分支用于实际项目开发, 请自行选用。
- Egg + React SSR多页面服务端渲染方案 feature/green/multi
- Egg + React CSR 多页面前端渲染方案 feature/green/html
- Egg + React + React Router + Redux + React-Redux 单页面服务端渲染方案 feature/green/spa
- Egg + AntD + React Router + Redux + React-Redux 单页面前端渲染asset方案 feature/green/asset
- Egg + AntD + React Router + Redux + React-Redux 单页面服务端渲染方案 antd
- Egg + AntD + React Router + Redux + React-Redux 单页面管理后台前端渲染方案 easy-admin
- Egg + AntD 按需配置和主题定制 antd-theme 和 文档
- Egg + React + TypeScript 项目请见egg-react-typescript-boilerplate
- Egg + Rax SSR多页面服务端渲染方案 rax
可以通过 easywebpack-cli 命令行初始化对应类型项目。
文档
特性
-
基于 React 多页面/单页面服务端渲染, 前端渲染以及 asyncData 同构实现
-
支持服务端渲染失败时, 自动降级为前端渲染模式; 支持 react-loadable 异步组件渲染
-
数据层面进行了简单设计,支持 FileDB,MySQL,Mongo 接口
-
支持 Node 和 前端代码修改 Webpack 时时编译和热更新
-
支持服务端渲染
render
和纯前端渲染renderClient
-
支持自动根据 jsx 文件构建 Webpack entry 入口文件
-
支持 css, sass, scss, less, stylus
-
支持 css module , 且同时支持 css 和 css module 共存的情况
-
支持 react-router, react-redux 服务端渲染(SSR)和前端渲染(CSR)
-
支持 Webpack dll 自动化构建, 与多进程编译结合,构建速度减少 2/3
-
Node 8 版本的 async 和 await 特性, Controller 采用 class 方式编写
-
支持SSR, CSR, Asset, 自定义多种渲染模式
依赖
- easywebpack ^4.x.x
- easywebpack-react ^4.x.x
- egg-view-react-ssr ^2.1.0
- egg-webpack ^4.x.x
- egg-webpack-react ^2.0.0
使用
安装cli
1npm install @easy-team/easywebpack-cli -g
安装依赖
1npm install
本地开发
1npm run dev
应用访问: http://127.0.0.1:7001
-
本地开发启动 Webpack 构建, 默认配置文件为项目根目录
webpack.config.js
文件。 SSR 需要配置两份 Webpack 配置,所以构建会同时启动两个 Webpack 构建服务。web 表示构建 JSBundle 给前端用,构建后文件目录public
, 默认端口 9000; node 表示构建 JSBundle 给 Node 端渲染用,构建后文件目录app/view
, 默认端口 9001. -
本地构建是 Webpack 内存构建,文件不落地磁盘,所以
app/view
和public
在本地开发时,是看不到文件的。 只有发布模式(npm run build)才能在这两个目录中看到构建后的内容。
线上部署
- 首先在本地或者ci构建好jsbundle文件
1npm run build
- 然后,启动应用
1npm start
配置说明
1`config/config.local.js` 2const easywebpack = require('@easy-team/easywebpack-react'); 3exports.webpack = { 4 webpackConfigList: easywebpack.getWebpackConfig() 5};
项目构建
1// 直接运行(编译文件全部在内存里面,本地开发使用) 2npm start 3 4// 编译文件到磁盘打包使用(发布正式环境) 5npm run build 或者 easy build 6
项目结构和基本规范
├── app
│ ├── controller
│ │ ├── test
│ │ │ └── test.js
│ ├── extend
│ ├── lib
│ ├── middleware
│ ├── mocks
│ ├── proxy
│ ├── router.js
│ ├── view
│ │ ├── about // 服务器编译的jsbundle文件
│ │ │ └── about.js
│ │ ├── home
│ │ │ └── home.js // 服务器编译的jsbundle文件
│ │ └── layout.js // 编译的layout文件
│ └── web // 前端工程目录
│ ├── asset // 存放公共js,css资源
│ ├── framework // 前端公共库和第三方库
│ │ └── entry
│ │ ├── loader.js // 根据jsx文件自动生成entry入口文件loader
│ ├── page // 前端页面和webpack构建目录, 也就是webpack打包配置entryDir
│ │ ├── home // 每个页面遵循目录名, js文件名, scss文件名, jsx文件名相同
│ │ │ ├── home.scss
│ │ │ ├── home.jsx
│ │ └── hello // 每个页面遵循目录名, js文件名, scss文件名, jsx文件名相同
│ │ ├── test.css // 服务器render渲染时, 传入 render('test/test.js', data)
│ │ └── test.jsx
│ ├── store
│ │ ├── app
│ │ │ ├── actions.js
│ │ │ ├── getters.js
│ │ │ ├── index.js
│ │ │ ├── mutation-type.js
│ │ │ └── mutations.js
│ │ └── store.js
│ └── component // 公共业务组件, 比如loading, toast等, 遵循目录名, js文件名, scss文件名, jsx文件名相同
│ ├── loading
│ │ ├── loading.scss
│ │ └── loading.jsx
│ ├── test
│ │ ├── test.jsx
│ │ └── test.scss
│ └── toast
│ ├── toast.scss
│ └── toast.jsx
├── config
│ ├── config.default.js
│ ├── config.local.js
│ ├── config.prod.js
│ ├── config.test.js
│ └── plugin.js
├── doc
├── index.js
├── webpack.config.js // easywebpack-cli 构建配置
├── public // webpack编译目录结构, render文件查找目录
│ ├── static
│ │ ├── css
│ │ │ ├── home
│ │ │ │ ├── home.07012d33.css
│ │ │ └── test
│ │ │ ├── test.4bbb32ce.css
│ │ ├── img
│ │ │ ├── change_top.4735c57.png
│ │ │ └── intro.0e66266.png
│ ├── test
│ │ └── test.js
│ └── vendor.js // 生成的公共打包库
功能实现
一.多页面服务器渲染同构实现
1.编写jsx页面
在app/web/page 目录下面创建home目录, home.jsx, home.css文件.
- home.jsx 编写界面逻辑
1import React, { Component } from 'react'; 2import Header from 'component/layout/standard/header/header.jsx'; 3import List from 'component/home/list.jsx'; 4import './home.css'; 5export default class Home extends Component { 6 componentDidMount() { 7 console.log('----componentDidMount-----'); 8 } 9 10 render() { 11 return <div> 12 <Header></Header> 13 <div className="main"> 14 <div className="page-container page-component"> 15 <List list={this.props.list}></List> 16 </div> 17 </div> 18 </div>; 19 } 20}
2.多页面后端实现
- 创建controller文件home.js
1exports.index = function* (ctx) { 2 yield ctx.render('home/home.js', Model.getPage(1, 10)); 3};
- 添加路由配置
1app.get('/home', app.controller.home.home.index);
3.前端渲染
- 创建controller的home.js 添加如下代码
1exports.client = function* (ctx) { 2 yield ctx.renderClient('home/home.js', Model.getPage(1, 10)); 3};
- 添加路由配置
1app.get('/client', app.controller.home.home.client);
Contributors ✨
Thanks goes to these wonderful people (emoji key):
sky 💻 📖 | jasonjcpeng 💻 📖 | Kevin Zhong 💻 📖 | HiuYanChong 💻 📖 | Suyi 💻 📖 | Roy Li 💻 📖 |
This project follows the all-contributors specification. Contributions of any kind welcome!
License
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
Found 0/30 approved changesets -- score normalized to 0
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no SAST tool detected
Details
- Warn: no pull requests merged into dev branch
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
branch protection not enabled on development/release branches
Details
- Warn: branch protection not enabled for branch 'master'
Reason
63 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92
- Warn: Project is vulnerable to: GHSA-qxrj-hx23-xp82
- Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx
- Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7
- Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg
- Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x
- Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275
- Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c
- Warn: Project is vulnerable to: GHSA-wm7h-9275-46v2
- Warn: Project is vulnerable to: GHSA-ff7x-qrg7-qggm
- Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q
- Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6
- Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h
- Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc
- Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx
- Warn: Project is vulnerable to: GHSA-2j2x-2gpw-g8fm
- Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc
- Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp
- Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97
- Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m
- Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j
- Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27
- Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22
- Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp
- Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h
- Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw
- Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm
- Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv
- Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3
- Warn: Project is vulnerable to: GHSA-mh8j-9jvh-gjf6
- Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55
- Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g
- Warn: Project is vulnerable to: GHSA-x77j-w7wf-fjmw
- Warn: Project is vulnerable to: GHSA-3j8f-xvm3-ffx4
- Warn: Project is vulnerable to: GHSA-j9fq-vwqv-2fm2
- Warn: Project is vulnerable to: GHSA-pqw5-jmp5-px4v
- Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j
- Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w
- Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j
- Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6
- Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw
- Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg
- Warn: Project is vulnerable to: GHSA-h9rv-jmmf-4pgx
- Warn: Project is vulnerable to: GHSA-hxcc-f52p-wc94
- Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p
- Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9
- Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh
- Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36
- Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3
- Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v
- Warn: Project is vulnerable to: GHSA-f737-3fh6-jf6w
- Warn: Project is vulnerable to: GHSA-7jxr-cg7f-gpgv
- Warn: Project is vulnerable to: GHSA-xj72-wvfv-8985
- Warn: Project is vulnerable to: GHSA-ch3r-j5x3-6q2m
- Warn: Project is vulnerable to: GHSA-p5gc-c584-jj6v
- Warn: Project is vulnerable to: GHSA-whpj-8f3w-67p5
- Warn: Project is vulnerable to: GHSA-cchq-frgv-rjh5
- Warn: Project is vulnerable to: GHSA-g644-9gfx-q4q4
- Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986
- Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6
- Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7
- Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q
- Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp
Score
1.7
/10
Last Scanned on 2025-01-27
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More