SlideShare a Scribd company logo
CommandBox vs Node.jsCommandBox vs Node.js
Nolan Erck
South of Shasta
About MeAbout Me
Software Consultant (southofshasta.com)
Software Development, Training, Design
ColdFusion, C++, Java, jQuery, PHP, .NET, HTML5, Angular,
SQL, etc...
Manager of SacInteractive User Group
Reformed Video Game Developer (Grim Fandango, SimPark,
StarWars Rogue Squadron, etc).
Music Junkie
ITB2019  CommandBox vs Node.js - Nolan Erck
ITB2019  CommandBox vs Node.js - Nolan Erck
Slide deck and code samples are here:Slide deck and code samples are here:
github.com/nolanerck
commandbox-vs-node
For today's talkFor today's talk
Screenshots and recorded
videos
No smoke and mirrors
I'm merely avoiding hotel wi
Let's get started!Let's get started!
We've all heard these things:We've all heard these things:
JavaScript has all the cool toys!
CFML is old, dying and only for legacy
stuff!
Incorrect!Incorrect!
CommandBox is here to save the day!
All of the Node.js fundamentals are available to CFML
developers
What is Node.js?What is Node.js?
App you install
On laptop or server
"JavaScript can run anywhere"
In web browser (obviously)
As a server side language (ala
CFML)
As a native CLI tool on your laptop
Installing Node.jsInstalling Node.js
Go to Nodejs.org
Click one of these:
It usually "just works"
Regular updates are available
What is CommandBox?What is CommandBox?
App you install
On laptop or server
"CFML from the command line"
As a server side language (duh)
As a native CLI tool on your
laptop
Installing CommandBoxInstalling CommandBox
Go to
ortussolutions.com/products/commandbox
Click one of these:
It usually "just works"
Regular updates are available
The score:The score:
CommandBox 1, Node 1
The Command Line...The Command Line...
Launching Node.jsLaunching Node.js
Open a command prompt, type
"node"
This hapens:
Why did it say "undefined"?Why did it say "undefined"?
Not a bug, working as designed
You see 2 things in the results:
The output of your code
And the return value of your code
console.log() doesn't return anything, so you get
"unde ned"
Launching CommandBoxLaunching CommandBox
Open a command prompt, type "box"
This hapens:
The score:The score:
CommandBox 2, Node 2
Running files via NodeRunning files via Node
Type "node app.js", this happens:
Running files via CommandBoxRunning files via CommandBox
Type "execute app.cfm", this
happens:
The score:The score:
CommandBox 3, Node 3
Built-in help from Node.jsBuilt-in help from Node.js
Type "node --help", this happens:
0:00 / 0:14
Built-in help from CommandBoxBuilt-in help from CommandBox
Type "box help", this happens:
0:00 / 0:19
Built-in help from CommandBoxBuilt-in help from CommandBox
But wait, there's more!
CommandBox is broken up into "namespaces"
Each "namespace" contains many different
commands
Switch to a new namespace to see more detailed help
The score:The score:
CommandBox 4, Node 4
How does Node do it?How does Node do it?
Running a JavaScript application engine on your computer (or
server)
Code is processed thru the engine
Spins up different services as needed
Customizable per project via ".json" con g les
How does CommandBox do it?How does CommandBox do it?
Running a CFML application engine on your computer (or
server)
Code is processed thru the engine
Spins up different services as needed (modules, packages)
Customizable per project via ".json" con g les
The score:The score:
CommandBox 5, Node 5
Setting up a Node ProjectSetting up a Node Project
Type "npm init", this happens:
0:00 / 0:33
Setting up a CommandBox ProjectSetting up a CommandBox Project
Type "box init", this happens:
0:00 / 0:54
The score:The score:
CommandBox 6, Node 6
Dependencies Witih NodeDependencies Witih Node
In package.json, "dependencies" section
Things your app needs to run
jquery, lodash, Angular, libaries from your team, etc
"npm install"
Node goes out to "the registry" and grabs those
assets
Puts them in "node_modules" folder
Dependencies Witih NodeDependencies Witih Node
Dependencies Witih NodeDependencies Witih Node
Dependencies Witih CommandBoxDependencies Witih CommandBox
In box.json, "dependencies" section
Things your app needs to run
jquery, lodash, Angular, libaries from your team, etc
"box install"
CommandBox goes out to "the cloud" and grabs those
assets
Puts them in "installPaths" folders
Dependencies Witih CommandBoxDependencies Witih CommandBox
Dependencies Witih CommandBoxDependencies Witih CommandBox
0:00 / 1:35
The score:The score:
CommandBox 7, Node 7
Dev Dependencies With NodeDev Dependencies With Node
In package.json, "devDependencies" section
Things your app needs to build
CLI Tools, Typescript transpiler, Code Analyzer, Linter,
etc
Angujlar CLI, TypeScript, Webpack, etc
"npm install --dev [thing]"
Node goes out to "the registry" and grabs those assets
Puts them in "node_modules" folder
Dev Dependencies Witih NodeDev Dependencies Witih Node
Dev Dependencies Witih NodeDev Dependencies Witih Node
Dev Dependencies Witih CommandBoxDev Dependencies Witih CommandBox
In box.json, "devDependencies" section
Things your app needs to build
jquery, lodash, Angular, libaries from your team, etc
"box install --saveDev [thing]"
CommandBox goes out to "the cloud" and grabs those
assets
Puts them in "installPaths" folders
Dev Dependencies Witih CommandBoxDev Dependencies Witih CommandBox
Dev Dependencies Witih CommandBoxDev Dependencies Witih CommandBox
0:00 / 1:07
The score:The score:
CommandBox 8, Node 8
Node has a Registry: npmNode has a Registry: npm
Magic place in "the cloud" where reusable JavaScript lives
"npm install [some library]"
Node talks to "the registry", downloads the lib
These dependencies live in the "node_modules" folder of your
project
How do I addHow do I add mymyproject to npm?project to npm?
Adding My Project to npmAdding My Project to npm
Create a package.json le
Follow a few basic guidlines
README, semantic version, Author,
etc
More details: https://docs.npmjs.com
CommandBox has a Registry: ForgeBoxCommandBox has a Registry: ForgeBox
The "npm" of the CF world
Not just *Box stuff!
Can install CFWheels, Mura, FW/1, etc
Any general CFML project can live
here
How do I addHow do I add mymyproject to ForgeBox?project to ForgeBox?
Adding My Project to npmAdding My Project to npm
Create a box.json le
Follow a few basic guidlines
README, semantic version, Author,
etc
More details: https://forgebox.io
The score:The score:
CommandBox 9, Node 9
Using Node and DockerUsing Node and Docker
hub.docker.com/_/node
Using CommandBox and DockerUsing CommandBox and Docker
Of cial Docker images from Ortus Solutions
hub.docker.com/r/ortussolutions/commandbox/
The score:The score:
CommandBox 10, Node 10
Using Node to Make GamesUsing Node to Make Games
Tons of resources
Many game engines support JavaScript
Can get as simple or advanced as you
like
Using CommandBox to Make GamesUsing CommandBox to Make Games
Using both JavaScript *and* CFML for Games!Using both JavaScript *and* CFML for Games!
box snake
Vintage gaming at its nest!
Minh Vo's preso on React at Gov't Summit
draftstudios.com
Giancarlo Gomez's preso on WebSockets:
"Refreshing Your UI: Modern Uses for WebSockets"
The score:The score:
CommandBox 11, Node 11
Contributing to Node.jsContributing to Node.js
Main engine is written in C++, not
JavaScript
Add-ons can be JavaScript but not the core
e.g the Angular CLI, create-react-app
Contributing to CommandBoxContributing to CommandBox
90% of the core is CFML
Remaining 10% is Java
Installing CommandBox also gives you the source
code!
Contributing to CommandBoxContributing to CommandBox
But my custom commands have to be ColdBox apps, right?But my custom commands have to be ColdBox apps, right?
Nope!Nope!
My First CommandBox CommandMy First CommandBox Command
ModuleConfig.cfcModuleConfig.cfc
list.cfclist.cfc
MovieQuotes In Action!MovieQuotes In Action!
0:00 / 0:09
The score:The score:
CommandBox 12, Node 12
Okay so what's the catch?Okay so what's the catch?
There isn't oneThere isn't one
CommandBox is...
Free, open source, well
supported
Supports all CFML engines
Lucee and Railo
Adobe CF as far back as version 9
CommandBox Really is a Game-ChangerCommandBox Really is a Game-Changer
You can do all the cool things that Node/JavaScript developers
do
So which do I have installed for development?So which do I have installed for development?
Node or CommandBox?Node or CommandBox?
BothBoth
They serve different
purposes
Uses for Node.jsUses for Node.js
It's ubiquitous with modern front-end development
Front-end tooling requires Node
Angular, Vue, React, PhoneGap, Grunt, Gulp, Stylus, SASS,
SCSS, LESS, WebPack, Babel, TypeScript, etc
This is a "given" nowadays
Uses for CommandBoxUses for CommandBox
This is the way to tell modern CFML developers from legacy
programmers
Spinning up Dev environments, testing everything,
containerization, onboarding new team members
Managing production web servers
Building CLI tools for development AND production servers!
Other ResourcesOther Resources
South of Shasta - onsite and remote
training
nodejs.org
docs.npmjs.com
commandbox.ortusbooks.com
Ortus Solutions
Brad Wood's Blog
Talk to people at the conference!
Learning in 30 minutes a day.Learning in 30 minutes a day.
Questions? Comments?Questions? Comments?
southofshasta.com
nolan@southofshasta.com
Twitter: @southofshasta
Github: nolanerck
Slides and code:
github.com/nolanerck/commandbox-vs-node
Thanks!

