laravel有什么缺点

laravel框架的缺点有:1、基于组件式的框架,比较臃肿;2、框架大,比yaf等小型框架的效率会低一些;3、框架较复杂,上手比一般框架要慢,学习成本高。

laravel有什么缺点

本教程操作环境:windows7系统、Laravel6版、Dell G3电脑。

laravel框架

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

优点

文档丰富

大量的第三方开源库

安全机制齐全(表单验证等)

中间件和路由对访问进行过滤及控制,避免非法请求

错误处理机制友好

支持composer包管理工具

集合了php比较新的特性及各种设计模式。

缺点:

基于组件式的框架,比较臃肿

性能比yaf等小型框架的效率会低一些

较复杂,上手比一般框架要慢,学习成本高

使用 Laravel 框架的好处

如果上面这些听起来已经很有趣,并且足以鼓励你在你开发下一个应用程序时使用框架,那么接下来让我分享一下 Laravel 框架相对于其它 PHP 框架所具有的一些优势。这些优势无疑使 Laravel 框架成为最佳 PHP 框架的主要竞争者之一。

1. 开箱即用的用户身份验证

Laravel 框架提供了开箱即用的用户身份验证功能。任何现代的 web 应用程序都需要用户身份验证,使用 Laravel 框架,你几乎不需要做任何事情就可以将它设置好。当你设置用户身份验证时,Laravel 框架会创建所有重要的组件,如用户模型、注册和登录控制器,以及相应的视图。而且在将来,根据应用程序所需的业务逻辑,将这些组件扩展到新添加的功能上也是非常容易的。

除此之外,Laravel 框架还提供了 Socialite package(扩展包),它使你的应用程序能够使用各种社交网络(如 Facebook, Google Plus 和 Twitter)对用户进行身份验证。要使它工作正常,你只需进行最低限度的配置。

2.约定优于配置(也称作按约定编程)

Laravel 框架同样采用 “约定优于配置” 的方法。这基本上意味着,如果遵循了不同组件的命名约定,就几乎不必关注配置工作。如果你遵循了命名约定,Laravel 框架自身就会帮你处理许多低级的细节,而且一切都会神奇地开始工作。如果你一直使用传统的 PHP 编程,这在一开始可能会让您感到难以忍受。但一旦你尝到了甜头,你就再也不想回头了。

3. 轻松使用的电子邮件功能

很难想象一个现代的应用程序会没有电子邮件功能。使用 Laravel 框架,实现电子邮件发送功能非常容易。除了 SMTP 和 Php 邮件功能外,Laravel 框架还支持各种各样的电子邮件通知服务,如 Mailgun,Mandrill,SparkPost,Amazon SES,SendMail 等等。这些服务可以使你能够快速开始通过本地或基于云的服务发送邮件。你还可以使用 Nexmo 通过 Slack 和 SMS 发送通知。所有这些服务在 Laravel 框架中都是开箱即用的。

Laravel 框架还在电子邮件模板中支持 Markdown (译者注:Markdown 是一个文本到 HTML(text-to-HTML)的转换工具),它能够使你在很少的时间内完成电子邮件的创建工作。

4.Artisan 命令

对我个人而言,Artisan 命令行是 Laravel 框架提供的最简练和最有用的功能。Artisan 是 Laravel 框架的命令行接口,它帮助开发人员使用命令行本身自动化许多任务。Artisan 命令可以在应用程序本身中使用,开发人员也可以创建额外的 Artisan 命令。

牛NIUCMS本地O2O系统 牛NIUCMS本地O2O系统

牛NIUCMS本地O2O系统是一个以php+mysql进行开发的o2o网站系统。NIUCMS是一款强大的网站管理系统。支持智慧城市、智慧小区、智慧乡村、本地生活门户、本地O2O平台的构建。请注意以下几点:1、这套源码必须要服务器支持伪静态,是支持.htaccess规则的伪静态,一般Apache服务器支持,别搞的下载回去以后说什么缺 少文件,其实源码并非缺少文件。2、这套源码请在php 5.4环境下

