Expectations vs Reality
When Implementing Vue.js
Taylor Kimmett
Software developer at Cognito Forms
Powerful,
beautiful
forms
Addressing
Technical Debt
Aging client technology
▪ jQuery – 12 years old
▪ MSAjax – 10 years old
▪ ExoWeb
▪ open source library we built
Maintenance
▪ Loosely connected scripts
▪ JS + HTML in C#
Packaging
Limited community
▪ Third party software
▪ Documentation, learning resources
Size
▪ jQuery: 91KB
▪ MsAjax: 121KB
▪ Vue + compiler: 92KB
212KB
jQuery + MsAjax
92KB
Vue + compiler
The Promise of Vue
From the docs
Vue is a progressive framework for building user interfaces. Unlike other monolithic
frameworks, Vue is designed from the ground up to be incrementally adoptable. The
core library is focused on the view layer only, and is easy to pick up and integrate with
other libraries or existing projects. On the other hand, Vue is also perfectly capable of
powering sophisticated Single-Page Applications when used in combination with
modern tooling and supporting libraries.
Incremental inclusion
Components
Single File
Components
▪ Organization
▪ Clarity
▪ Separation of Concerns?
The Realities of Refactor
Where to start?
▪ Two sides of Cognito
▪ More complex first
Admin Public Form
The build step
▪ A necessary evil?
▪ Webpack
▪ Modules
▪ Configuration galore
▪ A force for good
Mapping components
Translating MSAjax
Integrating ExoWeb
Simplify code generation
Improve cashing
Improve caching
Optimize requests
▪ Code generation approach
▪ Vue + Webpack approach
Testing
▪ An unexpected gift
▪ Current testing strategy
▪ Jest
▪ Easy, fast, fun
Development
community
▪ vuejs.org/
▪ github.com/chrisvfritz/vue-
enterprise-boilerplate
▪ element.eleme.io
[WIP]
The future
The future
▪ Beta
▪ Compatibility
▪ Admin
▪ Optimistic
Thank you
cognitoforms.com/vue

Expectations vs Reality When Implementing vue.js