VueJS Notes
Created 2020-02-16 / Edited 2020-02-16
A brain-dump of some things I ran into while learning VueJS and related technology (Vuex).
- Vuex
- Makes me think of Software Transactional Memory
- Mutations are synchronous
- Since JS is single-threaded, that means they are atomic
- Even if they modify the state LOTS
- Actions are a transaction that get committed
- Actions are built out of multiple mutations
- Actions can be async
- At the end of an Action the state must be committed
- Where is the intermediate state stored?
- How are conflicts resolved?
- ...
- Based on experimentation, there is NO implicit transaction for an Action
- In an action, each Mutation is executed immediately
- I guess you could build something to make an Action have local-state transaction
- Sugar
- One of the ways I like to learn and think about things is "what part of this is sugar?"
- Attributes in components can use (mis-use?) xml namespaces to indicate the usage of the attribute
v-bind:value="foo"
- SUGAR: Drop the
v-bind
and you end up with :value="foo"
v-on:click="doStuff"
- SUGAR: Replace
v-on:
with @
and end up with @click="doStuff"
- Not Vue specific, but there are many oft-used JS sugar things
- My favorite is implicit-object (aka hash) key
- Take
{ "Person": Person }
, where Person
is a scoped variable - First, it is well-known that you can drop the quotes
{ Person: Person }
- With new JS you can also collapse this down further, since the key and the value-name match
{ Person }