Posts from 23 January 2015
-
Holy crap. I wasn't sure if I could do it, but I've got my app rendering a blank screen.
Some elaboration is required.
I set out today to get the basic infrastructure of Marionette working, with a modal login screen, and a router
before
action that properly redirects after sign-in.At 9:30 tonight, I checked in the last code that was necessary to get this to happen.
I am so happy. I thought, when we were first learning Backbone, that it was pretty opinionated, but it turns out that it's flexible, and requires more configuration than convention. Sure, there are things that
backbone-on-rails
tries to enforce, but that's not Backbone per se.Marionette, on the other hand, has some strong opinions, but the documentation is sparse enough that it can be hard to discern what those opinions are. Nevertheless, it desires certain things, and after a lot of secondary reading, I have figured out a lot of what those things are. For instance, Marionette wants you to modularize everything, but the
Marionette.Module
object is pretty ghetto and is slated for deprecation.In the meantime, then, one can use standard JavaScript modules and so forth to add in modular portions of an app, or (as I have) simply expand on the
backbone-on-rails
opinions by adding a folder for (e.g.) controllers and inserting it at the correct point in app startup. It works for now, but I may have to refactor later.And what a statement that is! Every single line I wrote in Backbone felt like it needed serious refactoring, but everything in Marionette is so DRY. Sure, there's a bit more "needless" code to pass messages, but that is in keeping with the spirit of loose coupling.
Case in point: I spent a good deal of time learning about JQuery Deferreds, which are a means of handling promises in JQ. They're similar in behavior to Arel queries—they don't do anything until you
resolve()
them, and until then you can keep modifying them by tacking on further attributes. Pretty cool, if you ask me, although a bit of a trip to wrap your mind around. When reading Essential JavaScript and coming across the section on promises, I didn't quite understand them, only really understanding that they help cut down on callback hell… but I saw the reason for them. Now I think I can consider them a part of my toolbox.What did I do today, then?
- Marionette is starting up
- I have created regions
- I can attach subviews to the correct region
- Calls to routes that require login are properly intercepted
- Once login succeeds, the original route is triggered
- Login is actually working :)
What did I learn?
- Reading the docs, while essential, can only get you so far
- At some point (earlier than you [ed: meaning 'I'] think) you need to sit down and just break things
- Initially, at least, you're not going to have a damned clue what you're doing, so you have to just get the gist and then try things.
- Act more than plan. (This is personal, and in reference to my current state.)
-
I did make headway finding employers today, which is good. There are quite a few that I can tell are doing things I would enjoy, now that I know how important user interactions and a strong API are to me. All the glue in the middle is not so interesting, which suggests, me being me, that this will be my first role out in the real world. Lol.
Most of the work just involves reading corporate copy and trying to suss out what it is that a company actually does. I will say that if I can't understand a company after two or three reads, they don't go on the list at all.
As for the rest of the day, I spent a lot of time stressing out about getting my project portfolio together. I still don't love my final project, but I started doing some major refactoring late yesterday afternoon and well into the night, and even though I haven't tested what I'm writing as much as I'd like I know that I prefer Marionette.
My project won't be done in the way I'd like, but as long as I can show it off, it should be okay.
This is stressful.