Next.js学习笔记(八)——优化优化Next.js提供了多种内置优化,旨在提高应用程序的速度和核心网络生命指数

内置组件抽象化了实现常见UI优化的复杂性。这些组件包括:

元数据可帮助搜索引擎更好地理解你的内容(从而提高搜索引擎优化效果),并允许你自定义内容在社交媒体上的展示方式,帮助你在不同平台上创建更具吸引力和一致性的用户体验。

Next.js/public文件夹可用于提供静态资源,例如:图片、字体和其他文件。/public文件夹中的文件还可由CDN提供商缓存,以便高效分发。

示例:

importImagefrom'next/image'然后,你就可以定义图片的src(本地或远程)。

要使用本地图像,请import你的.jpg、.png或.webp图像文件。

要使用远程图片,src属性应为URL字符串。

有时,你可能想优化远程图片,但仍需使用内置的Next.js图片优化API。为此,请将loader保留为默认设置,并为图片srcprop输入绝对URL。

为保护应用程序不受恶意用户的攻击,必须定义一个远程主机名列表,以便与next/image组件一起使用。

Next.js应用程序的默认加载器使用内置的图像优化API,该API可优化网络上任何地方的图像,然后直接从Next.js网络服务器提供图像。如果想直接从CDN或图像服务器提供图像,只需编写几行JavaScript,就能编写自己的加载器函数。

一旦确定了LCP图像,就可以像这样添加属性:

由于next/image的设计是为了保证良好的性能效果,因此在使用时不能造成布局偏移,必须以以下三种方式之一确定大小:

如果我不知道图像的尺寸怎么办?

如果你在不知道图片大小的情况下从源访问图片,你可以采取以下几种方法:

next/font将自动优化你的字体(包括自定义字体),并移除外部网络请求,以改善隐私和性能。

next/font包含内置的自动自托管功能,可用于任何字体文件。这意味着,由于使用了底层CSSsize-adjust属性,你可以以最佳方式加载网络字体,而不会出现布局偏移。

这一新的字体系统还能让你方便地使用所有Google字体,同时兼顾性能和隐私。CSS和字体文件会在构建时下载,并与其他静态资源一起自行托管。浏览器不会向Google发送任何请求。

自动自我托管任何Google字体。字体包含在部署中,由与部署相同的域提供。浏览器不会向Google发送任何请求。

//app/layout.jsconstroboto=Roboto({weight:['400','700'],style:['normal','italic'],subsets:['latin'],display:'swap',})需要知道:对于包含多个单词的字体名称,请使用下划线(_)。例如:RobotoMono应导入为Roboto_Mono。

这可以通过在函数调用中添加来实现:

你可以在应用程序中导入和使用多种字体。可以采取两种方法。

第一种方法是创建一个实用程序函数,用于导出、导入字体并在需要时应用字体的className。这样可以确保只有在渲染时才会预载字体:

建议:谨慎使用多种字体,因为每一种新字体都会给客户端带来额外的下载资源。

在下面的例子中,我们使用了next/font/google中的Inter字体(你可以使用Google或本地字体中的任何字体)。使用variable选项加载字体,定义CSS变量名,并将其赋值给inter。然后,使用inter.variable将CSS变量添加到HTML文档中。

//tailwind.config.js/**@type{import('tailwindcss').Config}*/module.exports={content:['./pages/**/*.{js,ts,jsx,tsx}','./components/**/*.{js,ts,jsx,tsx}','./app/**/*.{js,ts,jsx,tsx}',],theme:{extend:{fontFamily:{sans:['var(--font-inter)'],mono:['var(--font-roboto-mono)'],},},},plugins:[],}现在,你可以使用font-sans和font-mono实用程序类将字体应用到元素中。

每次调用localFont或Google字体函数时,该字体都会在应用程序中作为一个实例托管。因此,如果在多个文件中加载相同的字体函数,就会托管同一字体的多个实例。在这种情况下,建议采取以下措施:

要为多条路由加载第三方脚本,请导入next/script并将脚本直接包含在布局组件中:

要为所有路由加载第三方脚本,请导入next/script,并将脚本直接包含在根布局中:

建议:我们建议仅在特定页面或布局中包含第三方脚本,以尽量减少对性能的不必要影响。

虽然next/script的默认行为允许你在任何页面或布局中加载第三方脚本,但你可以使用strategy属性对其加载行为进行微调:

