广告
返回顶部
首页 > 资讯 > 精选 >Rails基本原理是什么
  • 603
分享到

Rails基本原理是什么

2023-06-17 14:06:01 603人浏览 安东尼
摘要

这篇文章主要介绍“Rails基本原理是什么”,在日常操作中,相信很多人在Rails基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rails基本原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来

这篇文章主要介绍“Rails基本原理是什么”,在日常操作中,相信很多人在Rails基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rails基本原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Rails基本原理

Ruby on Rails框架不是大家所想的典型的应用程序开发框架。Rails 的创始人 David Heinemeier Hansson 通常把该框架称为固执己见的软件,并且他喜欢打破长期存在的约定。David 做出了非常有哲理性的决策并在整个框架中严格遵循这些决策。遍布于 Rails 内的核心观点有:

◆无缝集成:Rails 聪明地利用了 Ruby 语言的***特性。它扩展了 Ruby,但您很难说出 Ruby 在哪里结束,Rails 从哪里开始。您也可以看到 Active Record(Rails 的持久引擎)和模型-视图-控制器(mvc)框架之间进行了很好的集成。例如,您可以编写三行代码,创建一个表,然后立即为该模型生成用户界面。

◆约定优于配置:为保持良好的灵活性,Java 框架保持了大量普遍的配置文件。Rails 不采用这种策略。它为方法、类、表和列采用普通的项目目录结构和简单普通的命名约定,以推断哪些已配置在 Java 应用程序中。结果是,Rails 应用程序只需要对应 Java 应用程序的一小部分配置代码,一般是十分之一或更多。