More Related Content

PDF
ITB2019 ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 V...
PDF
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
PDF
WebRTC - Brings Real-Time to the Web
PDF
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
PDF
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
PDF
High Productivity Web Development Workflow
PDF
[CLIW] Web testing
PPTX
Intro to JavaScript Tooling in Visual Studio Code
ITB2019 ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 V...
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav Dukhin
WebRTC - Brings Real-Time to the Web
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
High Productivity Web Development Workflow
[CLIW] Web testing
Intro to JavaScript Tooling in Visual Studio Code

What's hot (20)

PDF
Front Ends for Back End Developers - Spring I/O 2017
PDF
codemotion-docker-2014
PDF
The curious Life of JavaScript - Talk at SI-SE 2015
PPTX
WordPress automation and CI
PDF
Namshi in 2014: let's rock!
PDF
Use groovy & grails in your spring boot projects
PDF
Don't screw it up: how to build durable web apis
PPTX
HTML5 for dummies
PDF
Infrastructure as Data with Ansible
PDF
Managing dependencies with gradle
PDF
Create ReactJS Component & publish as npm package
PDF
Евгений Жарков "React Native: Hurdle Race"
PDF
Automated Testing in WordPress, Really?!
PDF
When Web meet Native App
PDF
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
PDF
Introducing Playwright's New Test Runner
PDF
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
PDF
From devOps to front end Ops, test first
PDF
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
PDF
Command Box ColdFusion Package Manager, Automation
Front Ends for Back End Developers - Spring I/O 2017
codemotion-docker-2014
The curious Life of JavaScript - Talk at SI-SE 2015
WordPress automation and CI
Namshi in 2014: let's rock!
Use groovy & grails in your spring boot projects
Don't screw it up: how to build durable web apis
HTML5 for dummies
Infrastructure as Data with Ansible
Managing dependencies with gradle
Create ReactJS Component & publish as npm package
Евгений Жарков "React Native: Hurdle Race"
Automated Testing in WordPress, Really?!
When Web meet Native App
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
Introducing Playwright's New Test Runner
"Will Git Be Around Forever? A List of Possible Successors" at UtrechtJUG
From devOps to front end Ops, test first
Роман Лютиков "Web Apps Performance & JavaScript Compilers"
Command Box ColdFusion Package Manager, Automation
Ad