此策略仍处于试验阶段,只有在next.config.js中启用nextScriptWorkers标志后才能使用:

//next.config.jsmodule.exports={experimental:{nextScriptWorkers:true,},}然后,运行next(通常是npmrundev或yarndev),Next.js就会引导你安装所需的软件包,完成设置:

npmrundev你会看到如下说明:请运行npminstall@builder.io/partytown来安装Partytown。

设置完成后,定义strategy="worker"将自动在你的应用程序中实例化Partytown,并将脚本卸载到网络worker。

脚本组件还支持内联脚本,即不从外部文件加载的脚本。只需将JavaScript放在大括号中,即可编写内联脚本:

事件处理程序可与脚本组件一起使用,以便在特定事件发生后执行附加代码:

Next.js有一个元数据API,可用于定义应用程序元数据(例如:HTMLhead元素中的meta和link标签),以提高搜索引擎优化和网络共享性。

有两种方法可以为应用程序添加元数据:

要定义静态元数据,请从layout.js或静态的page.js文件中导出一个Metadata对象。

你可以使用generateMetadata函数来fetch需要动态值的元数据。

需要知道:

这些特殊文件可用于元数据:

你可以将这些文件用于静态元数据,也可以用代码编程生成这些文件。

基于文件的元数据具有更高的优先级,将优先于任何基于配置的元数据。

即使路由没有定义元数据,也会添加两个默认meta标签:

元数据是按顺序评估的,从根代码段开始,直到最接近最终page.js代码段的代码段。例如:

如果想在片段之间共享某些嵌套字段,同时覆盖其他字段,可以将它们提取到一个单独的变量中:

ImageResponse构造函数允许你使用JSX和CSS生成动态图像。这对于创建OpenGraph图像、Twitter卡片等社交媒体图像非常有用。

ImageResponse使用Edge运行时,Next.js会自动将正确的头添加到edge缓存的图片中,从而帮助提高性能并减少重新计算。

要使用它,可以从next/og导入ImageResponse:

JSON-LD是一种结构化数据格式,搜索引擎可以用它来理解你的内容。例如:你可以用它来描述一个人、一个事件、一个组织、一部电影、一本书、一份食谱以及许多其他类型的实体。

例如,如果在public文件夹中添加me.png,下面的代码就可以访问该图片:

运行以下命令安装插件:

npmi@next/bundle-analyzer#oryarnadd@next/bundle-analyzer#orpnpmadd@next/bundle-analyzer然后,将包分析器的设置添加到next.config.js中。

//next.config.jsconstwithBundleAnalyzer=require('@next/bundle-analyzer')({enabled:process.env.ANALYZE==='true',})/**@type{import('next').NextConfig}*/constnextConfig={}module.exports=withBundleAnalyzer(nextConfig)分析你的包运行以下命令分析包:

ANALYZE=truenpmrunbuild#orANALYZE=trueyarnbuild#orANALYZE=truepnpmbuild报告将在浏览器中打开三个新标签页,你可以检查它们。在开发过程中和部署网站前定期这样做,可以帮助你更早地识别大型包,并构建性能更高的应用程序。

通过它,你可以延迟加载客户端组件和导入的库,只有在需要时才将它们包含在客户端包中。例如:你可能想推迟加载一个模态框,直到用户点击打开它。

有两种方法可以在Next.js中实现懒加载:

如果要禁用客户端组件的预渲染,可以将ssr选项设为false:

constComponentC=dynamic(()=>import('../components/C'),{ssr:false})导入服务器组件如果动态导入服务器组件,只有作为服务器组件子组件的客户端组件才会被懒加载,而不是服务器组件本身。

你可以使用name属性处理这些指标的所有结果。

//app/components/web-vitals.tsx'useclient'import{useReportWebVitals}from'next/web-vitals'exportfunctionWebVitals(){useReportWebVitals((metric)=>{switch(metric.name){case'FCP':{//处理FCP结果}case'LCP':{//处理LCP结果}//...}})}将结果发送到外部系统你可以将结果发送到任何端点,以衡量和跟踪网站上的真实用户性能。例如:

仪表是使用代码将监控和日志工具集成到应用程序中的过程。这样,你就可以跟踪应用程序的性能和行为,并调试生产中的问题。