◆低重复:不要重复自己(Don't Repeat Yourself,DRY)是 Rails 社区的一个常见术语。Rails框架委员会使用通常看起来像是 Ruby 语言的扩展的方法来把重复的任务抽象出来。正如您在本系列的 第三篇文章 中看到的,Rails 的元编程策略使每行代码都执行更多的任务。

◆即时反馈:使用Rails,对于您所做的大多数工作都会给出即时反馈。编写一行代码并保存后,在加载下一个WEB页面时将激活您所做的更改。更新了您的数据库以后,迁移可以向您即时显示更改。

实践基础

Ruby on Rails底层的观点全都建立在实际经验的基础上。Rails框架是从开发受欢迎的Basecamp项目管理应用程序时的实际使用经验成长起来的。

专注于某个领域

反对其宣称的过高生产率的争论通常类似于这样:如果获得了一把好的锤子,就很难找到另外一把生产率达到两倍的锤子,更不用说把生产率提高 5 到 10 倍了,因为锤子已经发展演变几千年了。但是把Ruby on Rails与各种通用目的的Java框架相比较的人是不得要领的。

通过从根本上改变工具的本质可以在某些方面提高 10 倍的生产率。现在专业的制造者使用钉子枪能够在用锤子钉入一颗钉子的时间内钉入很多钉子。像钉子枪一样,Rails 也是有专门用途的。它是一个专门编写来用于单个领域的框架:新的支持数据库的Web应用程序。

我猜想现今构建的应用程序有一半是支持数据库且基于 Web 的应用程序。所以 Rails 是明确针对某领域的产品,但是这个领域很大也很重要。专攻此领域使 Rails 具有巨大的优势,引起巨大轰动。通过专注于此领域的项目,Rails 的设计者可以选择一些其他框架不能或者不应该采用的捷径。这种专门化往往为简单性而失去灵活性。

基于Web的应用程序允许一组相似的优化。当您知道一个应用程序是基于Web的,您就能知道应用程序的大体结构和可能需要的主要组件。因为Rails关注的是基于Web的应用程序,所以在 Rails 中增强了以下功能:

◆模型-视图-控制器:Rails的MVC框架(称为 Action Pack)为基于 Web 的访问进行了定制并且实现了著名的被称为Model 2的设计策略。Rails版本已经优化了控制器和视图之间的集成(该集成能够使配置文件最小化)并且自动使控制器实例变量可供视图使用。

◆项目目录结构:所有 Rails 应用程序都具有相同的项目结构,其中的目录用于存储应用程序代码、数据库配置、公共的静态文件,以及用于管理Web服务器和进行基于Web的功能测试的脚本。

架构:通过提供用于生成应用程序组件(这些组件都符合普通架构目标,比如页面级和片段级缓存;两层设计;用于测试、开发和生产的环境)的开箱即用脚本,Rails框架简化了架构。

◆工具:Rails 工具专门用于 Web。日志支持、breakpointer、剖析器(profiler)和测试框架都针对基于Web的应用程序进行了修剪并针对两层操作而被启用。但是钉子枪永远不会取代锤子,我们却愚蠢地希望能完全取代。锤子总能做一些钉子枪不能做的事情。Rails将永远不会成为用于企业集成、对象关系映射或全堆栈 Web 服务的工具。您可以对 Rails 所做的***期望是,它是能很好满足它所针对领域的专门工具。

开发人员实践

当您开始透过表面深入研究下去时,您开始了解 Rails 开发人员实践是如此的完全不同。快速的反馈周期、每次的交互控制和约定优于配置,这些都增强了在 Java 框架中不常用的那些方面的开发人员实践。

反馈周期

影响开发人员生产率的最重要因素之一是总体反馈周期。反馈周期是从改变代码到在屏幕上看到执行应用程序的结果所用的时间。在Rails中,能够在编码时得到即时的反馈。当您对Ruby代码做出更改时,该功能十分显著。可以立即加载一个浏览器页面来查看更改以后的结果。因为在开发期间不需要编译或部署,我倾向于在重新加载浏览器或执行测试用例之前只对编程做微小的更改。几乎每个开始使用Rails的Java开发人员都以较小的程序块进行编码。

您可能认为对开发人员实践友好的快速反馈周期不支持生产环境。毕竟,频繁地重新加载类能够获得快速反馈周期,但是会使生产应用程序变得很慢。但是Rails通过为部署和开发提供不同的环境,避免了这个问题。在开发环境中以应用程序的性能为代价强制频繁地重新加载类,而生产环境则把类的重新加载减少到***限度,以开发人员的快速反馈周期为代价,为最终用户提供快速的体验。

交互性

Ruby的交互式体验也有助于Rails。您可能认为在没有完整的IDE的情况下调试Rails应用程序将是一个痛苦的过程。实际却不是这样。Rails提供两种简化调试的功能。其中之一是breakpointer,它允许您向源代码添加breakpoint关键字。

为理解breakpointer的运行过程,可创建一个简单的Rails应用程序,生成一个控制器,启动服务器,并启动breakpointer。确保您有权使用breakpointer窗口,因为当Ruby遇到断点时您将使用它。使用windows时,命令序列如下:

>rails sample  >cd sample  >ruby script/generate controller samples  >start ruby script\server  >start ruby script\breakpointer

如果在 UNIX® 或 Mac OS X 中运行,请确保服务器在一个单独的进程中启动。把以下代码键入或粘贴到app/controllers/samples_controller.rb文件中:

class SamplesController < ApplicationController   def index      breakpoint      @session[:message] = "hi, mom"      render_text "Showing index"    end     def show      render_text @session[:message]    end  end

通过加载页面localhost:3000/samples和localhost:3000/samples/show来测试代码。当Rails执行到断点时,应用程序暂停。breakpointer窗口用具有控制器当前状态的环境打开一个Ruby解释器。然后可以执行Ruby命令来查询会话的状态、执行方法和查询变量:

> puts @session[:message]  -> hi, mom

这种密切联系并没有给您一个完整的调试器,但是您确实能获得 Java 调试器不能为您带来的功能,包括访问完整的解释器和能够执行应用程序的方法。

约定优于配置

约定优于配置也会使新的Rails开发人员能够立即上手,因为控制器和模型代码特别简洁。回顾一下,具有很多属性且与部门(department)具有一对多关系的Person对象可能类似于下面这样:

class Person < Active Record::Base  belongs_to :department  end

不需要任何配置,因为Rails根据命名约定推断表 (people) 的名称、对象标识符和主键 (id) 的名称、相关的表 (departments) 的名称、外键 (department_id) 的名称、外部类 (department.rb) 的名称。无论对于编写、阅读还是维护来说,代码都保持简单、轻巧和非常赏心悦目。目的直接而清楚。

Java开发人员能学到什么?

这里我不推荐用Java语言构建一个更好的Rails。相反,Java开发人员应该从Rails框架学习一些教训,并试图构建或增强Java框架以完成下面的任务:

◆允许热部署,这将缩短开发反馈周期或支持允许热部署的框架。在Java端此优先权应该比现在高得多。

◆使用较少的XML和更多的约定。约定与配置并不是井水不犯河水,因为可以使用约定来指定明确的默认值,使用配置来覆盖约定。像 Rails 那样使用这种方法,您可以两全其美:具有较少重复的简洁代码而不会失去灵活性。为了在调试过程中浏览Java类,合并更多的脚本语言,包括Beanshell

◆为任务选用正确的工具。不必仅仅因为需要持久性就借助于Hibernate或仅仅因为需要Web应用程序就借助于Struts。通过合并其他编程语言的***特性,您可以不必重复Rails,但肯定可以改善Java体验。

到此,关于“Rails基本原理是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Rails基本原理是什么

本文链接: https://www.lsjlt.com/news/289597.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Rails基本原理是什么
    这篇文章主要介绍“Rails基本原理是什么”,在日常操作中,相信很多人在Rails基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rails基本原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • SpringSecurity基本原理是什么
    小编给大家分享一下SpringSecurity基本原理是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、SpringSecurity 本质SpringSecurity 本质是一个过滤器链;从启动是可以获取到(加载)过...
    99+
    2023-06-15
  • jQuery的基本原理是什么
    这篇文章主要介绍“jQuery的基本原理是什么”,在日常操作中,相信很多人在jQuery的基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jQuery的基本原理是...
    99+
    2022-10-19
  • colspan基本工作原理是什么
    这篇文章主要介绍了colspan基本工作原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇colspan基本工作原理是什么文章都会有所收获,下面我们一起来看看吧。 跨度...
    99+
    2022-10-19
  • sql注入基本原理是什么
    这篇文章主要介绍了sql注入基本原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SQL注入基本原理WEB技术发展日新月异,但是徒手拼...
    99+
    2022-10-18
  • 960 Grid System基本原理是什么
    这篇文章主要介绍960 Grid System基本原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!960 Grid System 基本原理不要编辑960.css 不要编辑960.css文件,如果你修...
    99+
    2023-06-08
  • docker技术的基本原理是什么
    Docker技术的基本原理是利用容器化技术实现应用程序的隔离和封装。其主要原理如下:1. 命名空间(Namespace):Docke...
    99+
    2023-10-10
    docker
  • 香港vps的基本原理是什么
    香港VPS技术是包括有虚拟化,容器等,每个VPS都能够分配一个独立的IP,独立的操作系统,将不同VPS进行不同的配置,用程序模拟出独占的体验来。是介于虚拟的主机与独立的主机两种间的服务器,与虚拟的主机一样采用的是虚拟的技术,有具有虚拟主机所...
    99+
    2022-10-16
  • ORACLE 11G DATA GUARD基本原理是什么
    本篇内容主要讲解“ORACLE 11G DATA GUARD基本原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ORACLE 11G DATA GUAR...
    99+
    2022-10-18
  • synchronized和ReentrantLock的基本原理是什么
    这篇文章主要介绍“synchronized和ReentrantLock的基本原理是什么”,在日常操作中,相信很多人在synchronized和ReentrantLock的基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-15
  • MySQL读写分离基本原理是什么
    本篇内容主要讲解“MySQL读写分离基本原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL读写分离基本原理是什么”吧!一、读写分离工作原理在一些...
    99+
    2022-10-19
  • Nginx的基本概念和原理是什么
    这篇文章将为大家详细讲解有关Nginx的基本概念和原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Nginx基本概念(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供...
    99+
    2023-06-29
  • ERP与PDM集成基本原理是什么
    这篇文章的内容主要围绕ERP与PDM集成基本原理是什么进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获! 1企业资源计划(ERP)概述&nbs...
    99+
    2023-06-05
  • JVM垃圾回收基本原理是什么
    这篇文章主要介绍“JVM垃圾回收基本原理是什么”,在日常操作中,相信很多人在JVM垃圾回收基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM垃圾回收基本原理是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-02
  • 计算机网络基本原理是什么
    计算机网络基本原理是通过通信设备和传输媒介连接多台计算机,实现信息的传输和共享。其核心原理包括以下几个方面:1. 分组交换:数据在计...
    99+
    2023-08-24
    计算机
  • hbase数据原理及基本架构是什么
    这篇文章主要介绍了hbase数据原理及基本架构是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇hbase数据原理及基本架构是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2022-10-19
  • CSS标准文档流的基本原理是什么
    本文小编为大家详细介绍“CSS标准文档流的基本原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS标准文档流的基本原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2022-10-19
  • Python正则表达式的基本原理是什么
    这篇文章主要讲解了“Python正则表达式的基本原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python正则表达式的基本原理是什么”吧!正则表达式是什么?正则表达式,又称规则表达...
    99+
    2023-07-06
  • flink基本原理
    一、简介 开源流式处理系统在不断地发展,从一开始只关注低延迟指标到现在兼顾延迟、吞吐与结果准确性,在发展过程中解决了很多问题,编程API的易用性也在不断地提高。本文介绍一下 Flink 中的核心概念,这些概念是学习与使用 Flink 十分重...
    99+
    2021-02-28
    flink基本原理
  • 现代计算机的基本工作原理是什么
    现代计算机的基本工作原理是基于数值计算和逻辑运算的,通过硬件和软件的协同工作,实现了数据的存储、处理和输出。计算机的工作原理涉及到指令的执行、数据的传输和存储器的层次结构等方面,这些原理的理解和应用,是程序员进行软件开发和系统维护的基础。本...
    99+
    2023-08-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作