Ruby on Rails 6 및 TailwindCSS 1.1.4 설정 방법

지도의


이 강좌에서는 Ruby 및 Rails gem을 설치했다고 가정합니다.없으면 Getting Started with Rails Guide 를 방문하십시오.
나는 또한 this repo 에서 코드를 만들 것이다.당신이 곤경에 빠지거나 환매 협의가 깨질 때 미해결 문제가 발생하지 않도록 환매 협의를 일종의 자원으로 도와주십시오!!
이 프레젠테이션은 다음과 같이 작성되었습니다.
  • Ruby 2.7
  • 노드 13.7.0
  • 궤도 6.0.2.1
  • Webpacker 4.2.2
  • 후미풍 CSS 1.1.4
  • psql(PostgreSQL)12.1
  • 새 Rails 프로젝트 만들기


    rails new tailwind_css_rails_demo -d postgresql
    cd tailwind_css_rails_demo
    rails db:create
    
    그러면 새 Ruby on Rails 프로젝트가 생성되고 PostgreSQL이 구성됩니다.SQLite 또는 MySQL을 사용하려면 -d postgresql 플래그를 생략할 수 있습니다.

    Rails 및 웹 패키지 실행


    나는 한 명령줄 옵션 카드에서 Rails 서버를 실행하고 다른 명령줄 옵션 카드에서 웹pack dev 서버를 실행하는 것을 더 좋아한다. 왜냐하면 그것은 훨씬 빠르기 때문이다.개발 과정에서 Rails는 웹 팩 dev 서버가 패키지를 컴파일했는지 판단할 수 있습니다. 컴파일이 없으면 Rails는 내부 연결 방식으로 컴파일합니다.
    응용 프로그램을 계속 실행합시다.
    # Terminal tab 1
    rails s
    
    및 웹 패키지 개발 서버:
    # Terminal tab 2
    ./bin/webpack-dev-server
    
    브라우저에서 localhost:3000 로 이동하면 이제 Rails 시작 페이지가 표시됩니다.

    새 리소스 생성


    나는 개인적으로 데이터베이스에서 여러 개의 강좌 기록을 보고 응용 프로그램을 더욱 진실하게 보이는 것을 좋아한다.피드 데이터를 추가하는 것에 흥미가 없고, 메인 컨트롤러나 비슷한 것을 만들고 싶다면, 이 부분을 건너뛸 수 있습니다.
    데이터베이스에서 레코드를 찾으려면 다음과 같은 작은 리소스를 사용하십시오.
    rails generate scaffold Post title:string content:text
    
    Rails는 몇 개의 파일을 생성하지만 그 중 몇 개만 살펴봅니다.
    다음 명령을 사용하여 생성된 마이그레이션을 실행합니다.
    rails db:migrate
    
    이제 피드 데이터를 추가합시다.db/seeds.rb를 열고 다음을 추가합니다.
    # db/seeds.rb
    
    10.times do |n|
      Post.create!(title:  "Post title - ##{n}", content: "This is the content for the #{n.ordinalize} post.")
    end
    
    본 강좌에 있어서 이 코드들을 완전히 이해하는 것은 중요하지 않지만, 저에게 연락하거나 평론에서 알려주신다면, 저는 그것에 대해 더욱 상세한 설명을 하고 싶습니다.TL;DR은 현재 데이터베이스에 10개의 고유한 포스트 레코드를 보유하고 있습니다.
    재미있는 부분에 들어가기 전에 우리가 해야 할 마지막 일은 config/routes.rb 파일을 업데이트하여 응용 프로그램의 루트 경로를 댓글의 색인 페이지로 만드는 것이다.
    # config/routes.rb
    
    Rails.application.routes.draw do
      resources :posts
      root to: "posts#index"
    end
    
    Rails 서버를 다시 시작하여 localhost:3000로 이동하면 다른 CRUD 작업에 대한 링크가 있는 임의의 데이터가 포함된 테이블을 볼 수 있습니다.

    TailwindCSS 설치


    지금 재미있는 일을 보러 오세요.
    터미널에서 다음 명령을 실행하여 TailwindCSS 설치
    yarn add tailwindcss
    
    후미풍 구성 파일도 추가해야 합니다.
    ./node_modules/.bin/tailwind init
    
    프로젝트의 루트 디렉터리에 tailwind.config.js 파일을 만들어야 합니다.이 파일은 TailwindCSS 기본값 사용자 정의, 플러그인 추가 등에 사용할 수 있습니다.Tailwind's docs 에서 자세한 내용을 확인할 수 있습니다.
    Rails 6의 기본 구성이며 두 가지 새로운 요구 사항이 있습니다.
    require('tailwindcss'),
    require('autoprefixer'),
    
    이러한 요구 사항의 가장 좋은 순서는 다음과 같습니다. 그러나 PostSS 구성의 맨 위에 추가하면 대부분의 사용자에게 적용될 수 있다고 생각합니다.
    // postcss.config.js
    
    module.exports = {
      plugins: [
        require('autoprefixer'),
        require('postcss-import'),
        require('tailwindcss'),
        require('postcss-flexbugs-fixes'),
        require('postcss-preset-env')({
          autoprefixer: {
            flexbox: 'no-2009'
          },
          stage: 3
        })
      ]
    }
    

    순풍을 배치하다


    이 점을 할 수 있는 몇 가지 방법이 있지만, 이것은 나 개인의 선호이다.
    assets 폴더를 삭제하면 Webpacker에 전적으로 의존하기 때문에 필요하지 않습니다.
    rm -rf app/assets
    
    새 스타일시트 파일을 만들려면 다음과 같이 하십시오.
    touch app/javascript/src/application.scss
    
    postcss-import 및 웹 패키지를 사용하고 있으므로 Tailwind docs 스타일시트 파일에 다음 내용을 추가하라는 메시지가 표시됩니다.
    // app/javascript/src/application.scss
    
    @import "tailwindcss/base";
    @import "tailwindcss/components";
    @import "tailwindcss/utilities";
    
    또한 app/javascript/packs/application.js 에 다음 행을 추가해야 합니다.
    import '../src/application.scss'
    
    마지막 단계는 Rails에 우리의 패키지 파일을 사용하도록 알려주는 것입니다.app/views/layouts/application.html.erb에서 변경:
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
    
    받는 사람:
    <%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
    
    Rails 서버와 webpack dev 서버를 재부팅하면 localhost:3000 에서 다음을 볼 수 있습니다.

    순풍이 이제 작용을 해야 하기 때문에 우리의 관점을 조정하고 순풍이 가져온 이익을 봅시다.

    TailwindCSS를 사용하여 뷰 업데이트

    app/views/layouts/application.html.erb 변경 내용:
    <body>
      <%= yield %>
    </body>
    
    받는 사람:
    <body class="min-h-screen bg-gray-100">
      <div class="container mx-auto">
        <%= yield %>
      </div>
    </body>
    
    app/views/posts/index.html.erb에서 프레임 페이지를 다음과 같이 대체합니다.
    <p id="notice"><%= notice %></p>
    <h1 class="font-semibold text-4xl text-gray-700 my-8">Posts</h1>
    <div class="w-full xl:w-8/12 mb-12 xl:mb-0 px-4">
      <div class="relative flex flex-col min-w-0 break-words bg-white w-full mb-6 shadow-lg rounded">
        <table class="items-center w-full bg-transparent border-collapse">
          <thead>
            <tr>
              <th class="px-6 bg-gray-100 text-gray-600 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left">Title</th>
              <th class="px-6 bg-gray-100 text-gray-600 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left">Content</th>
              <th class="px-6 bg-gray-100 text-gray-600 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left", colspan="3"></th>
            </tr>
          </thead>
          <tbody>
            <%% @posts.each do |post| %>
              <tr>
                <td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= post.title %></td>
                <td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= post.content %></td>
                <td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= link_to 'Show', post %></td>
                <td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= link_to 'Edit', edit_post_path(post) %></td>
                <td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left"><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
              </tr>
            <% end %>
          </tbody>
        </table>
      </div>
    </div>
    <%= link_to 'New Post', new_post_path %>
    
    현재 localhost:3000 로 이동하면 다음 페이지가 보일 것입니다

    추상적이다


    이 시계는 보기에는 많이 좋아졌지만, 이 원소들의 종류는 매우 길고, 게다가 중복된다.그것들을 우리의 scss 파일로 추상화해서 정리합시다.app/javascript/src/application.scss 에서 두 개의 새 클래스를 만듭니다.
    .table-header {
      @apply px-6 bg-gray-100 text-gray-900 align-middle border border-solid border-gray-200 py-3 text-xs uppercase border-l-0 border-r-0 whitespace-no-wrap font-semibold text-left;
    }
    
    .table-content {
      @apply border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-no-wrap p-4 text-left;
    }
    
    그리고 HTML에서 모든 헤더와 폼 요소 클래스를 변경합니다.또한 제목 텍스트를 어둡게 하여 변경 내용을 강조합니다.
    페이지를 다시 불러올 때, 이전과 같은 화면을 볼 수 있을 것입니다. 어두운 표 제목만 있을 것입니다.

    총결산


    TailwindCSS를 Rails 응용 프로그램에 추가하려는 사람들에게 도움이 되었으면 합니다.
    Rails와 Tailwind CSS를 사용한 이 글에 관심이 있다면 댓글을 남기거나 트위터에 연락해 주세요. 저는 기꺼이 당신과 이야기를 나눌 것입니다.
    View repo for this post
    즐거운 인코딩!😄

    좋은 웹페이지 즐겨찾기