Next.js提供了一个register函数,该函数可从项目根目录(如果使用src文件夹,则位于src文件夹内)中的instrumentation.ts|js文件导出。每当启动一个新的Next.js服务器实例时,Next.js就会调用register函数。

部署register函数后,每次冷启动时都会调用该函数(但在每个环境中都会调用一次)。

你可以在instrumentation.ts中导入具有副作用的文件,你可能希望在register函数中使用这些文件,如下例所示:

//your-project/instrumentation.tsimport{init}from'package-init'exportfunctionregister(){init()}不过,我们建议使用register函数中的import来导入具有副作用的文件。下面的示例演示了在register函数中import的基本用法:

//your-project/instrumentation.tsexportasyncfunctionregister(){awaitimport('package-with-side-effect')}这样做可以将所有副作用集中在代码中的一个地方,避免导入文件造成任何意想不到的后果。

我们会在所有环境中调用register,因此有必要有条件地导入任何不支持edge和nodejs的代码。你可以使用环境变量NEXT_RUNTIME来获取当前环境。导入特定环境的代码如下所示:

//your-project/instrumentation.tsexportasyncfunctionregister(){if(process.env.NEXT_RUNTIME==='nodejs'){awaitimport('./instrumentation-node')}if(process.env.NEXT_RUNTIME==='edge'){awaitimport('./instrumentation-edge')}}OpenTelemetry需要知道:此功能是试验性的,你需要在next.config.js中提供experimental.instrumentationHook=true;以明确选择加入。

可观察性对于了解和优化Next.js应用程序的行为和性能至关重要。

随着应用程序变得越来越复杂,识别和诊断可能出现的问题也变得越来越困难。通过利用日志和指标等可观察性工具,开发人员可以深入了解应用程序的行为,并确定需要优化的领域。有了可观察性,开发人员就能在问题演变成重大问题之前主动加以解决,并提供更好的用户体验。因此,强烈建议在Next.js应用程序中使用可观察性来提高性能、优化资源和增强用户体验。

我们建议使用OpenTelemetry来检测应用程序。这是一种与平台无关的应用程序检测方式,允许你在不更改代码的情况下更改可观察性提供者。阅读OpenTelemetry官方文档了解有关OpenTelemetry及其工作原理的更多信息。

本文档中使用了Span、Trace或Exporter等术语,所有这些术语都可以在OpenTelemetryObservabilityPrimer中找到。

Next.js支持开箱即用的OpenTelemetry仪表,这意味着我们已经为Next.js本身安装了仪器。启用OpenTelemetry后,我们会自动将所有代码(例如:getStaticProps)封装在带有有用属性的spans中。

需要知道:我们目前仅在无服务器功能中支持OpenTelemetry绑定。我们不为edge或客户端代码提供任何绑定。

OpenTelemetry具有可扩展性,但正确设置它可能相当繁琐。因此,我们准备了一个@vercel/otel软件包,帮助你快速入门。它不具有可扩展性,如果你需要自定义设置,则应手动配置OpenTelemetry。

使用之前,需要安装@vercel/otel:

//your-project/instrumentation.tsimport{registerOTel}from'@vercel/otel'exportfunctionregister(){registerOTel('next-app')}需要知道:

如果我们的封装程序@vercel/otel不能满足你的需求,你可以手动配置OpenTelemetry。

首先需要安装OpenTelemetry软件包:

如果一切运行正常,你应该可以看到标为GET/requested/pathname的根服务器跨度。该特定跟踪的所有其他跨度都将嵌套在该跨度之下。

Next.js会跟踪比默认情况下更多的跨度。要查看更多跨度,必须设置NEXT_OTEL_VERBOSE=1。

使用OpenTelemetry收集器部署时,可以使用@vercel/otel。它既可以在Vercel上部署,也可以自行部署。

我们确保OpenTelemetry在Vercel上开箱即用。

部署到其他平台也很简单。你需要启动自己的OpenTelemetry收集器来接收和处理来自Next.js应用程序的遥测数据。

安装并运行收集器后,就可以按照各自的部署指南将Next.js应用程序部署到所选平台。

npminstall@opentelemetry/api下面的示例演示了一个获取GitHubstars并添加自定义fetchGithubStars维度以跟踪获取请求结果的函数:

