http://digitaldrummerj.me
Justin James
Developer / Blogger / Instructor / Speaker
http://digitaldrummerj.me 2
Create JavaScript Services
http://digitaldrummerj.me 3
Auto-generated REST APIs
http://digitaldrummerj.me 4
Any Database
http://digitaldrummerj.me 5
Flexible and Configurable
http://digitaldrummerj.me 6
Security Policies
http://digitaldrummerj.me 7
Built-On
Top of
http://digitaldrummerj.me 8
Why I Love Sails
http://digitaldrummerj.me 9
Ridiculously Fast
http://digitaldrummerj.me 10
Just Works
http://digitaldrummerj.me 11
Does NOT hide the magic
http://digitaldrummerj.me 12
http://digitaldrummerj.me
Ultimately,
writing tiny amounts of code
gets you a ton!
13
http://digitaldrummerj.me 14
Setup
http://digitaldrummerj.me 15
Setup
npm install –g sails
http://digitaldrummerj.me 16
Create Project
sails new [Project Name] --no-linker --no-frontend
http://digitaldrummerj.me 17
Generate API
sails generate api [Api Name]
http://digitaldrummerj.me 18
Start Sails Server
sails lift
http://digitaldrummerj.me 19
Debug API
node --inspect app.js
http://digitaldrummerj.me
CODING TIME Design an API from scratch
Add Security
Connect to a Database
Connect to a UI
20
http://digitaldrummerj.me
Twitter: @digitaldrummerj
Code: github.com/digitaldrummerj/SailsTalk
Slides: slideshare.net/digitaldrummerj

Editor's Notes

  • #2 done
  • #3 https://nodejs.org/static/images/logos/nodejs-new-pantone-black.png
  • #4 http://www.robinsonfirm.com/wp-content/themes/attorney/photos/roadway-design-lawyer.jpg Rules to say how to handle incoming request Work with HTTP and WebSockets Two types:  automatic (or "implicit") custom (or "explicit")
  • #5 http://zdnet3.cbsistatic.com/hub/i/2014/11/28/dd55490d-76b3-11e4-b569-d4ae52e95e57/3451ad4c361a98b89fe2fe9f9fdec94f/amazon-vs-oracle-a-database-war.png Uses Waterline ORM Uses models to represent tables and relationships Can mix and match models between data stores Pre-configured to use JSON file store
  • #6 https://media.licdn.com/mpr/mpr/AAEAAQAAAAAAAAZ5AAAAJDcyNjRhOWEzLTYzMDktNGJiZC05YTcwLTg5MzkyNjJiNTdkZg.jpg
  • #7 https://i.kinja-img.com/gawker-media/image/upload/s--uFoN6YYf--/c_scale,fl_progressive,q_80,w_800/jgpeuoavmn7pwbh98ycs.jpg Implemented using policies Can use any scheme Apply to individual action or entire controller Designed to be chained together
  • #8 http://mean.io/wp-content/themes/twentysixteen-child/images/express.png
  • #9 http://blog.evizija.si/content/images/2015/01/687474703a2f2f692e696d6775722e636f6d2f546a394e6b2e706e67.png
  • #10 http://inlight.com.au/img/blog-main/main-how-to-make-your-website-load-ridiculously-fast.jpg http://1.bp.blogspot.com/-V6bdiIwfZxs/VXH1VbwOh8I/AAAAAAAAAw8/61Jt-OuuT98/s1600/Speedy.png
  • #11 https://pbs.twimg.com/profile_images/53902894/jwnhlogo02_logoonly.png
  • #12 http://goodheads.io/wp-content/uploads/2016/02/magic_method_bulb.jpg
  • #13 https://appeltechsolutions.com/wp-content/uploads/2013/06/free.jpg
  • #15 https://nodejs.org/static/images/logos/nodejs-new-pantone-black.png
  • #21 Done
  • #22 http://sailsjs.com/documentation/concepts/assets/disabling-grunt http://sailsjs.com/documentation/concepts http://sailsjs.com/documentation/concepts/configuration/the-local-js-file https://www.manning.com/books/sails-js-in-action