Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Javascript: Primeiros Passos
Search
Dmitry Rocha
July 18, 2015
Technology
0
79
Javascript: Primeiros Passos
Meus primeiros passos em Javascript no backend.
Dmitry Rocha
July 18, 2015
Tweet
Share
More Decks by Dmitry Rocha
See All by Dmitry Rocha
Crystal Lang - Introduction
dmitryrck
0
130
Docker (for developers)
dmitryrck
0
190
Introdução a testes automatizados
dmitryrck
0
49
Introdução a Linguagem Crystal
dmitryrck
0
280
Docker
dmitryrck
0
69
Scoola Talk
dmitryrck
0
60
Testes, testes everywhere
dmitryrck
0
51
Saltos no Vim - GURUPI
dmitryrck
0
49
Other Decks in Technology
See All in Technology
学習データって増やせばいいんですか?
ftakahashi
2
430
Kubernetes Multi-tenancy: Principles and Practices for Large Scale Internal Platforms
hhiroshell
0
120
Microsoft Agent 365 についてゆっくりじっくり理解する!
skmkzyk
0
360
生成AIを利用するだけでなく、投資できる組織へ / Becoming an Organization That Invests in GenAI
kaminashi
0
100
プロンプトやエージェントを自動的に作る方法
shibuiwilliam
12
9.9k
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
220
AIの長期記憶と短期記憶の違いについてAgentCoreを例に深掘ってみた
yakumo
4
380
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
210
AWSセキュリティアップデートとAWSを育てる話
cmusudakeisuke
0
290
CARTAのAI CoE が挑む「事業を進化させる AI エンジニアリング」 / carta ai coe evolution business ai engineering
carta_engineering
0
1.9k
Power of Kiro : あなたの㌔はパワステ搭載ですか?
r3_yamauchi
PRO
0
160
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
8
4.8k
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
4.9k
It's Worth the Effort
3n
187
29k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
We Have a Design System, Now What?
morganepeng
54
7.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Six Lessons from altMBA
skipperchong
29
4.1k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Writing Fast Ruby
sferik
630
62k
Building an army of robots
kneath
306
46k
Building Applications with DynamoDB
mza
96
6.8k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
Javascript: Primeiros Passos Dmitry Rocha GURUPI, PUG-PI, THC, … July
18, 2015 1 / 25
Mas primeiro: Javascript no backend E Primeiros passos 2 /
25
Meu projeto, minhas regras 1. Liberdade de escolha da tecnologia;
2. Esta parte do projeto: banco de dados somente leitura; 3. Servidor e banco de dados legado; 3 / 25
Eu não decidi fazer em javascript. 4 / 25
Eu fui… …marotamente tentando acessar o banco de dados via
js… 5 / 25
Eu fui… …marotamente tentando acessar o banco de dados via
js… …”vou renderizar uma notíciazinha aqui”… 6 / 25
Eu fui… …marotamente tentando acessar o banco de dados via
js… …”vou renderizar uma notíciazinha aqui”… …PUTZ: FIZ A PORRA TODA EM JS. 7 / 25
Javascript Básico + Testes 8 / 25
Javascript Básico + Testes $ npm init 9 / 25
Javascript Básico + Testes $ npm init $ npm install
mocha --save-dev 10 / 25
Javascript Básico + Testes $ npm init $ npm install
mocha --save-dev $ npm install expect.js --save-dev 11 / 25
Live coding ;) 12 / 25
Banco de Dados sequelizejs.com 13 / 25
Banco de Dados $ npm install sequelize 14 / 25
Live coding? Not today 1 var DataTypes = require('sequelize'); 2
var sequelize = new DataTypes('database', 'username', 3 'password', { 4 logging: false, port: 'port', host: 'host' 5 }); 6 var db = {}; 7 8 db.DataTypes = DataTypes; 9 db.sequelize = sequelize; 10 11 var news = sequelize['import'](__dirname + '/news'); 12 var section = sequelize['import'](__dirname + '/section'); 13 db.news = news; 14 db.section = section; 15 db.news.belongsTo(db.section, { foreignKey: 'secao_id' }); 16 17 module.exports = db; 15 / 25
Banco de Dados: ”model” 1 module.exports = function(sequelize, DataTypes) {
2 return sequelize.define('news', { 3 title: DataTypes.STRING, 4 content: DataTypes.TEXT, 5 status: DataTypes.INTEGER, 6 date: DataTypes.DATE, 7 'secao_id': DataTypes.STRING 8 }, { 9 tableName: 'noticias', 10 underscored: true, 11 timestamps: false, 12 scopes: { 13 'feed': { 14 where: { status: 1 }, 15 order: [ ['id', 'desc'] ], 16 limit: 20 17 }, 18 } 19 }); 20 }; 16 / 25
Banco de Dados: teste 1 process.env.NODE_ENV = 'test'; 2 var
expect = require('expect.js'); 3 describe('News', function(){ 4 before(function() { 5 this.db = require('../../models'); 6 7 this.news = { 8 title: 'Letters from Germany', slug: 'letters-from-germany', data: new Date() 9 }; 10 }); 11 12 beforeEach(function() { return this.db.news.destroy({ truncate: true }); }); 13 14 describe('create', function() { 15 it('should be persisted', function(done) { 16 return this.db.news.create(this.news).then(function(news) { 17 expect(news.isNewRecord).to.equal(false); 18 19 return done(); 20 }); 21 }); 22 23 it('has title', function(done) { 24 return this.db.news.create(this.news).then(function(news) { 25 expect(news.titulo).to.equal('Letters from Germany'); 26 27 return done(); 28 }); 29 }); 30 // … 31 }); 32 }); 17 / 25
Servidor Web expressjs.com 18 / 25
Servidor Web $ npm install express 19 / 25
Servidor Web: exemplo básico 1 var express = require('express'); 2
var app = express(); 3 4 app.get('/', function (req, res) { 5 res.send('Hello World!'); 6 }); 7 8 var server = app.listen(3000, function () { 9 var host = server.address().address; 10 var port = server.address().port; 11 12 console.log('Example app listening at http://%s:%s', host, port); 13 }); 20 / 25
Servidor Web: Gerador $ npm install express-generator -g 21 /
25
Servidor Web: Gerador $ npm install express-generator -g $ express
myapp --ejs 22 / 25
Servidor Web: Gerador $ npm install express-generator -g $ express
myapp --ejs Live showing, exemplo do gerador. 23 / 25
Mais informações no meu blog. Fiz duas postagens sobre uso
do sequelize com jasmine 1 e sequelize com mocha 2. 1Jasmine e Sequelize: Uma introdução - http://dmitryrck.github.io/jasmine-sequelize/ 2Mocha, expect.js e Sequelize: Uma introdução - http://dmitryrck.github.io/mocha-sequelize/ 24 / 25
25 / 25