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

KeystoneJS
By Cicero Viana (cicerohen)
KeystoneJS
KeystoneJS, uma Alternativa Simples e Prática
- 867