牛NIUCMS本地O2O系统 0 查看详情 牛NIUCMS本地O2O系统

你能够想到的所有常见任务,都能找到一个 Artisan 命令与之对应。例如,创建一个模型、创建一个控制器、创建一个数据库种子、迁移数据库等等。这个列表是无穷无尽的。我之所以说它 “简练”,是因为你所要做的就是传递命令,剩下的工作全交给 Laravel 框架来处理。

5.“测试驱动开发” 的测试自动化

Laravel 框架自带对 PHPUnit 的支持,使得采用 “测试驱动开发” 模式的 PHP 应用程序的测试变得非常容易。为应用程序编写单元测试变得很简单,而且确保事情按照你希望的方式进行。

6. 简洁的依赖注入

一旦你开始使用 Laravel 框架工作,你很快就会意识到 Laravel 框架是从 Ruby on Rails 和更多的函数式语言中获得的灵感,而不是从 Java。这一点从 Laravel 框架处理依赖注入的方式就可以轻易地看出这一点。尽管实现依赖注入可以采取复杂的模式,但 Laravel 框架采取的做法与之相反,它提供了创建全局助手函数的简单方法。借助于全局函数和 Faade 静态代理,我们就可以在任何需要的地方轻松地实现依赖注入。

7. 业务逻辑和显示代码的分离

Laravel 遵循模型 – 视图 – 控制器(MVC)架构模式,将业务逻辑与视图分离。这种方法有很多优点。而要真正了解它优点,你需要了解什么是 MVC 模式,以及你的应用程序是否需要这样的体系架构。

8. Eloquent ORM(对象关系映射)实现

