ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何部署同构React应用到生产环境:react-isomorphic-starterkit构建、forever进程守护与环境变量实战清单

如何部署同构React应用到生产环境:react-isomorphic-starterkit构建、forever进程守护与环境变量实战清单 如何部署同构React应用到生产环境react-isomorphic-starterkit构建、forever进程守护与环境变量实战清单【免费下载链接】react-isomorphic-starterkitCreate an isomorphic React app in less than 5 minutes项目地址: https://gitcode.com/gh_mirrors/re/react-isomorphic-starterkit想把自己的同构 React 应用上线到生产环境却不知道从哪一步开始本文以react-isomorphic-starterkit一个5 分钟内创建同构 React 应用的启动套件为例手把手带你完成生产构建 → forever 进程守护 → 环境变量配置三步实战。它内置 Koa 服务端渲染 React 客户端水合 Webpack 双端构建开箱即用非常适合新手理解同构应用的上线全流程。一、先了解项目一条命令开发的同构应用react-isomorphic-starterkit 的核心卖点是服务端和客户端共用同一套 React 代码由 Webpack 分别打包再交给 Koa 服务渲染。项目内置了完整的 npm 脚本见 package.json生产环境只需要两条命令npm run build # 分别打包服务端与客户端 npm run start # 用 forever 守护启动服务开发阶段则是npm run watch一条命令同时启动服务端热更新和客户端热替换体验非常顺滑。二、生产构建npm run build 到底做了什么执行npm run build时脚本会用 concurrently并行执行两个构建任务package.json任务配置文件产物build-serverconfigs/webpack.server.jsdist/server.jsNode 端运行包build-clientconfigs/webpack.client.jsstatic/dist/client.js浏览器端包两个配置里都做了关键的生产优化值得新手了解编译时环境标志通过DefinePlugin注入__PRODUCTION__: true、__DEV__: false等常量webpack.server.js运行时零开销判断环境。NODE_ENV 静态化process.env被整体替换为{NODE_ENV: production}src/client.js 中开发期的渲染校验代码在生产构建中会被直接剔除。客户端压缩客户端构建启用DedupePlugin、OccurenceOrderPlugin和UglifyJsPluginwebpack.client.js产物更小、加载更快。服务端外部化服务端打包使用webpack-node-externalsnode_modules不会被打进 bundle启动更快、体积更小webpack.server.js。构建完成后产物布局非常清晰dist/server.js # Node 服务入口 static/dist/client.js # 浏览器端脚本由 Koa 静态服务托管 static/ # 静态资源目录三、forever 进程守护npm run start 的隐藏福利直接node dist/server.js也能跑但进程一旦崩溃就没人管了。starterkit 的启动脚本package.json使用了forever做进程守护forever --minUptime 1000 --spinSleepTime 1000 -c node --harmony ./dist/server.js三个参数的实战含义--minUptime 1000进程存活不足 1 秒就视为崩溃重启防止无限重启风暴--spinSleepTime 1000触发重启保护后休眠 1 秒给系统喘息时间-c node --harmony指定 Node 以 harmony 模式运行兼容项目依赖的新语法特性。服务启动成功后终端会打印友好提示src/server.js ✅ Server is listening Go to http://localhost:8000看到这两行说明你的同构应用已经对外提供服务了。四、环境变量清单上线前逐项核对这个项目对环境变量的设计非常克制且典型是一张很好的环境变量入门清单1. PORT —— 服务监听端口src/server.js 中读取process.env.PORT默认 8000。上线时如果 8000 被占用或你想用其他端口PORT9000 npm run start⚠️ 注意生产构建中页面引用的客户端脚本路径基于服务器自身地址推导改端口后记得同步配置反向代理。2. HOSTNAME —— 服务绑定主机src/server.js 中读取process.env.HOSTNAME默认 localhost。开发态的 webpack.client-watch.js 和 webpack.server-watch.js 也会读取它来生成热更新地址团队内网调试时可设为你的内网 IPHOSTNAME192.168.1.10 npm run watch3. NODE_ENV —— 由构建时注入而非运行时设置这是很多新手踩坑的地方本项目的NODE_ENV不是在运行时读的而是在构建时由 DefinePlugin 静态替换的webpack.server.js。也就是说跑npm run build的产物 → 永远是生产模式想切回开发模式 → 用npm run watch而不是改运行时环境变量。4.CLIENT/SERVER/PRODUCTION—— 编译期常量这些不是环境变量而是构建期注入的标志位典型用法可见 src/apis/github.js服务端直连 GitHub API客户端则走 Koa 的/api/github代理src/server.js巧妙绕开了浏览器跨域限制。五、生产环境部署验证清单上线完成后建议按此清单逐项打勾 ✅npm run build成功生成dist/server.js与static/dist/client.jsnpm run start后终端出现 Server is listening 提示浏览器访问http://主机IP:端口页面首屏 HTML 已包含渲染内容同构核心价值直接刷新任意路由不会 404服务端负责渲染整页 HTML杀掉进程模拟崩溃kill pid确认 forever 自动拉起服务PORT、HOSTNAME按服务器实际环境设置而非依赖默认值防火墙/安全组放行服务端口默认 8000六、常见问题速查Q修改代码后页面没变化确认改的是src/下的源码而非dist/产物改完需重新npm run build并重启进程。Q端口被占用怎么办用PORT其他端口 npm run start覆盖默认值即可。Q静态资源 404Koa 通过koa-static托管static目录src/server.js请确保该目录与dist/一同部署且相对位置未变。Q如何回滚到开发模式停掉 forever 进程执行npm run watch即可恢复热更新开发环境。写在最后同构应用的生产部署并不神秘构建时双端打包、运行时进程守护、环境差异全靠变量就是这套 starterkit 的三大支柱。把本文的变量清单和验证清单打印出来跟着走一遍你的第一个同构 React 应用就能稳稳跑进生产环境 核心文件速览package.jsonnpm 脚本· src/server.js服务端入口· src/client.js客户端入口· configs/Webpack 配置【免费下载链接】react-isomorphic-starterkitCreate an isomorphic React app in less than 5 minutes项目地址: https://gitcode.com/gh_mirrors/re/react-isomorphic-starterkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表