import{trace}from'@opentelemetry/api'exportasyncfunctionfetchGithubStars(){returnawaittrace.getTracer('nextjs-example').startActiveSpan('fetchGithubStars',async(span)=>{try{returnawaitgetValue()}finally{span.end()}})}register函数将在代码在新环境中运行前执行。你可以开始创建新的跨度,它们应该会被正确地添加到导出的跟踪中。

Next.js会自动为你设置多个跨度,以便为你提供有关应用程序性能的有用信息。

跨度属性遵循OpenTelemetry语义约定。我们还在next命名空间下添加了一些自定义属性:

此跨度表示传入Next.js应用程序的每个请求的根跨度。它跟踪HTTP方法、路由、目标和请求的状态代码。

属性:

此跨度表示在应用程序路由器中渲染路由的过程。

该跨度表示代码中执行的获取请求。

此跨度表示在应用程序路由器中执行API路由处理程序。

此跨度表示特定路由的getServerSideProps执行情况。

此跨度表示特定路由的getStaticProps执行情况。

该跨度表示为特定路由渲染文档的过程。

该跨度表示为特定页面生成元数据的过程(一个路由可以有多个这样的跨度)。

@next/third-parties是一个库,它提供了一系列组件和实用程序,可改善在Next.js应用程序中加载常用第三方库的性能和开发人员体验。

@next/third-parties提供的所有第三方集成都经过了性能和易用性方面的优化。

要开始使用,请安装@next/third-parties库:

npminstall@next/third-parties@latestnext@latest@next/third-parties目前是一个正在积极开发的实验性库。在我们努力添加更多第三方集成时,建议使用最新或金丝雀标志安装。

可从@next/third-parties/google中导入谷歌支持的所有第三方库。

GoogleTagManager组件可用于在页面中实例化一个Google标签管理器容器实例化到你的页面。默认情况下,它会在页面水合后获取原始内嵌脚本。

要为所有路径加载Google标签管理器,请直接在根布局中包含该组件,并输入GTM容器ID:

要为所有路由加载Google分析,请在根布局中直接包含该组件,并输入测量ID:

当浏览器历史状态发生变化时,Google分析会自动跟踪页面浏览。这意味着在Next.js路由之间进行客户端导航时,无需任何配置即可发送页面浏览数据。