Similar to ITB2019 CommandBox vs Node.js - Nolan Erck (20)

PDF
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
PPTX
A complete guide to Node.js
PDF
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
PPT
01 Introduction to programming
PPTX
PDF
Tutorial: Develop Mobile Applications with AngularJS
PPT
Introduction to Programming Lesson 01
PPTX
Introduction to Node.js
PPT
Ferrara Linux Day 2011
PDF
High productivity web development workflow - JavaScript Meetup Saigon 2014
PDF
Open frameworks 101_fitc
PDF
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
DOCX
unit 2 of Full stack web development subject
PPTX
PPTX
Introduction of deno 1
PDF
How to Dockerize, Automate the Build and Deployment Process for Flutter?
PPTX
C# Production Debugging Made Easy
PPTX
Intro to Node.js (v1)
PPTX
Nodejs
PDF
Webconf nodejs-production-architecture
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
A complete guide to Node.js
Archeology for Entertainment, or Checking Microsoft Word 1.1a with PVS-Studio
01 Introduction to programming
Tutorial: Develop Mobile Applications with AngularJS
Introduction to Programming Lesson 01
Introduction to Node.js
Ferrara Linux Day 2011
High productivity web development workflow - JavaScript Meetup Saigon 2014
Open frameworks 101_fitc
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
unit 2 of Full stack web development subject
Introduction of deno 1
How to Dockerize, Automate the Build and Deployment Process for Flutter?
C# Production Debugging Made Easy
Intro to Node.js (v1)
Nodejs
Webconf nodejs-production-architecture
Ad

