宇宙最强语言PHP的“全栈”框架——Laravel来了
在动态网页发展前期,编写一个Web应用程序的方法和今天有很大不同。
开发人员不仅负责编写应用程序中独特的业务逻辑代码,还负责编写跨站点的各个公共组件的代码,包括用户认证、输入验证、数据库访问和模板等内容。
当今已经有数十个应用程序开发框架可供程序员选择,并且可以轻松获取数千个组件和库。程序员通常面临的一个问题是 :在学习一款框架的时候,一些新的框架(而且据说是更好的框架)已经出现,并且在未来可能会取代正学习的这款框架。
“因为山在那里”,也许是攀登一座山峰的理由,但是选择使用一个特定的框架可以有更好的理由。值得思考的是 :为什么使用框架?更准确地说,为什么使用Laravel这个框架?
从PHP开发人员可以使用的一些组件及软件包(也简称为包)来看,其实很容易得知为什么使用这些组件以及包会有很多好处。使用包,可以让其他人负责开发和维护一个独立的、具有特定功能的代码块,从理论上说,开发人员可以有更多的时间对这些单个的组件进行深入的了解与研究。
像Laravel、Symfony、Lumen 和 Slim 等框架会将第三方组件和自定义框架预先安装好,如配置文件、服务提供者、规定的目录结构,以及应用程序引导等。
所以,一般来说,使用框架的好处是,不仅为开发人员选择了好的单独组件,而且能帮助开发人员决定如何组合这些组件。
▊ “自己动手做”
让我们来分析一下没有框架时的不便之处。假如你要创建一个 Web 应用,会从哪里开始呢?
也许会从 HTTP 请求开始,所以现在需要评估所有可用的 HTTP 请求库和 HTTP 响应库并在其中选择一个。接下来需要建立路由,可能需要设置好某种形式的路由配置文件。
应该使用什么语法?怎么做好控制器?应该把它们放在哪里,以及如何加载它们?可能需要一个依赖注入容器来解决控制器及其依赖问题,但是具体选择哪一个呢?
此外,如果花时间解决了以上所有问题并成功创建了应用程序,会对下一个开发人员产生什么影响?并且,当有多个这样基于自定义框架的应用程序时,你还必须记住每个应用程序中控制器的位置,以及路由的语法等。
▊ 一致性和灵活性
“我们应该在这里使用哪个组件?”框架解决了这个问题。
它提供了一个经深思熟虑后得到的答案,并确保你所选择的特定组件能够很好地协同工作。
此外,框架提供了一些约定,可以减少开发人员在创建新项目时必须理解的代码量。例如,如果你了解一个 Laravel项目中的路由是如何工作的,那么也就了解了路由在所有 Laravel 项目中的工作原理。
当有人为每一个新项目制定自己的框架时,他们真正在意的是在不改变应用程序基础部分内容的前提下,还可以去控制什么。这意味着好的框架不仅可以提供稳定的基础部分内容,而且还可以对核心部分的内容进行个性化定制。正如本书其余部分所展示的一样,这也是 Laravel 框架如此特别的原因之一。
PART.
02
是什么让 Laravel 与众不同的呢?为什么任何时候都要有一个以上的 PHP 框架?它们都使用 Symfony 的组件,对吧?让我们来谈谈是什么让 Laravel 变得特别的。
▊ Laravel的哲学
只需要阅读 Laravel 的营销材料和自述文件(README),就能看到它的价值。
Taylor 使用了一些与光相关的词汇,如照明(Illuminate)、火花(Spark),然后还有词汇 :工匠(Artisan)、优雅(Elegant)。除此之外,还有一些短语 :呼吸新鲜空气(Breath of fresh air)、新的开始(Fresh start)。最后还有词语 :快速(Rapid)、异乎寻常的速度(Warp speed)。
这个框架传递出两个强烈的价值感 :提高开发人员的开发速度和开发人员的幸福感。
Taylor将“工匠(Artisan)”语言描述为一种更具有实用价值的语言。
在2011年提出的StackExchange 问题上,就可以看到这种想法的起源,Taylor说:“有时候我花了大量的时间,只是为了让代码看起来更漂亮,这是比较令人苦恼的事情。而且这只是为了更好地阅读代码。”他经常谈到要让开发人员更容易、更快地实现他们的想法,消除不必要的、创建优秀产品的障碍。
Laravel的核心是为开发人员提供装备和支持。它的目标是提供清晰、简单、漂亮的代码和特性,帮助开发人员快速学习和开发,并编写出简单、清晰和持久的代码。
针对开发者的概念,在 Laravel 材料中写得很清楚,该文档中明确写道 :快乐的开发者创造最好的代码。同时,“让开发人员从下载到部署都感到快乐”亦是一段非正式的口号。
当然,任何工具或框架都会说它想让开发人员感到快乐。但是,把开发人员的快乐作为首要关注对象而不是次要的问题,这一点对 Laravel的风格和决策过程产生了巨大的影响。
在其他框架中,可能会把保持架构的纯净程度作为首要目标,抑或需要符合企业开发团队的目标和价值观,而 Laravel 的主要目标则是为开发人员服务。这并不意味着你不能用 Laravel 编写出具有良好架构的应用程序或企业级应用程序,而意味着使用 Laravel 编写应用程序可以不牺牲代码库的可读性与可理解性。
▊ Laravel如何让开发者感到快乐
只是说想让开发人员感到快乐是一回事,真正做到则是另一回事,这需要你猜测框架中什么地方最有可能让开发人员感到不开心,什么地方又最有可能让他们感到开心。
Laravel 试图通过几种方法让开发人员的生活变得更加轻松。
首先,Laravel 是一个快速的应用程序开发框架。这意味着它关注简单的学习过程,并尽量减少一个新的应用程序从启动到发布的步骤。所有在构建 Web 应用程序时最常见的任务,从数据库交互到身份验证、从队列到电子邮件再到缓存,都通过 Laravel 提供的组件简化了。但是,Laravel 组件的功能并不仅仅局限于此,它们在整个框架中提供了统一的 API 和稳定的结构。这意味着,在 Laravel 中做新的尝试时,开发人员很可能做出肯定的评价:“就是这么好用!”
Laravel 的好处也不仅于此,其还提供了一个完整的、用于构建和发布应用程序的工具生态系统。可以使用 Laravel 的 Homestead 以及 Valet 工具进行本地开发,使用 Forge 工具进行服务器管理,以及使用 Envoyer 工具进行高级部署。此外,还有一套附加组件:Cashier(用于支付和订购)、Echo(用于 WebSocket 编程)、Scout(用于实现搜索功能)、Passport(用于 API 认证)、Dusk(用于前端测试)、Socialite(用于社交登录)、Horizon(用于监控队列)、 Nova(用于构建管理员面板)及 Spark(用于 SaaS 引导)等。Laravel 正试图从开发人员的工作中提取出重复性的工作,这样开发人员就可以做一些独特的事情了。
接下来要说的是,Laravel 关注的是“约定优于配置”,这意味着,如果你愿意使用Laravel 的默认设置,那么相比于其他框架,可以减少很多工作。在其他框架中,即使使用了推荐的配置,也需要对所有的设置进行声明。因此,使用 Laravel 构建的项目比其他大多数 PHP 框架花费的时间少。
Laravel 还专注于简约性。如果需要,可以使用依赖注入(injection)、模拟(mocking)、数据映射模式(Data Mapper pattern)、仓库(repositories)模式、命令查询责任分离(Command Query Responsibility Segregation),以及其他更复杂的架构模式。
虽然其他框架可能会建议在每个项目中使用这些工具和结构,但是 Laravel 及其文档和社区更倾向于从最简单的开始,比如从一个全局函数、外观(facade)、ActiveRecord 开始。这使得开发人员可以创建最简单的应用程序来解决他们的需求,并且不限制其在复杂环境中的使用。
有趣的是,Laravel 的创造者以及它的社区与 Ruby、Rails 和函数式编程语言有较多的联系,而与 Java 的联系较少。在现代 PHP 中,有一个强大的趋势,那就是框架倾向于变得更加复杂,它囊括了更多的 Java 风格的 PHP 代码。但 Laravel 则不同,它会追求更富有表现力的、动态的、简单的编码实践和语言特性。
▊ Laravel 社区
如果你是第一次接触 Laravel 社区,那么会有一些事情令你期待。Laravel 有一个显著的特点,它的成长和成功与它受欢迎的教学社区是密不可分的。
Laravel 拥有一个丰富而充满活力的社区,这里汇聚了从第一天开始就一直在这里的人和那些第一次到来的人。一个成功的开源项目需要良好的文档和受欢迎的社区,它们现在都是Laravel 的标志。
PART.
03
到目前为止,我在这里所分享的一切都是抽象的。你可能会问,Laravel 的代码是怎样的呢?让我们深入了解一个简单的应用程序(见示例1),这样你就可以看到在日常工作中,Laravel 实际上是什么样的了。
示例1:在routes/web.php中实现“Hello, World”
在 Laravel 应用程序中,最简单的操作可能就是定义一个路径,并在访问该路径的任何时间返回结果。如果在计算机上初始化一个全新的 Laravel 应用程序,在示例 1-1 中定义好路由,然后从公共目录中使用该站点,那么你将拥有一个功能齐全的“Hello, World”示例程序(参见图 1)。
图1 通过Laravel返回“Hello, World!”
PART.
04
那么,为什么使用Laravel?
因为 Laravel 可以帮助你将想法变成现实,并且不会浪费代码(即以极精简的代码实现强大的功能),使用现代编码标准,并拥有一个充满活力的社区,还拥有一个强大的工具生态系统。
更因为你,亲爱的开发者,使用 Laravel 会让你感到快乐!
▼
本文节选自博文视点新书《Laravel入门与实战》(第2版),本书第1版收获了许多读者的好评,第2版迎来Laravel版本升级,覆盖更多前沿内容!
第2版完全涵盖Laravel 5.8版本的内容。对Laravel框架进行了系统的介绍,包括Laravel的背景,Laravel开发环境的搭建,路由与控制器,Blade模板,数据库和Eloquent,前端组件,收集和处理用户数据,Artisan和Tinker,用户认证和授权,请求、响应和中间件,容器,测试等知识。
通过阅读这本书,读者可以比较全面地学习并掌握Laravel开发的相关理论知识。另外,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。
▊《Laravel入门与实战(第2版):构建主流PHP应用开发框架》
[美] Matt,Stauffer(马特 斯托弗) 著
韦玮 译
- 宇宙至强语言PHP的“全栈”框架Lavaral迎来升级版
- 前沿、主流、高效、全面!包含新版本的全面知识点
这是一本实用的Laravel 技术指南,第2 版完全涵盖Laravel 5.8 版本的内容。本书对Laravel 框架进行了系统的介绍,包括Laravel 的背景,Laravel开发环境的搭建,路由与控制器,Blade 模板,数据库和Eloquent,前端组件,收集和处理用户数据,Artisan 和Tinker,用户认证和授权,请求、响应和中间件,容器,测试等知识。通过阅读本书,读者可以比较全面地学习并掌握Laravel 开发的相关理论知识。另外,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。
四个最佳后端框架推荐
本文最初发布于 Ace Infoway 博客。
在这个瞬息万变的世界中,网站和 Web 应用程序已经成为公司拥有卓越线上版图的关键。稳固的线上版图,特别是网站和应用程序,可以突破你的能力上限,带来更多的收入。是的,网站和应用程序的质量会影响到结果,所以为网站和应用程序开发选择适当的后端框架至关重要。
框架已经成为 Web 开发的重要组成部分,可以帮助你开发出丰富多彩的交互式网站和 Web 应用。对于后端(服务器端)Web 和应用程序开发,有大量的框架可供选择。
在这篇文章中,我们将讨论几个对 Web 和应用程序开发项目有帮助的后端框架。你马上就会了解到,什么是后端框架,以及 2022 年你最想用的最佳后端框架。
后端框架是服务器端编程语言的集合,帮助开发网站的后端结构。后端框架为构建动态 Web 应用提供了预先构建好的组件。使用后端框架进行 Web 开发的好处是可以降低门槛,让开发者不必从头开始构建和配置一切。
根据StackOverflow开发者调查,10.89%的专业开发者喜欢使用 Laravel,其次,37.1%的专业开发者喜欢使用.NET Framework。
下图展示了技术随时间发展的趋势:
后端框架是 Web 开发的精髓。使用框架来构建后端有很多好处,例如:
- 可以为网站或应用程序开发提供更好的架构;
- 框架可以帮你更快的编写 SQL,而不需要你手动编写复杂的 SQL 查询;
- 它们有独特的架构风格(例如 MVC),可以提升代码的可用性和可维护性;
- 可以提升应用程序和网站开发的效率;
- 使用框架,编写较少的代码或不编写代码,就可以获得较多的特性。
选择使用哪个后端框架将决定成功的特质和网站的功能。
以下是 2022 年 StackOverflow 上关于 Web 应用开发人们提问最多的后端框架,我们将对它们做个全方位的对比:
- Laravel
- .NET
- Zend
- Codeigniter
让我们逐一进行详细地讨论。
Laravel 于 2011 年正式发布,从那时起它就是最受欢迎的 PHP 框架之一。目前大约有 1,14,640 多个活跃的 Laravel 网站。Laravel 是一个简单而优雅的 Web 开发框架,因为它的语法简洁而完备,并搭配了 Model-View-Controller 架构来开发 Web 应用程序。
举例来说,Laravel 为我们提供了一种既富有表现力又优雅的语法。Laravel 把开发变成了一个有趣的、创造性的、令人愉快的过程。Laravel 是一个非常有用的框架,它使得路由、身份认证、会话、缓存等基本操作都变得更加容易。它不仅易于使用,而且还提供了一套强大的工具,用于构建稳定的大型应用程序。
Laravel 语法的简洁性无懈可击,我们可以用它创建高性能的 Web 应用程序。这表明,Laravel 在 2022 年以及未来几年内都是很有前途的。
有不少有名的公司使用 Laravel,以下是其中的一部分:
- MasterCard
- Razorpay
- Kmong
- Bitpanda
根据 Github 的数据,Laravel 有 68k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。
- 完美的身份验证和授权:Laravel 的主要优势之一是即插即用的认证方法,这使得用户可以通过一个快速、直观、优雅、简单的接口安全地访问你的资源。
- 快速缓存集成:Laravel 的快速缓存集成可以给网站带来惊人的用户体验。Laravel 支持像 Memcached 和 Redis 这样的后端缓存需求,而且开箱即用。
- 安全可靠的交易:企业在开发一个网站时,安全是首先要考虑的问题。在这方面,Laravel 是最好的,因为它的内置系统可以防止 SQL 注入、保护核心网站脚本等。它的代码库使用频繁,因此保护得很好。
- 开源及强大的社区:Laravel 是开源的,有一个强大的社区,不断为开发者和企业提供支持。由于有强大的支持,所以你的开发工作不会受阻。
- MVC 架构:由于 MVC 架构内置了不少功能,所以 Laravel 是 Web 应用开发的一流框架。
- Artisan 控制台:这是 Laravel 最好的特性之一。Artisan 是 Laravel 框架内置的命令行工具,它帮助开发人员将大部分繁琐的重复性编程过程自动化。
- 库和模块:在面向对象的框架里,Laravel 是目前最好的软件包之一。它有许多预装库,而且完全支持模块化。
- Eloquent ORM:Eloquent Object Relational Mapping(ORM)是 Laravel 的一个特性,包含一个简单的 PHP Active Record 实现。Web 应用开发人员可以使用 PHP 语法来编写数据库查询,而不必编写 SQL 代码。而且,Laravel 的 ORM 比其他 PHP 框架的速度快很多。
- 单元测试:Laravel 框架可以执行大量的测试,以确保程序员新做的变更不会意外地破坏 Web 应用中的任何东西。
- 模板引擎:Laravel 框架以其轻量级模板而闻名,它可以用来创建美观的布局,然后动态地插入内容。
下图是根据 Builtwith 得出的 Laravel 使用情况统计:
2002 年,微软推出了一个软件框架.NET(dot net 的缩写)。它包括多种编码语言、库和编辑器。.NET 框架允许你创建广泛的应用,如 Web 应用、移动应用、游戏、云、物联网(IoT)等。
.NET 软件开发框架和生态系统使得开发人员可以快速开发桌面和 Web 应用。它是一个流行的免费平台,现在被广泛用于各种应用,因为它提供的编程环境可以支持大多数软件开发阶段。希望获得广泛功能(如基于 Web 的服务、桌面软件和云基础设施支持)的企业应该使用.NET。
当前,在网站开发中,大多数著名公司都在使用.NET 框架来开发 Web 应用程序。
有不少有名的公司在使用.NET,以下是其中的一部分:
- Accenture
- Stack Overflow
- Starbucks
- GoDaddy
- Microsoft
根据 Github 的数据,.NET 有 16.8k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。
- 降低编码量:面向对象编程消除了多余的代码,降低了开发人员的编码量。.NET 中有很多可重复使用的代码,以及很多可重复使用的元素。这可以节省开发应用程序的时间,降低开发成本。
- 面向对象:在.NET 框架中,你看到的所有东西都是对象。你将因此拥有一个强大的工具,而且可以控制自己的应用程序。这也使得响应重复事件变得更加容易。
- 缓存:.NET 中包含的缓存系统非常可靠,使用起来也很简单。
- 易于维护:使用.NET,创建和维护页面都很容易,因为源代码和 HTML 在一起。
- 节省时间:.NET 节省了大量的时间,因为它消除了大部分的编码要求。这意味着企业可以节省时间,进而缩短应用程序的上市时间。
- 庞大的社区:.NET 有一个庞大的社区。因为有来自社区的高水平支持,所以许多公司和开发人员都在使用.NET 框架。有了这个庞大的社区,几乎任何问题都可能在其他成员的帮助下得到解决。
- 公共语言运行时:这是所有.NET 语言(包括 C#、VB.NET、托管 C++、J#等)共享的引擎。
- 工具支持:为了简化开发者的工作,CLR 与 Visual Studio、编译器、调试器和分析器等工具结合在一起使用。
- 易于使用的调试支持:.NET IDE(集成开发环境)提供全面的调试功能。当发生运行时异常时,程序会终止,IDE 会突出显示包含错误的行,以及错误的具体内容和可选的解决方案。
- 多语言支持:.NET 通过管理将源代码转换为中间语言(IL)和将 IL 转换为本地代码的编译器来支持多语言开发,并确保程序的安全和防护。
- 安全:CLR 通过识别用户和代码,以及执行权限检查来确保系统安全。CLR 可以确定代码的标识,并授予相应的资源访问权限。安全等级是.NET 框架的一个关键特性。
Zend 是一个 PHP 框架,于 2006 年由 Andi Gutmans 和 Zeev Suraski 首次发布。Zend 是一个开源的、面向对象的框架,到目前为止,大约有 5.7 亿的安装量。由于是一个完全面向对象的框架,所以它具有诸如继承性、可重用性和灵活性等特点。
它是基于 MVC 架构的,遵循 BSD 许可。Zend 中的前端控制器设计模式也允许请求基于单个控制器类。Zend 依赖于一些包。它提供了一个包依赖管理器,简化了依赖项组织和归类。
另外,Zend 的能力并不局限于为中小型企业构建网站,这个强大的 PHP 框架也可以用于构建企业级 Web 应用。得益于 Zend 框架的模块化架构、事件管理器、服务管理器和 PHP 合成器,它可以为你提供强大的应用程序,推动企业的业务增长。
有不少有名的公司在使用 Zend,以下是其中的一部分:
- Directus
- Zingat
- Catho
- Hostinger Stack
- Webedia
根据 Github 的数据,Zend 有 5.6k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。
- 面向对象:Zend 是面向对象的,允许企业继承和增强预定义类的功能。
- 高度可定制:通过 Zend 框架,你可以按自己喜欢的方式定制网站,这要得益于该框架所包含的各种定制工具。最好的方面是,你可以在更短的时间内定制一个 Zend 应用程序,而且不会有任何问题。
- 庞大的社区:Zend 有庞大的社区支持,并在企业界得到了极大的认可,有几个受人尊敬的网站就是用 Zend 开发的。
- 标准和指南:每位贡献者都要签署一份贡献许可协议(CLA),而且所有的工作都必须遵循同一套编码标准。这可以确保每一行代码都是高质量的,都经过了全面的测试,并且易于阅读。
- 演示程序:Zend 的主要优点之一是它提供了多个演示程序,教你各种组件的用法。
- 灵活的架构:大多数开发人员都希望使用灵活的平台,而 Zend 框架是目前最灵活的架构平台。这有助于用户定位和纠正在测试阶段发生的所有错误。
- 便捷集成:Zend 框架集成了大量的库。它可以帮助开发人员跨不同的组件测试数据。
- 结构化代码:如果要在代码中新增一个功能,你应该在上线之前进行测试。这样更容易避免错误,并鼓励使用面向对象编程。
- 模型-视图-控制器:Zend 框架提供了 MVC 开发模式。你可以将 Web 项目划分为表现层、数据访问层、业务逻辑层等。当多个开发者和设计者在同一个在线应用项目上工作时,MVC 模型就变得非常有用。
- 数据库集成:Zend 提供了强大的数据库集成能力,包括 DB2、MySQL、SQLite、Oracle、MongoDB 等。
- 跨平台:Zend 支持跨平台操作系统。
下图是根据 Builtwith 得出的 Zend 框架调试器使用情况统计:
Codeigniter 是 EllisLab 于 2006 年 2 月 28 日发布的 PHP 框架。它是为那些希望有一个简单而有吸引力的工具集来构建全功能 Web 应用的 Web 开发者而创建的。CodeIgniter 是用 PHP 构建动态网站的最流行的框架之一。
Codeigniter 为企业提供了非常条理的文档。它提供了卓越的支持和稳定性。它允许使用一种简单的路由方法。它还可以把你导向缓存的网站,从而提高性能,缩短加载时间。
该框架为用户提供了完全的自由,他们可以不使用 MVC 开发范式。CodeIgniter 最好的地方在于,它允许第三方插件帮助实现复杂的功能。
有不少有名的公司在使用 Codeigniter,以下是其中的一部分:
- Ola
- Accenture
- Buffer
- SocialDog
- Saramin
根据 Github 的数据,Codeigniter 有 18.2k 颗星,而且越来约受欢迎,从小到大,有各种规模的公司把它纳入自己的技术栈。
- 错误处理:Codeigniter 提供了一个简单的用户接口,可以检测任何可能阻碍网站流畅操作进而影响用户体验的错误或缺陷。
- 迁移无忧:Codeigniter 提供了充分的迁移支持。当涉及到数据库更新和迁移时,CodeIgniter 允许开发人员从一个服务器迁移到另一个。
- 良好的社区支持:当涉及到高级服务开发时,有许多具有丰富经验的专业人员可以提供一流的支持。
- 快速开发:Codeigniter 框架最适合于快速开发,因为只需要较少的代码就可以开发出一个网站。
- 简单易用:由于接口简单,所以 Codeigniter 框架简单易用。使用 Codeigniter,用不同方式修改数据库也很容易。
- 轻量级:Codeigniter 的基本系统需要的库相对比较小。其他库可以根据需要动态添加。正因为如此,该框架非常快速、轻便。
- 搜索引擎友好的 URL:Codeigniter 生成的多个 URL 简洁规整,对搜索引擎友好。它没有使用一般的基于查询的方法,而是使用了分段的方法。
- 模型-视图-控制器:MVC 提供了一种测试驱动的开发,这意味着开发人员可以根据需求准确地构建和测试模块。
- 内置库:该框架提供了内置库,可以帮助开发人员完成所有任务,如电子邮件发送、处理图像、HTML/文本电子邮件等。
- 数据传输简单:使用 Codeigniter 框架,数据传输很容易,而且不会损失任何有价值的数据。
下图是根据 Builtwith 得出的 Codeigniter 使用情况统计:
现在,你已经了解了我们上面列出的最佳后端框架。选择最适合你项目的框架。这样,在未来几年里,你一定可以从上述最佳后端框架中受益,使你的开发工作更轻松。
如果你正在寻找最好的定制化Web应用程序开发服务,那么欢迎聘请 Ace Infoway 的专家。我们有 20 多年的经验,可以协助你完成好后端开发项目。
Neha Rajvanshi 是一名技术专家,致力于为客户提供有效的服务,通过敏捷项目管理实践将他们的业务需求转化为解决方案,并展示 SaaS 产品、Web 应用程序和移动应用程序的良好实施情况。
了解更多软件开发与相关领域知识,点击访问 InfoQ 官网:https://www.infoq.cn/,获取更多精彩内容!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。