뷰, 템플릿 및 LiveView 기초
Phoenix 뷰와 템플릿으로 동적 콘텐츠를 렌더링하고 Phoenix LiveView의 강력한 기능을 소개받습니다.
뷰, 템플릿 및 LiveView 기초은(는) CoddyKit의 무료 Elixir & Phoenix: Scalable Backend Development 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Elixir & Phoenix: Scalable Backend Development 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Elixir & Phoenix: Scalable Backend Development 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Unlocking Dynamic Content
Web applications aren't static! You need ways to display changing data, like user profiles or product lists. This is where views and templates come in.
They work together to transform raw data from your application into the beautiful HTML that users see in their browsers.
Views: Your Data's Designer
In Phoenix, a View is an Elixir module responsible for preparing data before it's rendered into a template. Think of it as a middleman between your controller and the final HTML.
Views can:
- Format dates or numbers.
- Create dynamic links or URLs.
- Transform complex data structures into simpler ones for display.
Templates: Crafting HTML
Templates are files (often with a .eex extension or using the ~H sigil) that combine standard HTML with embedded Elixir code. Elixir's templating engine, EEx (Embedded Elixir), allows you to inject dynamic content.
<%= expression %>: Evaluates an Elixir expression and outputs its result directly into the HTML.<% expression %>: Evaluates an Elixir expression but does NOT output its result. Useful for control flow like loops or conditionals.
The Rendering Flow in Action
Here's a simplified look at how Phoenix renders a page:
- A Controller action receives an HTTP request.
- The Controller calls
render/3(e.g.,render(conn, "index.html", assigns)), passing data as 'assigns'. - The corresponding View module (e.g.,
PageView) receives these assigns and can apply helper functions. - The Template file (e.g.,
index.html.eex) uses the prepared assigns to generate the final HTML. - This HTML is then sent back to the user's browser.
EEx in Action: Dynamic Greeting
Let's see how EEx processes dynamic data. This Elixir script simulates a template rendering a value passed to it.
defmodule MyTemplateRenderer do
def render_greeting(name) do
template_string = "<h1>Hello, <%= name %>!</h1>"
EEx.eval_string(template_string, [name: name])
end
end
IO.puts MyTemplateRenderer.render_greeting("CoddyKit Learner")Introducing Phoenix LiveView
Imagine building highly interactive web interfaces without writing a single line of JavaScript. That's the magic of Phoenix LiveView!
LiveView allows you to render dynamic, real-time user interfaces entirely on the server, using WebSockets for communication. It brings the power of server-side Elixir directly to your frontend interactions.
LiveView's Core: `mount` & `render`
Every Phoenix LiveView module typically defines at least two key functions:
mount/3: This function is called when the LiveView is first initialized. It's used to set up the initial state (known as 'assigns') of your LiveView.render/1: Takes the current assigns and returns a special HEEx template (using the~Hsigil) to generate the HTML. This function is called automatically whenever the LiveView's state changes.
Adding Interaction: Events
LiveView handles user events (like clicks or form submissions) by sending messages over the WebSocket back to the server. You attach special phx- attributes to your HTML elements to trigger these events.
phx-click="event_name": Triggers a server-side event when the element is clicked.handle_event/3: A callback function in your LiveView module that receives and processes these events, updating the LiveView's state (assigns).
Simple LiveView Counter Concept
Here's a simplified look at a LiveView that implements a basic counter. Notice how handle_event updates the @count assign, which automatically re-renders the template.
defmodule MyAppWeb.CounterLive do
use Phoenix.LiveView, layout: {MyAppWeb.LayoutView, :live}
def mount(_params, _session, socket) do
{:ok, assign(socket, :count, 0)}
end
def render(assigns) do
~H"""
<h1>Count: <%= @count %></h1>
<button phx-click="increment">Increment</button>
"""
end
def handle_event("increment", _value, socket) do
{:noreply, update(socket, :count, &(&1 + 1))}
end
endCheck Your Understanding
In Phoenix, what is the primary purpose of a View module?
Recap: Views, Templates, LiveView
You've learned how Phoenix uses Views to prepare data and Templates (EEx/HEEx) to render dynamic HTML. We also introduced Phoenix LiveView, a powerful tool for building interactive UIs with Elixir, minimizing the need for client-side JavaScript.
Understanding these components is key to building dynamic and engaging web applications with Phoenix. Next, you might explore more advanced LiveView features or dive into data persistence with Ecto!
자주 묻는 질문
“뷰, 템플릿 및 LiveView 기초” 강의는 무료인가요?
네 — “뷰, 템플릿 및 LiveView 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Elixir & Phoenix: Scalable Backend Development 강의 전체를 잠금 해제할 수 있습니다. Elixir & Phoenix: Scalable Backend Development 강의에는 총 4개의 강의가 포함되어 있습니다.
“뷰, 템플릿 및 LiveView 기초”에서 뭘 배우나요?
Phoenix 뷰와 템플릿으로 동적 콘텐츠를 렌더링하고 Phoenix LiveView의 강력한 기능을 소개받습니다. 브라우저에서 직접 실행하는 실습 코드로 Elixir & Phoenix: Scalable Backend Development을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Elixir & Phoenix: Scalable Backend Development을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Elixir & Phoenix: Scalable Backend Development은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“뷰, 템플릿 및 LiveView 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Elixir & Phoenix: Scalable Backend Development 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Elixir & Phoenix: Scalable Backend Development 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Phoenix 프로젝트 설정과 구조
- 라우팅, 컨트롤러 및 플러그
- 뷰, 템플릿 및 LiveView 기초
- Phoenix Channels로 실시간 기능 구현하기