继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Web开发的王者: Rails 教程. 1. 入门 (思维原创)

申思维
关注TA
已关注
手记 28
粉丝 423
获赞 3787
阅读本文收获
  1. 发现了一个好框架
  2. 15分钟入门 Rails.
什么是Rails? 我干嘛学它?
  1. 在国外, Rails程序员的平均工资最高. 在国内, 2,3年的Rails程序员工资也轻松高过其他程序员.
  2. Ruby on Rails程序员特别好找工作. 如果说现在移动端(ios, android) 一个职位有5个人应聘的话, 那么 Ruby职位就是 10个空缺才有1个候选人.
  3. Rails 是 Web开发的框架之王. 完虐其他框架.
  4. 性能不差. 用于优酷无线后端(7亿用户)
  5. 传统语言(特别是需要编译的语言) java/oc/php 让人郁闷, Ruby让人快乐.

最初, Rails的流行是源于 一段视频, 15分钟搭建一个Blog. 各种基本功能都有.

我的个人经历

05年毕业后, 到09年,做了3年半的java. 我一直是身边人做java最快, 做的又最好的人. 不过, 给自己最大的感受是:

做java 非常痛苦. 一点儿很小的功能, 就需要我花上好多时间去做. 做了2,3年之后,感觉自己本应该什么都懂了, 实际上一到自己单干项目时, 特别无力. 只会做些后端. 连CSS都不会. 为什么? 因为每天要加班. 从早上干到晚上, java 代码写的多, 但是解决的问题太少.

后来, 身边的java大神( 当时的javaeye( 现在的iteye) 上的朋友 ) , 一个一个的都转到了 ruby. 当时的大神才是大神, 都是跟 James Gosling 合影的那种. 所以我就随着他们一起转到了Ruby上.

最大的感受就是: 自己的时间多了.

以前某个功能, 需要我干一天, 现在只需要2小时.
一个功能, 用Java做, 先写5个Class, 然后 strategy, bridge 各种设计模式都用上. 代码轻松几百行. 现在用Ruby做, 几行代码搞定.

所以, 做了Ruby之后, 最大的好处是 时间充足了. 于是, 我就有时间学习各种其他知识: javascript, css, web自动化工具, H5, 移动端等等.

所以, 我来带领大家对Rails有个了解~ 希望入行的同学, 欢迎随时与我联系~ 好多公司跟我要Ruby的人呢~

架构小知识: MVC

MVC 几乎是最经典的架构. 10个框架,9个MVC /MMVC ...
简单的说:

  1. Model: 操作数据库
  2. View: 在浏览器端显示的视图
  3. Controller: 把request分发给action 处理. (一个controller包含多个action.)
安装Rails

(命令都以在Linux端为例. 在这里可以看到我的教程: 图文并茂版: 如何配置win7 + ubuntu 环境)

  1. 安装了ruby ( Ruby的语法, 见之前的文章:
    Ruby Lesson 1: 初识
    Ruby Lesson 2: 基础知识
    Ruby Lesson 3: 进阶
    )

  2. 安装 bundler 这个 gem:

    
    $ gem install bundler
  3. 安装Rails. (这里以 4.1.6 版本为例子)

    
    $ gem install rails -v 4.1.6

    安装时会出现一系列的命令, 只要最后你输入:


$ rails -v

看到显示版本号,就说明安装好了.


$ rails -v
Rails 4.1.6
创建一个Rails项目.

使用命令: $ rails new <项目名>, 例如:


$ cd /workspace
$ rails new library

就创建了一个项目,名为: library. (图书馆)

可以看到,生成了一堆文件:
图片描述
图片描述

然后它会自动执行 ‘bundle install’命令.

Rails使用bundler来管理各种依赖

跟java的jar 一样. ruby中也有很多第三方包, 我们管它叫 gem (小宝石)

每个Rails项目,都要依赖很多gems. 一个一个的管理会特别麻烦.

在java中,使用 maven, ivy来管理.那么在Rails中,就使用 bundler来管理.

bundler通过一个文件和一个命令来管理.

  1. 文件: Gemfile. 定义了所有的gem版本.
  2. 命令: $ bundle install , 会自动安装所有的 gems.
使用Gemfile安装各种依赖包.

编辑你的Gemfile(根目录下) 文件, 让它的内容看起来如下:


# 为了让安装gem速度更快,使用了淘宝的镜像.
source 'https://ruby.taobao.org/'   
gem 'rails', '4.1.6'  
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'therubyracer',  platforms: :ruby
gem 'jquery-rails'
gem 'turbolinks'

上面就是一个非常完备的Gemfile了.

安装各种依赖, gems.