More from Ortus Solutions, Corp (20)

PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
PDF
June Webinar: BoxLang-Dynamic-AWS-Lambda
PDF
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
PDF
What's-New-with-BoxLang-Brad Wood.pptx.pdf
PDF
Getting Started with BoxLang - CFCamp 2025.pdf
PDF
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
PDF
What's New with BoxLang Led by Brad Wood.pdf
PDF
Vector Databases and the BoxLangCFML Developer.pdf
PDF
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
PDF
Use JSON to Slash Your Database Performance.pdf
PDF
Portable CI wGitLab and Github led by Gavin Pickin.pdf
PDF
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
PDF
Supercharging CommandBox with Let's Encrypt.pdf
PDF
Spice up your site with cool animations using GSAP..pdf
PDF
Passkeys and cbSecurity Led by Eric Peterson.pdf
PDF
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
PDF
Integrating the OpenAI API in Your Coldfusion Apps.pdf
PDF
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
PDF
Geting-started with BoxLang Led By Raymon Camden.pdf
PDF
From Zero to CRUD with ORM - Led by Annette Liskey.pdf
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
June Webinar: BoxLang-Dynamic-AWS-Lambda
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Getting Started with BoxLang - CFCamp 2025.pdf
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
What's New with BoxLang Led by Brad Wood.pdf
Vector Databases and the BoxLangCFML Developer.pdf
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
Use JSON to Slash Your Database Performance.pdf
Portable CI wGitLab and Github led by Gavin Pickin.pdf
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
Supercharging CommandBox with Let's Encrypt.pdf
Spice up your site with cool animations using GSAP..pdf
Passkeys and cbSecurity Led by Eric Peterson.pdf
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
Integrating the OpenAI API in Your Coldfusion Apps.pdf
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
Geting-started with BoxLang Led By Raymon Camden.pdf
From Zero to CRUD with ORM - Led by Annette Liskey.pdf

Recently uploaded (20)

PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Electronic commerce courselecture one. Pdf
PPTX
1. Introduction to Computer Programming.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Approach and Philosophy of On baking technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Machine Learning_overview_presentation.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
MIND Revenue Release Quarter 2 2025 Press Release
Electronic commerce courselecture one. Pdf
1. Introduction to Computer Programming.pptx
20250228 LYD VKU AI Blended-Learning.pptx
SOPHOS-XG Firewall Administrator PPT.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Machine learning based COVID-19 study performance prediction
Diabetes mellitus diagnosis method based random forest with bat algorithm
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Programs and apps: productivity, graphics, security and other tools
Spectral efficient network and resource selection model in 5G networks
Approach and Philosophy of On baking technology
Network Security Unit 5.pdf for BCA BBA.
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Machine Learning_overview_presentation.pptx
A comparative analysis of optical character recognition models for extracting...
The Rise and Fall of 3GPP – Time for a Sabbatical?

ITB2019 CommandBox vs Node.js - Nolan Erck