当前位置:首页 > 科技  > 软件

Next.js项目部署,跨端适配,图表渲染优化复盘

来源: 责编: 时间:2024-04-02 17:22:27 269观看
导读最近开源了一款基于 Next.js + Antd5.0 的管理后台系统,打算持续迭代到开发者能傻瓜式开发和部署管理后台的程度, 下面和大家分享一下最近的一些更新。添加pm2持久化部署配置优化打包后图表渲染白屏问题支持PC端和移动

最近开源了一款基于 Next.js + Antd5.0 的管理后台系统,打算持续迭代到开发者能傻瓜式开发和部署管理后台的程度, 下面和大家分享一下最近的一些更新。tHN28资讯网——每日最新资讯28at.com

  • 添加pm2持久化部署配置
  • 优化打包后图表渲染白屏问题
  • 支持PC端和移动端适配
  • 添加白板制作页面

接下来会和大家分享一下具体的实现, 如果大家想了解 next-admin 这款开源管理系统。tHN28资讯网——每日最新资讯28at.com

同时也欢迎对 Next.js 感兴趣的小伙伴一起共建。tHN28资讯网——每日最新资讯28at.com

Github地址:https://github.com/MrXujiang/next-admintHN28资讯网——每日最新资讯28at.com

在线地址:http://next-admin.comtHN28资讯网——每日最新资讯28at.com

Next.js部署神器PM2

tHN28资讯网——每日最新资讯28at.com

为什么会选择PM2来部署呢?这里给大家总结几个优势:tHN28资讯网——每日最新资讯28at.com

  • 负载均衡:pm2使用Node.js的cluster模块,可以在服务器上的所有CPU核心上运行多个应用实例,实现负载均衡。
  • 后台运行:与直接在前台运行Node.js应用程序相比,pm2可以将应用程序在后台运行,更加稳定。
  • 异常自动重启(持久化):pm2可以在应用程序停止之后立即重启,减少了停机时间。pm2可以监测应用程序的运行状态,当进程发生异常(如无限循环)时,可以停止并重启不稳定的进程。
  • 控制台应用监控:pm2提供了控制台界面,可以方便地查看应用程序的状态、日志和性能指标等信息。

所以说如果对于 nginx 高级玩法不太熟悉, 建议直接用 pm2。tHN28资讯网——每日最新资讯28at.com

下面给大家介绍一下 Next-Admin 的 pm2 配置:tHN28资讯网——每日最新资讯28at.com

const argEnvIndex = process.argv.indexOf('--env')let argEnv = (argEnvIndex !== -1 && process.argv[argEnvIndex + 1]) || ''const RUN_ENV_MAP = {  local: {    instances: 2,    max_memory_restart: '250M'  },  dev: {    instances: 2,    max_memory_restart: '250M'  },  prod: {    instances: 4,    max_memory_restart: '1000M'  }}if (!(argEnv in RUN_ENV_MAP)) {  argEnv = 'prod'}module.exports = {  apps: [    {      name: 'next-admin',      script: 'node_modules/next/dist/bin/next',      args: 'start -p 80',      instances: RUN_ENV_MAP[argEnv].instances,      exec_mode: 'cluster',      watch: false,      max_memory_restart: RUN_ENV_MAP[argEnv].max_memory_restart,      env_local: {        APP_ENV: 'local'      },      env_dev: {        APP_ENV: 'dev'      },      env_prod: {        APP_ENV: 'prod'      }    }  ]}

配置基本上可以满足大部分node应用的部署需求,大家可以参考一下。接下来我们只需要在服务器上运行脚本即可启动:tHN28资讯网——每日最新资讯28at.com

"deploy:local": "pnpm build:local && pm2 start pm2.config.js --env local","deploy:dev": "pnpm build:dev && pm2 start pm2.config.js --env dev","deploy:prod": "pm2 start pm2.config.js --env prod"

启动后的效果:tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

优化打包后图表渲染白屏问题

由于新版react在开发环境下会渲染两次,这会导致某些库创建两个实例, 导致开发环境出现渲染问题, 比如我明明渲染一张图表,结果在开发浏览器却渲染了两张。为了避免开发环境react组件渲染两次的问题, 我写了一个缓存函数,来解决:tHN28资讯网——每日最新资讯28at.com

const MyChart = (props: IChart) => {    const chartRef = useRef<any>(null);    const { type, data, id } =props;    useEffect(() => {        let chart:any;        // 避免在开发环境渲染两次    if(isDev) {        let curCache = localStorage.getItem(id);        if(!curCache) {            localStorage.setItem(id, '1');            chart = createChart(chartRef.current, type, data);        }     }else {        chart = createChart(chartRef.current, type, data);    }    return () => {        localStorage.removeItem(id);        chart && chart.destroy();    }    }, [type, data, id]);    return <div ref={chartRef}></div>}

这样生产环境和开发环境就可以优雅的渲染图表了:tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

支持PC端和移动端适配

由于目前大部分管理后台都是针对PC端的, 移动访问体验不好, 所以我在 Next-Admin 管理系统中做了适配, 保证在PC和移动端都能有不错的适配效果。接下来分享几张移动端访问 Next-Admin 的页面:tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

内置在线白板

之前写了一个自定义的白板应用,目前也内置进去了,大家可以参考一下:tHN28资讯网——每日最新资讯28at.com

tHN28资讯网——每日最新资讯28at.com

后期规划

后面会对国际化支持,搭建引擎,页面渲染引擎做一些内置页面,帮助大家更高效的开发管理系统。tHN28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-80874-0.htmlNext.js项目部署,跨端适配,图表渲染优化复盘

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C++中时间相关函数用法详解

下一篇: Node.js 纪录片都讲了什么?我做了这些关键时间线的总结!

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页&ldquo;充值中心&rdquo;入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的&ldquo;新电商三兄弟&rdquo;成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top