先安装好 sqlite3的依赖:


$ sudo apt-get install libsqlite3-dev  

然后通过 命令: $ bundle install 即可.

图片描述

运行Rails.

使用命令:


$ bundle exec rails server

bundle exec: 是rails命令的前缀. 它会告诉rails, 以后用到的gem, 都是Gemfile中规定的版本.

下图就是启动后的命令.
图片描述

访问项目首页

打开浏览器, 访问 localhost:3000 ,能看到首页.(对于好奇宝宝来说,这个页面是存在于gem 文件中的.在刚才生成的library目录下找不到它)

图片描述

开始动手第一步:

现在项目没有任何内容. 只是有了一个骨架.
所以我们需要给他增加内容,丰满它.
例如: 输入一个网址, 显示一个页面.

假设,用户需要访问的URL: http://localhost:3000/books/list
那么, 我们只需要:

  1. 修改路由(router)
  2. 创建对应的controller, action
  3. 创建对应的页面(erb)
1. 修改路由 config/routes.rb

向该文件中,增加:
下面的代码:


Rails.application.routes.draw do
  # 加上下面的代码.
  resources :books do
    collection do
      get :list
    end 
  end 
end

它会生成一段”路由”, 也就是说,会识别 /books/list 这个URL,并且把它交给 books controller 的 list action 来处理.

2. 创建 controller/action

新建一个文件: app/controllers/books_controller.rb ,(见下面截图)
一个controller 是由多个action(也就是普通方法组成的)

不用的action, 处理不同的 url .

这个list action 里没有任何代码. 它会直接跳转到对应的erb页面( app/views/books/list.html.erb)


class BooksController < ApplicationController
  def list
  end
end 
3. 创建对应的视图文件

新建 "app/views/books/list.html.erb "

(所有books controller中的视图,都要放到 "app/views/books" 目录下)
(action 叫什么名字,视图就叫什么名字. "list" action对应的视图,就是: list.html.erb)

为了简单起见,它只显示HTML代码.


<p>三体1 - 地球往事</p>
<p>三体2 - 黑暗森林</p>
<p>三体3 - 死神永生</p>
看到结果

访问浏览器: http://localhost:3000/books/list
可以看到结果:
图片描述

这是我们看到的最简单的结果页面.

在视图(erb) 中,使用ruby 代码.

erb的完整拼写是: embedded ruby, 跟JSP, PHP一样,可以在HTML的间隙插入Ruby 代码.

修改 app/views/books/list.html.erb

可以看到,语法与PHP, JSP 一样.
<% %> 来执行ruby 代码.
<%= %> 来显示返回值.


<h3> 下面的代码,都是由 RUBY代码生成的</h3>
<% books = ['三体1 - 地球往事', '三体2 - 黑暗森林', '三体3 - 死神永生'] %>
<% books.each do book %>
  <p> <%= book %> </p>
<% end %>
再次看到结果

访问浏览器: http://localhost:3000/books/list
可以看到结果:

图片描述

总结
1. URL被路由识别.

http://host/books/list

上面的url, 如果是按照rails的约定惯例来看的话,就是: 显示books的list页面.

所以,rails 会把这个请求,根据 路由(router),发送给 对应的方法(也就是 controller中的 action)。

2. 配置路由(router) 的具体方法:

修改路由文件: config/routes.rb:


Rails.application.routes.draw do
    resources :books do
        collection do
          # 下面这个路由, 让rails 可以处理URL:  /books/list  
          get :list
        end
    end
end
3. Controller 与 Action 的写法.

list action 做一些 处理, 显示对应的 erb (JSP, PHP也是一样的)


class BooksController < ApplicationController
  def list
    #  啥也不写,就渲染对应的
    #  app/views/books/list.html.erb
  end
end
4. 渲染erb页面

如果要渲染的是一个  erb 页面, 我们可以在erb中直接写ruby代码.  
<% %>:  仅执行
<%= %>: 执行并显示结果到页面中.
例如:

<h3>注意: 使用了ruby的代码来显示HTML</h3>
<%  books = ['三体1 - 地球往事', '三体2 - 黑暗森林', '三体3 - 死神永生'] %>
<% books.each do book %>
  <p><%= book %></p>
<% end %>
源代码

本节源代码可以在下列地址下载:
https://github.com/sg552/rails_lesson_1_setup_and_run

PPT可以来这里下载:
http://siwei.me/about-me/speaks

打开App,阅读手记
53人推荐
发表评论
随时随地看视频慕课网APP

热门评论

收藏起来 回头了解一下

收藏起来 回头了解一下

可以适当了解下 先收藏了

查看全部评论