Slide 1

Slide 1 text

Dev Workshop Conference — 2014

Slide 2

Slide 2 text

who am i? @mikermcneil

Slide 3

Slide 3 text

We design and develop javascript apps for enterprise and startup customers. i have a startup called balderdash

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

I’m a sucker for Node.js. I wrote Sails. Disclaimers I don’t like CoffeeScript very much.

Slide 6

Slide 6 text

love at first sight circa 2011 Node.js...

Slide 7

Slide 7 text

We’re doing I/O completely wrong.

Slide 8

Slide 8 text

<— just look at the Unterschied Not acceptable!

Slide 9

Slide 9 text

Threads should be used by experts only. Concurrency should be easy.

Slide 10

Slide 10 text

How is that possible? (copy the browser)

Slide 11

Slide 11 text

// synchronous! console.log(‘hi’) // asynchronous! setTimeout(function (){! console.log(‘hi’);! }, 240000000); vs. incredible

Slide 12

Slide 12 text

could we use …for everything? I wondered…

Slide 13

Slide 13 text

so…

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

You don't want to be writing all these system calls. You need something that gives you… an ORM abstraction, or something.

Slide 16

Slide 16 text

so Sails.js was born

Slide 17

Slide 17 text

What is ?

Slide 18

Slide 18 text

Sails is a backend web framework. (runs on the server)

Slide 19

Slide 19 text

Sails is a backend web framework. (built on Express) (runs on the server)

Slide 20

Slide 20 text

Sails is a backend web framework. (uses Socket.io for optional WebSocket support) (built on Express) (runs on the server)

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

What does “backend web framework” mean?

Slide 24

Slide 24 text

handles incoming requests Sails is a backend web framework.

Slide 25

Slide 25 text

provides structure Sails is a backend web framework.

Slide 26

Slide 26 text

talks to your database Sails is a backend web framework.

Slide 27

Slide 27 text

talks to your database database(s) Sails is a backend web framework.

Slide 28

Slide 28 text

Sails is NOT a frontend web framework.

Slide 29

Slide 29 text

That’s up to you.

Slide 30

Slide 30 text

Handling Requests

Slide 31

Slide 31 text

Two different kinds of incoming requests:

Slide 32

Slide 32 text

$.get(‘/hello’, function (data) {! console.log(data);! });

Slide 33

Slide 33 text

Two different kinds of incoming requests:

Slide 34

Slide 34 text

io.socket.get(‘/hello’, function (data) {! console.log(data);! });

Slide 35

Slide 35 text

Two different kinds of incoming requests:

Slide 36

Slide 36 text

same server-side code

Slide 37

Slide 37 text

same server-side code function (req, res) {! res.json({! hello: ’world’! });! }

Slide 38

Slide 38 text

same server-side code function (req, res) {! if (req.isSocket) {! return res.json({! hello: ‘socket’! }! }! ! return res.json({! hello: ’http’! });! }

Slide 39

Slide 39 text

Structuring Your App

Slide 40

Slide 40 text

Sails is an MVC framework.

Slide 41

Slide 41 text

Sails is an MVC framework.

Slide 42

Slide 42 text

Sails is an MVC framework.

Slide 43

Slide 43 text

Sails is an MVC framework.

Slide 44

Slide 44 text

Sails is an MVC framework.

Slide 45

Slide 45 text

Sails is an MVC framework.

Slide 46

Slide 46 text

Sails is an MVC framework.

Slide 47

Slide 47 text

Sails is an MVC framework.

Slide 48

Slide 48 text

Sails is an MVC framework.

Slide 49

Slide 49 text

More Conventions

Slide 50

Slide 50 text

Sails comes with an asset pipeline.

Slide 51

Slide 51 text

Sails comes with an asset pipeline. (defaults to grunt)

Slide 52

Slide 52 text

Sails comes with an asset pipeline. (but gulp is ok too)

Slide 53

Slide 53 text

More Conventions

Slide 54

Slide 54 text

Sails apps maintain Node.js best-practices.

Slide 55

Slide 55 text

More Conventions

Slide 56

Slide 56 text

Sails apps support existing Express code.

Slide 57

Slide 57 text

Databases

Slide 58

Slide 58 text

Sails ships with an ORM. (Object-Relational Mapping)

Slide 59

Slide 59 text

Sails ships with an ORM. (Object-Relational Mapping)

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

>=20 other community adapters custom app-specific adapters

Slide 63

Slide 63 text

Put your data in the container that makes the most sense for it. Users Products Orders Activity ExternalUsers Administrators

Slide 64

Slide 64 text

Put your data in the container that makes the most sense for it. Then join it together. Products Users Administrators Activity Orders ExternalUsers

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

Community

Slide 67

Slide 67 text

• Released v0.10 in late Summer 2014 • ~7,600 Github stars • ~750-1500 npm downloads / day • ~100 folks in #sailsjs on freenode on average • ~1,100 questions tagged on SO Community

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

Questions?

Slide 71

Slide 71 text

Thanks! @mikermcneil [email protected]