The document discusses full stack development using AngularJS, Express, NodeJS, and Yeoman. It provides information on each technology and their uses. It describes issues with using Yeoman Express and proposes an alternative AngularJS Atlanta stack that uses Nodemon for live reload, keeps the same folder structure for scaffolding, and uses Mocha for unit testing with a MongoDB backend. Resources and thanks are provided at the end.
2. ANGULARJS
ALIGNS VERY WELL WITH UPCOMING STANDARDS
CONTAINS EVERYTHING YOU NEED FOR SINGLE
PAGE APPS
LETS YOU USE STANDARD LIBRARIES IN NATURAL
WAYS. IE: UNDERSCORE / PROTOTYPE
MAKES UNIT TESTING EASY
AngularJS Atlanta Meetup
3. EXPRESSJS
SIMPLE, YET FULL FEATURED FRAMEWORK THAT
MAKES BUILDING API’S VERY SIMPLE
ROUTING, DEPENDENCY INJECTION, MIDDLEWARE,
REQUEST PARSING, FILE API
USING JAVASCRIPT ON THE SERVER IS FUN
AngularJS Atlanta Meetup
4. YEOMAN
GREAT WORKFLOW FOR MODERN WEB APPS
LIVE RELOAD
COMPILES COMPASS & COFFEESCRIPT
HANDLES YOUR BUILD PROCESS
RAILS LIKE SCAFFOLDING
AngularJS Atlanta Meetup
5. YEOMAN EXPRESS STACK
BRINGS IN SUPPORT FOR FULL STACK DEVELOPMENT
FROM WITHIN YEOMAN
LETS YOU SCAFFOLD OUT SERVER ROUTES AND
OTHER COMPONENTS
DEMO
AngularJS Atlanta Meetup
6. YEOMAN EXPRESS ISSUES
NO LIVE-RELOAD SUPPORT FOR SERVER CHANGES
POOR STRUCTURE OF SERVER CODE
NO SERVER UNIT TESTS SCAFFOLDED
AngularJS Atlanta Meetup
7. ANGULARJS ATL STACK
USE NODEMON TO MONITOR FOR CHANGES
USE YEOMAN FOR CLIENT, KEEP SAME FOLDER
STRUCTURE TO KEEP SCAFFOLDING INTACT
PROVIDE MV* STRUCTURE
USES MOCHA FOR UNIT TESTING
DEMONSTRATES CRUD WITH MONGO & MONGOOSE
DEMO
AngularJS Atlanta Meetup
9. THANKS!
DARIUS RIGGINS @driggsx / Github: dariusriggins
ANGULAR-EXPRESS: https://github.com/AngularJS-
ATL/angularjs-express
AngularJS Atlanta Meetup
Editor's Notes
We’re covering it because most devs ask the question when starting with angularMention a brief intro about each piece:AngularJS: Client side MV* FrameworkExpress & Node: Express is a library on top of Node, allowing us to be more productive, similar to MVC, Rails, Django, etc.Yeoman: An opioninated tool to kick start development and help with repetiive tasks
Mention Object.observe, web components, custom elements, and Mutation observers as part of vNext for the webContains Routing, Two-Way binding, directives, dependency injection & templating, contrast to KO or EmberWorking with lists or objects is natural, it all just works the way you expect it toSupports Mocha, Jasmine, has a built in framework in Testacular, and it’s own mini framework for end to end testing
Minimal and flexible node.js framework, providing a robust set of features for building applications.Has all of the features you need to build a robust APIUsing JS on the server means you don’t have to context switch, interacting with JSON is natural, can use the same utility libraries such as underscore or prototype.
Talk about the benefits of LiveReload, not having to constantly refresh pagesTalk about how it optimizes images, does concatenation, minification, creates an app manifestTalk about scaffolding, how it creates routes, controllers, and accompanies each with unit testsTalk about the future, how they are moving more towards scaffolding, and letting grunt and bower handle the build process and package management
Talk about how the server is run at the same time as the client pieces, allowing for a smooth development workflowTalk about how you can scaffold out server components, such as crud routeshttps://github.com/yeoman/yeoman/tree/express-stack
Filed an issue on the server reload, a potential fix may be in the worksScaffolded server code is not ideal, is overly simplistic and doesn’t provide any structureIn contrast to typical Yeoman form, no unit tests are generated for the serverIs there a better way?
Mention that we’re using EA’s tableu library as a starting pointMention that you can use MongoLab or similar cloud databases as a free option to start out withTalk a bit about Mongoose, how it simplifies interacting with Mongo, and provides optional schema support.Talk about Mocha, how it makes asyncronous testing easy