Eloquent 是 Laravel 提供的 ORM(对象关系映射)实现。更多信息可以参考维基百科中的链接(https://en.wikipedia.org/wiki/Object-relational_mapping)。Eloquent 使得从数据库中获取数据变得非常容易。创建表之间的关系并从这些表中获取数据也变得很简单。Eloquent 还允许你在表中创建各种连接,并提供许多帮助函数,使与数据库的交互变得非常简单。你几乎不必编写 SQL 查询语句或函数。因为有了 Eloquent ORM,Laravel 框架就可以为下面这些数据库提供开箱即用的支持:

MySQLPostgreSQLSQLiteSQL Server 你真是说对了,这基本上意味着只要你使用 Eloquent,你就不必担心与上述任何数据库的兼容性。从一个数据库切换到另一个数据库也非常容易。现在试着想象一下这给你的应用程序带来的可扩展性,不妨让我用一个例子来解释这一点。假设你有一个应用程序,这个应用程序在开始时有一个很小的用户群。由于用户数量较小且应用程序处于初始阶段,因此你决定使用 MySQL 作为数据库。一段时间过后,你的应用程序的用户数量增长到了相当高的级别,现在你可能需要切换到 SQL Server 数据库。因为使用了 Eloquent,这个切换现在变得非常简单,就像更改 Laravel 框架中的特定配置详细信息一样容易。

9. 队列(Queue)和调度器(Scheduler)

在开发应用程序时,通常会有一些耗时的任务。这些任务需要推迟到稍后的时间执行,这样它们就不会给用户的流程造成阻塞。这类任务的一个完美例子可能是生成一个统计用户请求创建 CSV 文件的 PDF 报告。Laravel 框架的队列服务提供了一个统一的 API,用于将这些任务推迟到应用程序的稍后时间处理。

谈到 Laravel 框架的命令调度器,它是那些繁琐的定时任务(Cronjob)的完美替代品。在很多时候,开发人员必须为特定的任务设置定时作业。这种任务的一个完美例子是向所有订阅用户发送他们订阅的每周简讯 (Newsletter)。为了设置这个定时作业,开发人员必须使用 SSH 命令登录到服务器并在操作系统级别设置这个定时作业。这在一段时间内会成为一个麻烦,因为这些定时作业不能成为 GIT 和其它版本控制系统管理的一部分。但是 Laravel 框架的命令调度器使用内置函数提供了一个干净的 API 来调度各种各样的任务。这样,你就不必使用 SSH 命令登录到服务器的终端,并且所有这些被调度的作业都成为代码的一部分而纳入版本控制系统管理的范围。

10. 简洁的路由

Laravel 框架处理路由的方式简单直观。有一个单一的 web.php 文件来处理所有的 web 路由。如果某些路由需要公共中间件,它们可以很容易地在 Laravel 中分组。

路由的一个完美的应用场景是:应用程序中的某些页面,在用户可以查看它们之前,这些页面需要用户身份验证。Laravel 框架可以将所有这些页面分组,并且经过 Auth 中间件检查,以确保只有登录到系统的用户才能查看这些页面。Laravel 框架还提供了一个简洁的路由模型绑定(route model binding),其中模型(model)可以绑定到路由。有了这个帮助,视图可以直接从路由本身返回,甚至不需要访问控制器。

11. Composer 管理依赖关系

Laravel 框架使用 Composer 管理依赖关系和自动加载。Composer 可以帮助你安装 Laravel 扩展包,这使得依赖管理变得轻而易举。在任何时候,你都可以检查 package.json 文件来查看你的应用程序正在使用的所有依赖项。Composer 还让你能够使用单个 Composer 命令更新依赖项。

12.Blade 模板引擎

Blade 是 Laravel 框架的模板引擎。Blade 可以让你在分离视图和业务逻辑上领先一步。它能让你的视图代码保持非常干净。一旦你对 MVC 架构模式和 Laravel 对它的实现有了清楚的了解,你就会更加清楚地认识到 Blade 模板引擎的重要性。Blade 还提供了模板继承,因此你可以将最近使用的模板划分为多个部分,并让其它视图文件继承这些部分。有了 Blade 的帮助,你就可以创建一些逻辑较小的视图部分,然后可以包含这些小的部分以形成完整的视图。

13. 文档

这是一个有点灰色的区域。当我最初开始使用 Laravel 框架的时候,我在查找文档时确实遇到了问题。当时所有的一切都没有文档,但是在某个时刻我突然发现有些事情开始神奇地工作,那就是大家始遵循命名规范的那个时刻。现在,有一些 API 文档列出了 Laravel 框架中声明的每个类和方法。一旦你掌握了如何使用它,并且知道如何使用 Laravel 文档来为你的利益服务,我保证你不会再有任何抱怨。

14. 活跃社区

Laravel 确实有一个活跃的社区。当你遇到任何问题时,你都可以搜索,而且肯定会查到许多针对你的问题的 StackOverflow 帖子。除了在 StackOverflow 上有一个活跃的社区外,还有一个叫做 Laracast 的讨论论坛。你可以免费注册成为 Laracast 论坛和社区的一部分,那个社区现在非常活跃。

我认为这些优势足以让你对 Laravel 框架感到兴奋。尽管把它定义为完美肯定是夸大其词了,但我可以肯定的是,Laravel 框架绝对是最好的 PHP 框架之一。

相关推荐:最新的五个Laravel视频教程

以上就是laravel有什么缺点的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/828064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月27日 06:37:40
下一篇 2025年11月27日 06:38:01

相关推荐

  • Uniapp 中如何不拉伸不裁剪地展示图片?

    灵活展示图片:如何不拉伸不裁剪 在界面设计中,常常需要以原尺寸展示用户上传的图片。本文将介绍一种在 uniapp 框架中实现该功能的简单方法。 对于不同尺寸的图片,可以采用以下处理方式: 极端宽高比:撑满屏幕宽度或高度,再等比缩放居中。非极端宽高比:居中显示,若能撑满则撑满。 然而,如果需要不拉伸不…

    2025年12月24日
    400
  • 如何让小说网站控制台显示乱码,同时网页内容正常显示?

    如何在不影响用户界面的情况下实现控制台乱码? 当在小说网站上下载小说时,大家可能会遇到一个问题:网站上的文本在网页内正常显示,但是在控制台中却是乱码。如何实现此类操作,从而在不影响用户界面(UI)的情况下保持控制台乱码呢? 答案在于使用自定义字体。网站可以通过在服务器端配置自定义字体,并通过在客户端…

    2025年12月24日
    800
  • 如何在地图上轻松创建气泡信息框?

    地图上气泡信息框的巧妙生成 地图上气泡信息框是一种常用的交互功能,它简便易用,能够为用户提供额外信息。本文将探讨如何借助地图库的功能轻松创建这一功能。 利用地图库的原生功能 大多数地图库,如高德地图,都提供了现成的信息窗体和右键菜单功能。这些功能可以通过以下途径实现: 高德地图 JS API 参考文…

    2025年12月24日
    400
  • 如何使用 scroll-behavior 属性实现元素scrollLeft变化时的平滑动画?

    如何实现元素scrollleft变化时的平滑动画效果? 在许多网页应用中,滚动容器的水平滚动条(scrollleft)需要频繁使用。为了让滚动动作更加自然,你希望给scrollleft的变化添加动画效果。 解决方案:scroll-behavior 属性 要实现scrollleft变化时的平滑动画效果…

    2025年12月24日
    000
  • 如何为滚动元素添加平滑过渡,使滚动条滑动时更自然流畅?

    给滚动元素平滑过渡 如何在滚动条属性(scrollleft)发生改变时为元素添加平滑的过渡效果? 解决方案:scroll-behavior 属性 为滚动容器设置 scroll-behavior 属性可以实现平滑滚动。 html 代码: click the button to slide right!…

    2025年12月24日
    500
  • 如何选择元素个数不固定的指定类名子元素?

    灵活选择元素个数不固定的指定类名子元素 在网页布局中,有时需要选择特定类名的子元素,但这些元素的数量并不固定。例如,下面这段 html 代码中,activebar 和 item 元素的数量均不固定: *n *n 如果需要选择第一个 item元素,可以使用 css 选择器 :nth-child()。该…

    2025年12月24日
    200
  • 使用 SVG 如何实现自定义宽度、间距和半径的虚线边框?

    使用 svg 实现自定义虚线边框 如何实现一个具有自定义宽度、间距和半径的虚线边框是一个常见的前端开发问题。传统的解决方案通常涉及使用 border-image 引入切片图片,但是这种方法存在引入外部资源、性能低下的缺点。 为了避免上述问题,可以使用 svg(可缩放矢量图形)来创建纯代码实现。一种方…

    2025年12月24日
    100
  • 如何让“元素跟随文本高度,而不是撑高父容器?

    如何让 元素跟随文本高度,而不是撑高父容器 在页面布局中,经常遇到父容器高度被子元素撑开的问题。在图例所示的案例中,父容器被较高的图片撑开,而文本的高度没有被考虑。本问答将提供纯css解决方案,让图片跟随文本高度,确保父容器的高度不会被图片影响。 解决方法 为了解决这个问题,需要将图片从文档流中脱离…

    2025年12月24日
    000
  • 为什么 CSS mask 属性未请求指定图片?

    解决 css mask 属性未请求图片的问题 在使用 css mask 属性时,指定了图片地址,但网络面板显示未请求获取该图片,这可能是由于浏览器兼容性问题造成的。 问题 如下代码所示: 立即学习“前端免费学习笔记(深入)”; icon [data-icon=”cloud”] { –icon-cl…

    2025年12月24日
    200
  • 如何利用 CSS 选中激活标签并影响相邻元素的样式?

    如何利用 css 选中激活标签并影响相邻元素? 为了实现激活标签影响相邻元素的样式需求,可以通过 :has 选择器来实现。以下是如何具体操作: 对于激活标签相邻后的元素,可以在 css 中使用以下代码进行设置: li:has(+li.active) { border-radius: 0 0 10px…

    2025年12月24日
    100
  • 如何模拟Windows 10 设置界面中的鼠标悬浮放大效果?

    win10设置界面的鼠标移动显示周边的样式(探照灯效果)的实现方式 在windows设置界面的鼠标悬浮效果中,光标周围会显示一个放大区域。在前端开发中,可以通过多种方式实现类似的效果。 使用css 使用css的transform和box-shadow属性。通过将transform: scale(1.…

    2025年12月24日
    200
  • 为什么我的 Safari 自定义样式表在百度页面上失效了?

    为什么在 Safari 中自定义样式表未能正常工作? 在 Safari 的偏好设置中设置自定义样式表后,您对其进行测试却发现效果不同。在您自己的网页中,样式有效,而在百度页面中却失效。 造成这种情况的原因是,第一个访问的项目使用了文件协议,可以访问本地目录中的图片文件。而第二个访问的百度使用了 ht…

    2025年12月24日
    000
  • 如何用前端实现 Windows 10 设置界面的鼠标移动探照灯效果?

    如何在前端实现 Windows 10 设置界面中的鼠标移动探照灯效果 想要在前端开发中实现 Windows 10 设置界面中类似的鼠标移动探照灯效果,可以通过以下途径: CSS 解决方案 DEMO 1: Windows 10 网格悬停效果:https://codepen.io/tr4553r7/pe…

    2025年12月24日
    000
  • 使用CSS mask属性指定图片URL时,为什么浏览器无法加载图片?

    css mask属性未能加载图片的解决方法 使用css mask属性指定图片url时,如示例中所示: mask: url(“https://api.iconify.design/mdi:apple-icloud.svg”) center / contain no-repeat; 但是,在网络面板中却…

    2025年12月24日
    000
  • 如何用CSS Paint API为网页元素添加时尚的斑马线边框?

    为元素添加时尚的斑马线边框 在网页设计中,有时我们需要添加时尚的边框来提升元素的视觉效果。其中,斑马线边框是一种既醒目又别致的设计元素。 实现斜向斑马线边框 要实现斜向斑马线间隔圆环,我们可以使用css paint api。该api提供了强大的功能,可以让我们在元素上绘制复杂的图形。 立即学习“前端…

    2025年12月24日
    000
  • 图片如何不撑高父容器?

    如何让图片不撑高父容器? 当父容器包含不同高度的子元素时,父容器的高度通常会被最高元素撑开。如果你希望父容器的高度由文本内容撑开,避免图片对其产生影响,可以通过以下 css 解决方法: 绝对定位元素: .child-image { position: absolute; top: 0; left: …

    2025年12月24日
    000
  • CSS 帮助

    我正在尝试将文本附加到棕色框的左侧。我不能。我不知道代码有什么问题。请帮助我。 css .hero { position: relative; bottom: 80px; display: flex; justify-content: left; align-items: start; color:…

    2025年12月24日 好文分享
    200
  • 前端代码辅助工具:如何选择最可靠的AI工具?

    前端代码辅助工具:可靠性探讨 对于前端工程师来说,在HTML、CSS和JavaScript开发中借助AI工具是司空见惯的事情。然而,并非所有工具都能提供同等的可靠性。 个性化需求 关于哪个AI工具最可靠,这个问题没有一刀切的答案。每个人的使用习惯和项目需求各不相同。以下是一些影响选择的重要因素: 立…

    2025年12月24日
    300
  • 如何用 CSS Paint API 实现倾斜的斑马线间隔圆环?

    实现斑马线边框样式:探究 css paint api 本文将探究如何使用 css paint api 实现倾斜的斑马线间隔圆环。 问题: 给定一个有多个圆圈组成的斑马线图案,如何使用 css 实现倾斜的斑马线间隔圆环? 答案: 立即学习“前端免费学习笔记(深入)”; 使用 css paint api…

    2025年12月24日
    000
  • 如何使用CSS Paint API实现倾斜斑马线间隔圆环边框?

    css实现斑马线边框样式 想定制一个带有倾斜斑马线间隔圆环的边框?现在使用css paint api,定制任何样式都轻而易举。 css paint api 这是一个新的css特性,允许开发人员创建自定义形状和图案,其中包括斑马线样式。 立即学习“前端免费学习笔记(深入)”; 实现倾斜斑马线间隔圆环 …

    2025年12月24日
    100

发表回复

登录后才能评论
关注微信