Keystone JS

DEV I/O FOR

Comunidade de desenvolvedores de Fortaleza

NUG-CE

Grupo de usuários Node.js do Ceará

4k+ stars

700+ fork

Cícero Viana

Desenvolvedor web entusiasta MEAN e Ionic Framework

@cicerohen

Framework open source para desenvolvimento de sites, aplicações e APIs em Node.js usando Express e MongoDB

2º segundo

Projeto CMS Node.js em número de forks, stars e commits

4k+ stars

700+ fork

Stack

Estrutura

Model

View

Controller

Scaffold

Estrutura padrão de um projeto Keystone JS

project/
    models/
        Post.js  /* Model */
        User.js  /* Model */
    public/
        fonts/     
        images/
        js/
        styles/
    routes/
        views/
            index.js /* Controller */
            post.js  /* Controller */
    templates/
        views/
            index.jade /* View */
            post.jade  /* View */
              
    .env /* Enviromment variables  */
    keystone.js  /* Starts application  */
    package.json

Framework server side para aplicações Node.js  

Object Data Mapping(ODM) para MongoDB

NoSQL Database

Cria/recebe e interopera com uma instância

Models

Modele de forma simples e rápida.

var keystone = require('keystone');
var Types = keystone.Field.Types;

var User = new keystone.List('User');  /* Criando o model */

/*Adicionando fields ao model */
User.add({
	name: { 
            type: Types.Name, 
            required: true, 
            index: true 
        },
	email: { 
            type: Types.Email,
            initial: true,
            required: true,
            index: true
        },
	password: {
            type: Types.Password,
            initial: true,
            required: true 
        }
}, 

'Permissions', { /* Permissões do Usuário */
        isAdmin: { type: Boolean, label: 'Can access Keystone', index: true }
});

/*Registrando o model na aplicação */
User.register();

Views

HTML puro ou template engines

Por default, Kesytone usa Jade como template engine

doctype html
html
  head    
    meta(charset="utf-8")
      meta(name="viewport", content="width=device-width, initial-scale=1.0")
      meta(http-equiv="X-UA-Compatible" content="IE=edge")

      title= title || 'KeystoneJS'
      link(rel="shortcut icon", href="/favicon.ico", type="image/x-icon")

      link(href="/styles/site.css", rel="stylesheet")

Mas você pode usar outros

Nunjucks

Template engine by Mozilla

Swig

Template engine

Handlebars

Template engine

Controllers / Routes

Com toda a simplicidade do Express e Node.js

kesytone.set('routes', require('./routes'));

var importRoutes = keystone.importer(__dirname);

var controllers = importRoutes('./controllers');


app.get('/', controllers.index);
app.get('/blog/:category?', controllers.blog);
app.get('/blog/post/:post', controllers.post);
app.get('/gallery', controllers.gallery);
app.all('/contact', controllers.contact);

Use em conjunto com outros frameworks MEAN

Aplicação MEAN

Keystone

models/

routes/

Admin UI

Features

Admin UI

Keystone oferece uma interface amigável e simples para o gerenciamento de conteúdo da sua aplicação

Image Uploading

Cloud image service, upload, storage & CDN

Email Sending

Get Started

Pré-requisitos

npm install -g yo

npm install -g generator-keystone
mkdir project && cd $_

yo keystone

node keystone.js

KeystoneJS Started: KeystoneJS is ready on port 3000

 

http://localhost:3000

Made with Slides.com