Rails reactivo 100% 루비
9610 단어 rubycomponentsreactiverails
La promeza de Motiones muy atractiva "Motion은 순수 Ruby를 사용하여 Rails 응용 프로그램에서 반응식 실시간 프런트엔드 UI 구성 요소를 구축할 수 있습니다."
Poder ser reactivos en Rails escribiendo 100%código ruby y no dejar de ser Rails en el intento,para mi no tiene precio.Quería aclarar que no tengo nada en contra de JS y todo su ecosistema,es sólo una alegraía poder trabajar con el lenguage que me hace sentir mas cómodo.
Instalarla es muy sencillo y solo hay que seguir los pasos que ellos detallan en surepositorioasíque no voy a detenerme en eso,salvo para comentar que se apoyan en otro gran desarrollo como esViewComponentuna gema de la gente de Github que va a estar en el core de Rails desde la version 6.1.
Esta combinación es ganadora,componentes reactivos!
Veamos un ejemplo extraído de su documentación:
El Hola mundo de la reactividad,un boton Contado Reactivio!
불안정 운동
rails g motion:component <component-name>
Vamos a correr este comando que nos generaránuestro componente.Veremos como nos crea una carpeta“components”y dentro de ella nuestros archivos“button_component.rb”donde va a estar nuestra lógica de component y“button_component.html.erb”donde estaránuestro html> rails g motion:component button
Running via Spring preloader in process 21091
generate component
rails generate component Button
Running via Spring preloader in process 21096
create app/components/button_component.rb
invoke test_unit
identical test/components/button_component_test.rb
invoke erb
create app/components/button_component.html.erb
insert app/components/button_component.rb
podemos renderizar nuestro componente en cualquier vista que tengamos usando la siguiente linea<%= render ButtonComponent.new %>
Pongamos un poco de lógica reactiva a nuestro componentclass ButtonComponent < ViewComponent::Base
include Motion::Component
attr_reader :total
def initialize(total: 0)
@total = total
end
map_motion :add
def add
@total += 1
end
end
lo importante de aqíes elmap_motion :add
que va a ser la unión entre nuestro component HTML y el método en nuestro component rubyyo estoy usandoBulmapara esta prueba pero puedes usar cualquier framework CSS o including uno.
Agreguemos nuestro HTMLal 구성 요소
<div>
<span><%= total %></span>
<%= button_tag "Increment", data: { motion: "add" }, class: "button is-small is-info" %>
</div>
Dos cosas para destacar aqí:Una limitación es,que todo en nuestro template del component de be tener un nodo principal,en nuestro caso envolvemos todo con un simple div,esto es por como functiona Motion por detrás,muy similar a cómo trabaja React.
La otra cosa para destacar es 데이터: {motion: "add"}es La conección con nuestro component en ruby, es lo que va a disperor el metodo con el mismo nombre.
Y eso es todo lo que necesitamos,con eso deberíamos tener un boton reactivo completamente functional Y sin describir una linea de javascript.
Otro pequeño ejemplo es el clásico escribo y Reaciono,nuestro código podría ser algo como esto:
<div>
<p>My name is <%= name %> <%= 'ok!' if @is_ok %></p>
<input type="text" data-motion="keyup->update" class="input">
</div>
class InputComponent < ViewComponent::Base
include Motion::Component
attr_reader :name
def initialize(name: "")
@name = name
end
map_motion :update
def update(event)
new_value = event.current_target.value
@name = new_value
@is_ok = new_value == "sebastián"
end
end
Otras dos cosas para destacar aqí.Por defecto motion tomar á como 트리거 en input el evento change pero podemos definir qué evento bindear, como se ve en el ejempo ´ data motion='keyup-> update'´estamos binde ando keyup
Otro aspecto interestante es que nuestro mé todo en ruby recibe un ´ event ´como pará metro, donde tenemos disposible datos como el current_target para obtener su valor(en este ejempo)o poder accepter a sus atributos 등...
Imaginen el Potential de esto usando Active Record, Cable Ready, chartkick 등...
그레시아스 폴 레가 하스타 아규.Esto no 가장ser un tutorial o una introductción a Motion, soloera comparitir con ustedes esta herramienta que seguramente va a pasara ser cotidiana en mi trabajo.
디오스 로스 벤디가!
Reference
이 문제에 관하여(Rails reactivo 100% 루비), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sarriagada/rails-reactivo-100-ruby-544텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)