Node, Express and libsass: project from scratch workshop

Crate a new Express app

At this point, you should be able to go forth and create an app. In this example, we will create a Node.js app with Express framework.

$ express <your-new-app>

Running this command (using demo-app as the example), you should see the following:

 create : demo-app
 create : demo-app/package.json
 create : demo-app/app.js
 create : demo-app/public
 create : demo-app/public/javascripts
 create : demo-app/public/images
 create : demo-app/public/stylesheets
 create : demo-app/public/stylesheets/style.css
 create : demo-app/routes
 create : demo-app/routes/index.js
 create : demo-app/routes/users.js
 create : demo-app/views
 create : demo-app/views/index.jade
 create : demo-app/views/layout.jade
 create : demo-app/views/error.jade
 create : demo-app/bin
 create : demo-app/bin/www

 install dependencies:
   $ cd demo-app && npm install

 run the app:
   $ DEBUG=my-application ./bin/www

BOOM! Express takes care of most of the labor. Now, we do what the computer says, change directory into the app dir and run npm install.

What's in the app?

At this point, you should be able to do a ls and see the new structure that was created for you.

app.js    node_modules/ public/   views/
bin/    package.json  routes/

app.js

This is the logical starting point for your app. Some of the things in there, lets talk about:

The following lines, for this type of app, we don't need them:

var user = require('./routes/user');

app.get('/users', user.list);

Sets the path to the dir where the view files are located:

app.set('views', path.join(__dirname, 'views'));

Sets the path to the dir with static assets:

app.use(express.static(path.join(__dirname, 'public')));

Sets the root route for the app:

app.use('/', routes);

node_modules/

This is the dir where all your npm packages will reside.

public/

Directory for all static assets like images, JavaScript, CSS, fonts, etc ...

views/

Where all your layout and view Jade files will live.

bin/

There is a single file here, www and this is what activate the Node server.

package.json

Project description, scripts manager and the app manifest. Notice the following object:

"scripts": {
  "start": "node ./bin/www"
},

This is the code that allows you to run npm start for the app.

routes/

This is the directory where you will build out the RESTful routes for your app. With a base install there should be two files in there, index.js and users.js.