SlideShare a Scribd company logo
2017.01.26 EXPRESSJS &TESTING
Ivan Wei
⾃自由職業者 -
 在哪都在⼯工作
歐酷網路路 -

 後端架構⼯工程師
時間軸科技 -
 網站⼯工程師
Class 20170126
cmder ( Open source )
BASH ON UBUNTU ON WINDOWS
BASH ON UBUNTU ON
WINDOWS
• Windows 10 ( 64-bit )
• OS build 14393 or later
• 安裝⼿手冊 (符合條件就安裝吧)
NODE FRAMEWORKS
• Express
• koa.js
• hapi
• ThinkJS
• Nodal
• Feathers
• ItemsAPI
• KeystoneJS
• Kraken
• LEAN-STACK
• LoopBack
• MEAN
• Sails
• …
為什什麼⼤大家都⽤用 EXPRESS
基本款該有都有,不該有都沒有
更更多的 NODE FRAMEWORKS
http://nodeframework.com/
HI, EXPRESS
⽅方法⼀一
1. npm install express-generator -g
2. express --view=jade [myapp]
3. cd myapp
4. npm start
⽅方法⼆二
⾃自⼰己來來
動⼿手玩 EXPRESS
git init
• 初始化 Git 資料 ( 會增加 .git 資料夾 )
• git branch 、 git diff [file1 file2] 、 git add files 、
git commit ‘new branch name’ 、 git push
npm init ( 內容⾃自⼰己打 )
• 初始化 package.json
• 預設 npm start、 npm test ( npm run [script] )
建立 app.js
const express = require('express');
const app = express();
const http = require('http');
const port = 3000;
http.createServer(app)
.listen(port, function() {
console.log('App listening on port ' + port + '!'); // Server 啟動後吐回⽬目前的 PORT 碼
});
我們有⼀一個 Node Server
node app.js
可是…
我要這做什什麼?
Controllers / Routers
• 建立⼀一個 controllers / routers 資料夾
• 之後什什麼 Router 都放進去
建立 index.js
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.end(‘It works’);
});
module.exports = router;
更更新 app.js
const express = require('express');
const app = express();
const http = require('http');
const port = 3000;
const index = require(‘./controllers/index');
app.use('/', index);
http.createServer(app)
.listen(port, function() {
console.log('App listening on port ' + port + '!'); // Server 啟動後吐回⽬目前的 PORT 碼
});
看⾒見見希望了了
Views
• 建立⼀一個 views 資料夾
• 之後什什麼 HTML / Jade (Pug) / EJS 都放進去
建立 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Jade</title>
</head>
<body>
<h1>Jade - node template engine</h1>
<div id="container" class="col">
<p>You are amazing</p>
<p>Jade is a terse and simple
templating language with a
strong focus on performance
and powerful features.</p>
</div>
</body>
</html>
更更新 controllers/index.js
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
const options = {
root: './views/'
}
res.sendFile('index.html', options);
});
module.exports = router;
神啊!能讓 HTML
不這麼變扭嗎
有的!Jade (Pug) / EJS / …
接下來來以 Jade (Pug) 為例例
建立 views/index.jade
doctype html
html(lang='en')
head
title Jade
body
h1 Jade - node template engine (#{title})
#container.col
pYou are amazing
p
| Jade is a terse and simple
| templating language with a
| strong focus on performance
| and powerful features.
更更新 app.js
const express = require('express');
const app = express();
const http = require('http');
const port = 3000;
const index = require(‘./controllers/index');
app.use('/', index);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
http.createServer(app)
.listen(port, function() {
console.log('App listening on port ' + port + '!'); // Server 啟動後吐回⽬目前的 PORT 碼
});
更更新 controllers/index.js
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
module.exports = router;
Class 20170126
中間換
場時間
寫個 API 測試很簡單
⾸首先要安裝…
npm install should supertest --save-dev
npm install mocha -g
名稱 ⽤用途 設定檔
Mocha.js 測試發動機 mocha.opts
Should.js 稽核⼈人員
supertest 模擬 http request
建立 test/mocha.opts
--timeout 500000
--require should
--reporter spec
--ui bdd
--recursive ./app.js
然後…
直接看 CODE 吧!
(這裡)
Q&A
最後記得交作業
作業
• https://github.com/IvanWei/Homework-20170126
• 交作業期限:2017/02/02
謝謝⼤大家

More Related Content

PPT
编辑器设计U editor
PDF
编辑器设计Kissy editor
PDF
Berserk js
PPT
Node.js在淘宝的应用实践
PPTX
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
PPTX
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
PPTX
使用 Visual Studio Code 建構 JavaScript 應用程式
PDF
CP 值很高的 Gulp
编辑器设计U editor
编辑器设计Kissy editor
Berserk js
Node.js在淘宝的应用实践
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
使用 Visual Studio Code 建構 JavaScript 應用程式
CP 值很高的 Gulp

What's hot (20)

PDF
百度前端性能监控与优化实践
PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
PDF
Kind editor设计思路
PPTX
快快樂樂學 Angular 2 開發框架
PPTX
Angular 4 新手入門攻略完全制霸
PDF
webpack 入門
PDF
Node.js從無到有 基本課程
PPTX
第三方内容开发最佳实践
PDF
Gulp.js 自動化前端任務流程
PDF
前端MVVM框架安全
PPTX
广告投放代码和创意代码持续优化
PDF
Koa 正在等一個人
PPTX
Angular 7 全新功能探索 (Angular Taiwan 2018)
PPTX
ASP.NET Core 6.0 全新功能探索
PDF
現代 IT 人一定要知道的 Ansible 自動化組態技巧
PDF
Npm 套件管理 & 常用開發工具介紹
PPTX
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
PPTX
SQL Server 資料庫版本控管
PPTX
淘宝开放产品前端实践
PDF
Visual Studio Code 快速上手指南
百度前端性能监控与优化实践
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Kind editor设计思路
快快樂樂學 Angular 2 開發框架
Angular 4 新手入門攻略完全制霸
webpack 入門
Node.js從無到有 基本課程
第三方内容开发最佳实践
Gulp.js 自動化前端任務流程
前端MVVM框架安全
广告投放代码和创意代码持续优化
Koa 正在等一個人
Angular 7 全新功能探索 (Angular Taiwan 2018)
ASP.NET Core 6.0 全新功能探索
現代 IT 人一定要知道的 Ansible 自動化組態技巧
Npm 套件管理 & 常用開發工具介紹
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
SQL Server 資料庫版本控管
淘宝开放产品前端实践
Visual Studio Code 快速上手指南
Ad

Similar to Class 20170126 (20)

PDF
NodeJS基礎教學&簡介
PDF
Node.js 入門 - 前端工程開發實務訓練
PPTX
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
PPTX
浅析浏览器解析和渲染
PDF
打開窗,讓大象跨進來 - Microsoft HDInsight
PDF
Build desktop app_by_xulrunner
PPT
Html5和css3入门
PPT
NodeJS快速服务端开发 朝沐金风 Shanghai
PDF
Node js实践
PPT
Node分享 展烨
PDF
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
PPTX
Full stack-development with node js
PDF
Node.js 進攻桌面開發
PPT
HTML5概览
PDF
Gops2016 云端基于Docker的微服务与持续交付实践
PDF
D2_node在淘宝的应用实践_pdf版
PDF
Open Street Map安裝指引 (Ubuntu 12.04)
PDF
docker intro
PDF
July.2011.w3ctech
PDF
Hadoop开发者入门专刊
NodeJS基礎教學&簡介
Node.js 入門 - 前端工程開發實務訓練
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
浅析浏览器解析和渲染
打開窗,讓大象跨進來 - Microsoft HDInsight
Build desktop app_by_xulrunner
Html5和css3入门
NodeJS快速服务端开发 朝沐金风 Shanghai
Node js实践
Node分享 展烨
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
Full stack-development with node js
Node.js 進攻桌面開發
HTML5概览
Gops2016 云端基于Docker的微服务与持续交付实践
D2_node在淘宝的应用实践_pdf版
Open Street Map安裝指引 (Ubuntu 12.04)
docker intro
July.2011.w3ctech
Hadoop开发者入门专刊
Ad

Recently uploaded (20)

PPTX
3分钟读懂佩珀代因大学毕业证Pepperdine毕业证学历认证
PPTX
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
PPTX
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
PPTX
3分钟读懂曼彻斯特城市大学毕业证MMU毕业证学历认证
PPTX
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
PPTX
《HSK标准教程4下》第15课课件new.pptx HSK chapter 15 pptx
PPTX
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
PPTX
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
PPTX
3分钟读懂利物浦约翰摩尔大学毕业证LJMU毕业证学历认证
PPTX
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
PPTX
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
PDF
黑客出手,分数我有!安全可靠的技术支持,让你的GPA瞬间提升,留学之路更加顺畅!【微信:viphuzhao】
PPTX
A Digital Transformation Methodology.pptx
PPTX
3分钟读懂渥太华大学毕业证UO毕业证学历认证
PPTX
3分钟读懂皇家艺术学院毕业证RCA毕业证学历认证
PPTX
3分钟读懂诺里奇艺术大学毕业证NUA毕业证学历认证
PDF
01_Course_Introduction(20210916課後更新).pdf
PDF
想要安全提高成绩?我们的黑客技术采用深度伪装和多层加密手段,确保你的信息安全无忧。价格公道,流程简单,同时提供全面的信息保护和事后痕迹清理,让你轻松提升G...
PPTX
3分钟读懂伦敦南岸大学毕业证LSBU毕业证学历认证
PPTX
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
3分钟读懂佩珀代因大学毕业证Pepperdine毕业证学历认证
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
3分钟读懂曼彻斯特城市大学毕业证MMU毕业证学历认证
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
《HSK标准教程4下》第15课课件new.pptx HSK chapter 15 pptx
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
3分钟读懂利物浦约翰摩尔大学毕业证LJMU毕业证学历认证
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
黑客出手,分数我有!安全可靠的技术支持,让你的GPA瞬间提升,留学之路更加顺畅!【微信:viphuzhao】
A Digital Transformation Methodology.pptx
3分钟读懂渥太华大学毕业证UO毕业证学历认证
3分钟读懂皇家艺术学院毕业证RCA毕业证学历认证
3分钟读懂诺里奇艺术大学毕业证NUA毕业证学历认证
01_Course_Introduction(20210916課後更新).pdf
想要安全提高成绩?我们的黑客技术采用深度伪装和多层加密手段,确保你的信息安全无忧。价格公道,流程简单,同时提供全面的信息保护和事后痕迹清理,让你轻松提升G...
3分钟读懂伦敦南岸大学毕业证LSBU毕业证学历认证
3分钟读懂贵湖大学毕业证U of G毕业证学历认证

Class 20170126