Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
74
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
120
Docker (for developers)
dmitryrck
0
170
Introdução a testes automatizados
dmitryrck
0
46
Introdução a Linguagem Crystal
dmitryrck
0
250
Docker
dmitryrck
0
66
Scoola Talk
dmitryrck
0
54
Testes, testes everywhere
dmitryrck
0
46
Saltos no Vim - GURUPI
dmitryrck
0
45
Other Decks in Technology
See All in Technology
比起獨自升級 我更喜歡 DevOps 文化 <3
line_developers_tw
PRO
0
160
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
2
330
技術職じゃない私がVibe Codingで感じた、AGIが身近になる未来
blueb
0
120
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜 #fp_matsuri / FP Matsuri 2025
ytaka23
9
2.4k
Long journey of Continuous Delivery at Mercari
hisaharu
1
210
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
550
New Cache Hierarchy for Container Images and OCI Artifacts in Kubernetes Clusters using Containerd / KubeCon + CloudNativeCon Japan
pfn
PRO
0
150
"SaaS is Dead" は本当か!? 生成AI時代の医療 Vertical SaaS のリアル
kakehashi
PRO
3
190
Eight Engineering Unit 紹介資料
sansan33
PRO
0
3.4k
Data Hubグループ 紹介資料
sansan33
PRO
0
1.8k
讓測試不再 BB! 從 BDD 到 CI/CD, 不靠人力也能 MVP
line_developers_tw
PRO
0
160
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
7.3k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
A better future with KSS
kneath
239
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Automating Front-end Workflow
addyosmani
1370
200k
Reflections from 52 weeks, 52 projects
jeffersonlam
350
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Thoughts on Productivity
jonyablonski
69
4.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.7k
Intergalactic Javascript Robots from Outer Space
tanoku
271
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