CBWIRE
InstallSource CodeIssuesSupport
v2.x
v2.x
  • Introduction
  • Release History
    • What's New With 2.2
    • What's New With 2.1
    • What's New With 2.0
  • Getting Started
  • Examples
  • Essentials
    • Configuration
    • Wires
    • Data Properties
    • Computed Properties
      • Computed Properties ( Proxied )
    • Actions
    • Templates
    • Events & Listeners
    • Wire Lifecycle
    • JavaScript
    • Testing
  • Wire Features
    • Validation
    • File Uploads
    • Query String
    • Redirecting
    • Dependency Injection
  • Template Features
    • Directives
    • Loading States
    • Polling
    • Prefetching
    • Offline State
    • Defer Loading
    • Dirty State
  • Integrations
    • ContentBox CMS
    • Turbo
    • AlpineJS
    • Inline Scripts
Powered by GitBook
On this page
  • Let's create a counter...
  • What!? How?
  • Awesome, right?
  • Credits
  • Project Support
  • Resources

Was this helpful?

Export as PDF

Introduction

CBWIRE is a ColdBox module that makes building modern, reactive CFML apps a breeze without the need for JavaScript frameworks such as Vue or React, and without the hassle of creating unnecessary APIs.

NextRelease History

Last updated 2 years ago

Was this helpful?

Are you tired of the challenges that come with building modern CFML apps? makes server-side app development a breeze, but sometimes the client-side is a whole different story. With powerful JavaScript frameworks like Vue and React, it can be a difficult and time-consuming process to create your web apps.

But what if you could have the best of both worlds: the power of Vue and React with the simplicity of CFML? Impossible, you say? Think again!

Introducing CBWIRE: Power up your CFML and make your app dreams a reality!

Let's create a counter...

mkdir cbwire-demo
cd cbwire-demo
box coldbox create app
box install cbwire@be
box server start

Next, add wireStyles() and wireScripts() to our layout. This is required for CBWIRE to do it's magic.

Let's also insert a counter element into the page using wire( "Counter" ).

<!--- ./layouts/Main.cfm --->
<cfoutput>
<!doctype html>
<html>
<head>
    #wireStyles()#
</head>
<body>
    #wire( "Counter" )#
    #wireScripts()#
</body>
</html>
</cfoutput>
// ./wires/Counter.cfc
component extends="cbwire.models.Component" {

    // Data Properties
    data = {
        "counter": 0
    };

    // Actions
    function increment(){
        data.counter += 1;
    }
}
<!--- ./views/wires/counter.cfm --->
<cfoutput>
<div>
    <div>Count: #args.counter#</div>
    <button wire:click="increment">
        +
    </button>
</div>
</cfoutput>

Refresh the page. You now have a reactive counter that increments when you click the plus button without any page refreshing!

What!? How?

  1. CBWIRE renders our Counter Wire template. Our counter value defaults to 0.

  2. When a user clicks the plus button, CBWIRE detects the event and makes an XHR request to the server.

  3. CBWIRE picks up the XHR request and invokes the increment action.

  4. The increment method updates the counter state by 1.

  5. CBWIRE re-renders the template and returns the updated HTML in the XHR response

  6. CBWIRE detects any state changes and uses Livewire to mutate the DOM.

Awesome, right?

  • We built a reactive counter with no page refreshing.

  • We didn't write any JavaScript.

  • We didn't use webpack or mess with JavaScript compilation.

CBWIRE is transforming the way we build CFML applications, and we think you're going to love it also!

Credits

Project Support

Resources

Install , then from our terminal, run:

Let's define our counter .

Finally, let's create a for our counter Wire. Notice that we've added a wire:click to our button.

We never left CFML.

CBWIRE is built on and wouldn't exist without ( creator of , ) and the PHP community.

The CBWIRE module for ColdBox is written and maintained by , , and .

Please consider becoming one of our lovingly esteemed .

CBWIRE Examples:

ForgeBox:

GitHub Repository:

API Docs:

Issue Tracker:

Task List Demo:

Form Validation Demo:

Up and Running Screencast:

Into The Box 2021 Presentation:

Ortus Webinar 2022:

🤓
CommandBox
Wire
Template
directive
Livewire
Caleb Porzio
Livewire
Alpine.js
Grant Copley
Luis Majano
Ortus Solutions
Patreon supporters
https://github.com/grantcopley/cbwire-examples
https://forgebox.io/view/cbwire
https://github.com/coldbox-modules/cbwire
https://apidocs.ortussolutions.com/#/coldbox-modules/cbwire/
https://github.com/coldbox-modules/cbwire/issues
https://github.com/grantcopley/cbwire-task-list-demo
https://github.com/grantcopley/cbwire-signup-form-demo
https://cfcasts.com/series/ortus-single-video-series/videos/up-and-running-with-cbwire
https://cfcasts.com/series/into-the-box-2021/videos/cbwire-coldbox-+-livewire-grant-copley
https://cfcasts.com/series/ortus-webinars-2022/videos/grant-copley-on-cbwire-+-alpine_js
ColdBox