THE END
1.宝宝食谱大全下载宝宝辅食食谱app哪个好宝宝食谱软件下载宝宝食谱app为用户带来更多的食谱软件,这些食谱软件更加适合宝妈为宝宝制作辅食,通过软件之中记录的食谱制作辅食,可以为宝宝补充更多成长所需要的维生素和各类营养,让宝宝可以在更多的健康美食下茁壮的进行成长.http://www.downcc.com/k/baobaoshipu/
2.网上厨房app下载安装最新版食谱软件你可以确定你的食谱,有助于你健康的饮食,是个不错的软件,希望你喜欢,有兴趣的朋友不妨来下载。手机安卓食谱软件哪个好,哪个宝宝食谱软件好?小编悉心整理了手机安卓食谱软件排行榜、手机食谱软件。小编为大家推荐最流行的食谱软件。 下厨房app 美食杰家常菜谱大全 豆果美食app 懒饭美食app 美食天下菜谱大全 家常https://m.liqucn.com/rj/29113.wml
3.学做菜的app排行榜前十名十大免费学做菜软件app推荐嘉肴健康美食菜谱手机版是一款由青岛嘉铭文化传播有限公司推出的美食应用,也称之为肴做饭做菜家常菜谱大全app,这里不仅有齐全丰富的菜谱,更有对您的健康状态,体质,慢性疾病和食疗的照顾性菜谱。这里的菜谱、食谱、美食、养生餐、儿童餐,食疗菜谱,美容菜谱, https://www.ddooo.com/zt/zcrj.htm
4.食谱自动生成APP推荐食谱自动生成下载而“食谱自动生成app”应运而生,为您提供了一个方便快捷的解决方案。这款智能应用程序能够根据您的个人喜好和健康需求,为您自动生成营养均衡的食谱,让您轻松享受美味健康的餐饮生活。您只需填写一些基本信息,如食材偏好、饮食习惯等,即可获得专业的营养师推荐的食谱,让您每天的饮食更加多样化和科学化。无论您是想https://www.wandoujia.com/bangdan/1243578/
5.孕妇食谱app哪个好?孕妇食谱软件排行榜孕妇每日食谱孕妇食谱app 共有10个软件 孕妇食谱是一款很不错的专为孕妇打造的健康饮食资讯软件,能够有效的给出合理的健康指导和饮食情况的分析,吃什么会对孕妇有好处,哪些食物是要避雷的地方,各种孕期和育儿、胎教等阶段的知识,还有各种适合孕妇吃的菜谱以及菜系推荐,吃什么补什么,从怀孕开始到月子时期的食谱大全,是准宝爸宝妈http://www.downyi.com/key/yunfushipu/
6.做菜app软件大全学做饭app下载做菜教学视频app下载美食天下app 8.0/17.01M /2024-04-23 家常菜谱大全 下载 烘焙帮app 8.2/22.29M /2024-09-25 小白学烘焙下厨房的视频菜谱大全 下载 掌厨app 6.7/28.17M /2024-01-17 找菜谱,看视频,学做菜,品美食 下载 香哈菜谱app 8.8/47.56M /2024-12-13 官方推荐厨房菜谱食谱应用 下载 懒饭App2024最新版 https://m.32r.com/zt/zfrj/
7.辅食达人在此!婴幼儿食谱app推荐儿童食谱作为新手父母,为宝宝提供健康营养的辅食是一项艰巨的任务。市面上琳琅满目的婴幼儿食谱app让人眼花缭乱,如何选择一款合适的app成为父母们面临的难题。 本文将为您推荐几款备受好评的婴幼儿食谱app,帮助您轻松应对宝宝的辅食需求。 1. 宝宝树 宝宝树是一款功能齐全的综合性育儿app,其中包含了丰富的婴幼儿食谱。该app根https://www.cibailian.com/ertong/20947.html
8.AppStore上的“智能食谱生成器&个性化食谱助手”免费 提供App 内购买项目 iPhone 截屏简介 使用Dish Generator 和 Recipe Keeper 充满自信和创造力地走进厨房。在我们的人工智能厨师的帮助下,根据产品、KCAL 或您的想法创建食谱。 特征: ? AI 食谱创建:根据想法、成分列表或大卡立即生成独特的食谱。 ? 杂货清单:创建并导出您的杂货清单 ? 食谱修改:轻松https://apps.apple.com/cn/app/%E6%99%BA%E8%83%BD%E9%A3%9F%E8%B0%B1%E7%94%9F%E6%88%90%E5%99%A8-%E4%B8%AA%E6%80%A7%E5%8C%96%E9%A3%9F%E8%B0%B1%E5%8A%A9%E6%89%8B/id6733245097
9.做饭的app排行榜前十名手机做菜app哪款好用?8款做菜app推荐给宝宝做饭的食谱软件上门服务做饭app做饭的app软件上门做饭的厨师服务app上门做饭app做饭软件学做饭软件厨师上门做饭app免费的学做饭软件教做饭做菜的app学做饭菜app上门做饭服务app学做饭的软件上门做菜app做表软件初中做题app教做菜的app照片做成视频的软件做相册软件自己做壁纸的软件https://m.pianwan.com/s/zj-5898647
10.美食菜谱根据食材生成的美食菜谱app软件哪个最好呢根据食材生成的美食菜谱app软件都有哪些呢?这些美食菜谱app软件汇聚了万千佳肴的详细做法,从经典家常菜到创新料理应有尽有。无论是想学习新技能,还是寻找灵感烹饪晚餐,都是你的不二之选。清晰的步骤指导,搭配诱人的成品图片,让烹饪过程既简单又充满乐趣。那么根据食材https://www.yxwoo.com/heji/mscp/
11.AI智能菜谱小程序人工智能平台开发(App系统定制)通过分析用户的口味偏好、营养需求和食材偏好等信息,智能菜谱小程序能够生成符合用户需求的菜谱,并提供烹饪步骤、食材购买建议和食谱定制化等功能。用户可以通过小程序快速找到适合自己的菜谱,提升烹饪技能并丰富饮食选择。 C. 人工智能作为实现AI智能菜谱小程序的基础技术http://guangzhou.11467.com/info/20943916.htm
12.医养结合智慧养老一体化信息化平台建设方案社区养老机构养老新建工单,按照工单模板进行工单填写;工单编号由系统设置的单据编号生成规则自动生成。 服务工单填写可以录入老人需求服务项目,服务地址可以是老人在系统所留存的家庭地址,也可以是填写其他地址,联系电话可以是老人来电号码,也可以是别的号码,留的哪个联系电话,相应的工单信息提示短信就会发到哪个号码上。可以根据老人要求,填http://www.jujiayanglao.net/Home/News/show-1050
13.美食食谱类APP开发功能需求分析美食食谱类APP开发针对当代的家庭用户以及上班族的饮食需求,提供人性化的菜谱内容系统以及新颖的学习模式,让用户可以通过APP交流沟通,提高做菜或者烘焙等方面的技术。 美食食谱类APP开发功能需求分析简介: 1、美食资讯。平系统会定时推送一些美食类的资讯,让用户了解一些美食制作的小技巧。 https://www.wandongli.com/index.php/news_detail.html?id=1749
14.recipeapp在这个案例中,“recipe-app-api”是一个基于Python语言构建的食谱应用API,主要用于提供食谱相关的数据服务,如搜索、查看、创建和编辑食谱等。 【Python编程基础】 Python是这个项目的编程语言,它以其简洁明了的语法和强大的库支持而闻名。Python的特性包括动态类型、自动内存管理以及丰富的标准库,这使得Python成为开发https://www.coder100.com/index/index/content/id/4028369
15.各位爱做饭的友友,假如有这样一款菜谱APP,你们感兴趣吗?如果有这样一款APP,你们会感兴趣吗?我准备开发一款私人食谱应用,希望能帮助大家更好地管理和优化自己的烹饪体验。请大家配合调查一下,做出来后会给大家免费使用哦! 我预计包含以下功能: 记录做菜步骤,形成你个人独一无二的菜谱,非常精美 做菜时的步骤提醒,全语音交互 家人可以在您的食谱中选择菜单 根据食谱生成食材https://www.douban.com/group/topic/305864618/
16.厨房故事app(KitchenStories)5、收藏功能可让你标注和找到你喜爱的食谱。 亮点 1、将你喜爱的食谱存入收藏夹。 2、你尝试发布一道菜谱,会获得最真实的厨友点赞,交流心得提升厨艺。 3、定期增加新食谱和烹饪方法。 4、可通过邮件发送自动生成的采购清单。 优势 1.用户体验良好:app的用户界面简洁明了,操作流畅,用户体验良好。无论是浏览菜谱https://www.hanzify.org/soft/27749.html
17.规划库存减少浪费:以Grocy为数据库的物品管理方案综合看来,Grocy 提供了一个很好的框架,易用的 API。同时,具有较为活跃的社区。目前已经有 iOS 客户端、Android 客户端、Barcode Buddy 扫码助手、Home Assistant 插件、Recipe Buddy 食谱助手等等。2 Grocy 已经具备了扫码出入库和基于Open Food Facts的食品信息获取等功能,但它的交互与其它 app 一样,仍然强烈依https://ios.sspai.com/post/83836
18.食谱搭配app哪个最好用食谱搭配app排行榜前十名食谱搭配app可以帮助我们合理规划饮食,还我们一个健康的饮食习惯,解决我们一日三餐不知道吃什么的问题,小编今天为大家推荐几款食谱搭配app,大家不要错过哦!http://www.sjwyx.com/phbang/spdpappphb/
19.学习打卡App排行榜华为手机学习打卡app推荐【有效开会就用钉钉会议】自动匹配发言人字幕:钉钉会议可精准定位多人会议中的发言人,让观点碰撞清晰有序,同时实时识别会议语音并呈现字幕,嘈杂环境或出差路上也能及时看到讨论内容,随时随地,流畅开会。会议要点智能提炼:无需专人记录,会中闪记帮你实时听会转写,及时生成会议摘要;智能转写录制会议内容,会后自动提炼http://vip.diandian.com/phb/1812/2-1.html
20.java毕业设计选题大全,题目仅供参考【584】基于ssm后端的后勤报修系统APP 【723】基于springboot vue前后端分离的宿舍管理系统 基于ssm家庭食谱管理系统 【520】基于java springboot二手书交易商城微信小程序 【388】springboot mybatis基于ssm办公自动化管理系统 基于微信小程序校园订餐平台+ssm后台管理 基于微信小程序的高校体育场管理系统https://blog.csdn.net/weixin_46437112/article/details/143503349