SlideShare a Scribd company logo
1 of 24
Download to read offline
Node: Getting Started
主要内容
• 基础概念
• 创建Node应用的基础设施
• Node 应用简单示例
• Express Web 框架
什么是Node?
Node 是建立在Chrome浏览器所使用的JavaScript运行环
境上,用来创建快速,可扩展的Web应用程序的平台。
Node的几个特点
• event-driven
• non-blocking I/O model
• single-threaded
• lightweight and efficient
最简单的服务器
app.js:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
在终端运行:
node app.js
> Server running at http://127.0.0.1:1337/
REPL
REPL(发音 “repple”): Read-Eval-Print-Loop,
a Nodejs shell.
创建Node应用的基础设施
• 核心模块
• 路由控制
• 数据持久化
• 中间件
• 其他模块
核心模块
• EventEmitter 模块
• HTTP(S) 模块
• File System 文件系统模块
• Utilities 实用对象模块:
util.inherits(constructor, super),
util.isArray(object), ...
• Socket, Stream 模块
• 全局(global) 对象:
process, Buffer, …
路由控制
路由处理来自一个URL的数据请求。
路由方法的主要作用是在URI中提取我们需要的信息,通
常使用一些模式匹配,使用这些信息来处理相应的动作,
并把信息传递给处理程序。
创建 RESTful Web API
REST (Representational State Transfer) 意味着支持 HTTP
PUT 和 DELETE 方法,同时还有 GET 和 POST方法的能力。
Express 路由使用 app.VERB() 方法来管理。VERB指HTTP
方法之一,例如 app.get(), app.put().
Http Verb Route Intro
GET /user/:id 用Id读取用户信息
POST /create 创建一个新用户
PUT /update/:id 修改用户信息
DELETE /delete/:id 删除一个用户
数据持久化
MongoDB,document-oriented storage.
MongoDB是面向文档的数据存储,是一种NoSQL数据库。
其结构类似于:db -> collection -> document
Redis,advanced key/value store.
Redis 提供了高性能的键/值对存储。
MongoDB
MongoDB使用BSON格式来存储数据。在Node中使用
MongoDB有两种基本方式,引入两个不同的模块
1. MongoDB Native Node.js Driver, 原生MongDB为Node开发的驱动模块。
2. Mongoose, 提供ORM(Object Relational Mapping)支持的对象建模工具。
相比而言,Mongoose提供了更加抽象的接口,使用
Schema 对象定义数据模型。
定义数据模型和实例
定义数据模型:
var HobbySchema = new Schema({
name: { type: String, required: true, trim:
true }
});
var UserSchema = new Schema({
id: { type: Number, required: true, trim: true,
unique: true },
name: { type: String, required: true, trim:
true },
birthday: Date,
hobbies: [HobbySchema]
});
var UserModel = model(‘UserModel’, UserSchema);
创建对象实例:
var lily = new UserModel({
id: lily,
name: Lily Allen,
birthday: new Date(2012, 11, 20),
hobbies: ['reading', 'music']
});
数据库连接与操作
连接到mongoose数据库
mongoose.connect(‘mongodb://127.0.0.1/mydb’);
或
mongoose.connect(‘'mongodb://username:passwor
d@host:port/database?’);
mongoose.connection.on(‘open’, function() {
console.log(‘Connected to Mongoose’);
});
数据库操作:
lily.save(function(err, data) { });
UserModel.find({id: 'lily'},
function(err, doc) { });
UserModel.update({id: 'lily'},
function(err, doc) { });
UserModel.remove({id: 'lily'},
function(err, doc) { });
Redis
Redis 是一种键/值对数据存储(key/value store).
通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可
以实现数据持久化:使用快照的方式,将内存中的数据不断写入磁盘;或使用类
似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一
定程度的数据丢失;后者相反。
创建一个Redis客户端:
var client = redis.createClient();
或者,带有三个可选的参数:
var client = redis.createClient(host, port, options);
中间件
中间件(Middleware, http://en.wikipedia.org/wiki/Middleware)
一般来讲,作为开发者,中间件是存在于你和底层系统之间的软件,系统可以指
操作系统或一些底层的技术。更具体地说,中间件是应用程序和底层系统之间的
通信链。
Connect (http://www.senchalabs.org/connect/)是为Node提供的一个可扩展的
HTTP服务框架,提供高性能的中间件。Connect中有10多个中间件,可以在应用
中使用其中的一个或多个。
例如,favicon, logger, static, bodyParser, methodOverride...
其他模块
socket.io (http://socket.io/)
Jade - template engine (http://jade-lang.com/)
underscore (https://npmjs.org/package/underscore)
辅助模块:url, path, querystring, ...
示例:创建一个文件服务器
所需模块:
• http, 创建服务器并监听请求
• path, 处理文件和路径
• fs, 提供文件系统读写等常用操作
http.createServer(function(req, res) {
// 当一个请求发生时,解析请求的URL确定文件的位置
// 检查并确认此文件的存在性
// 如果文件不存在作出相应的响应
// 如果文件存在,打开后读取数据
// 准备一个响应头
// 把文件写入响应体
… …
}.listen('8124')
Express Web 框架
Express 是一个简洁而灵活的Node应用框架, 提供了一系列
强大特性创建各种Web应用。
网站:http://expressjs.com/
项目:https://github.com/visionmedia/express
Express建立一个应用
用Express创建一个应用只需要一条简单的命令。程序会生成
一些基本目录和文件。
1. 创建一个应用(site):
> express site
目录结构(Express 3.1.0)
> express myapp
create : myapp
create : myapp/package.json
create : myapp/app.js
create : myapp/public
create : myapp/routes
create : myapp/routes/index.js
create : myapp/routes/user.js
create : myapp/views
create : myapp/views/layout.jade
create : myapp/views/index.jade
create : myapp/public/stylesheets
create : myapp/public/stylesheets/style.css
create : myapp/public/javascripts
create : myapp/public/images
2. 安装所需依赖
> npm install -d
3. 启动应用程序
> node app
package.json
example:
{
"name": "nodeapp"
, "description": "My first Node App."
, "version": "0.0.1“
, "author": "Madhusudhan Srinivasa <madhums8@gmail.com> (http://madhums.github.com)"
, "scripts": {
"start": "./node_modules/.bin/nodemon server.js"
}
, "dependencies": {
"express": "latest"
, "jade": "latest"
, "mongoose": "latest"
, "connect-mongo": "latest"
}
}
想了解更多package.json 和NPM的相关信息,请参考:
http://package.json.nodejitsu.com/
http://blog.nodejitsu.com/npm-cheatsheet
</thanks>

More Related Content

What's hot

Script with engine
Script with engineScript with engine
Script with engineWebrebuild
 
前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全Borg Han
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kaoxwcoder
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Justin Lin
 
Node js实践
Node js实践Node js实践
Node js实践jay li
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editortaobao.com
 
Varnish简介
Varnish简介Varnish简介
Varnish简介fangdeng
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editortaobao.com
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101Jollen Chen
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Vue for beginners
Vue for beginnersVue for beginners
Vue for beginnersm_catt
 
视图模式
视图模式视图模式
视图模式Li Zhang
 
Intro-to-SeaJS
Intro-to-SeaJSIntro-to-SeaJS
Intro-to-SeaJSlifesinger
 

What's hot (20)

Script with engine
Script with engineScript with engine
Script with engine
 
前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
 
nodejs开发web站点
nodejs开发web站点nodejs开发web站点
nodejs开发web站点
 
Node js实践
Node js实践Node js实践
Node js实践
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editor
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
 
编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editor
 
Berserk js
Berserk jsBerserk js
Berserk js
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101
 
How tovuejs
How tovuejsHow tovuejs
How tovuejs
 
AJAX Basic
AJAX BasicAJAX Basic
AJAX Basic
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Vue for beginners
Vue for beginnersVue for beginners
Vue for beginners
 
视图模式
视图模式视图模式
视图模式
 
MySQL aio
MySQL aioMySQL aio
MySQL aio
 
Intro-to-SeaJS
Intro-to-SeaJSIntro-to-SeaJS
Intro-to-SeaJS
 

Viewers also liked

Presentation of EOD - eBooks on demand service and network / Predstavitev sto...
Presentation of EOD - eBooks on demand service and network / Predstavitev sto...Presentation of EOD - eBooks on demand service and network / Predstavitev sto...
Presentation of EOD - eBooks on demand service and network / Predstavitev sto...National and University Library
 
Альбинизм
АльбинизмАльбинизм
АльбинизмVladimirOpa
 
101學年度人文暨設計學院應外系月報表 9月份
101學年度人文暨設計學院應外系月報表 9月份101學年度人文暨設計學院應外系月報表 9月份
101學年度人文暨設計學院應外系月報表 9月份景文科技大學 JUST
 
Гемофилия
ГемофилияГемофилия
ГемофилияVladimirOpa
 
Природный газ
Природный газПриродный газ
Природный газVladimirOpa
 
Химические свойства бензола
Химические свойства бензолаХимические свойства бензола
Химические свойства бензолаVladimirOpa
 
Нервная система
Нервная системаНервная система
Нервная системаVladimirOpa
 
Родительское собрание
Родительское собраниеРодительское собрание
Родительское собраниеVladimirOpa
 
Telematics Munich 2011
Telematics Munich 2011Telematics Munich 2011
Telematics Munich 2011RoryTelematics
 
Eigentrust (in Japanese)
Eigentrust (in Japanese)Eigentrust (in Japanese)
Eigentrust (in Japanese)snarazaki
 
101景文科大碩士班暨碩士在職專班招生簡章(公告)
101景文科大碩士班暨碩士在職專班招生簡章(公告)101景文科大碩士班暨碩士在職專班招生簡章(公告)
101景文科大碩士班暨碩士在職專班招生簡章(公告)景文科技大學 JUST
 
Media music magazine evaluation
Media music magazine evaluationMedia music magazine evaluation
Media music magazine evaluationMoulayMiziroj
 
Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012
Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012
Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012National and University Library
 

Viewers also liked (20)

Presentation of EOD - eBooks on demand service and network / Predstavitev sto...
Presentation of EOD - eBooks on demand service and network / Predstavitev sto...Presentation of EOD - eBooks on demand service and network / Predstavitev sto...
Presentation of EOD - eBooks on demand service and network / Predstavitev sto...
 
Альбинизм
АльбинизмАльбинизм
Альбинизм
 
101學年度人文暨設計學院應外系月報表 9月份
101學年度人文暨設計學院應外系月報表 9月份101學年度人文暨設計學院應外系月報表 9月份
101學年度人文暨設計學院應外系月報表 9月份
 
Гемофилия
ГемофилияГемофилия
Гемофилия
 
Природный газ
Природный газПриродный газ
Природный газ
 
Химические свойства бензола
Химические свойства бензолаХимические свойства бензола
Химические свойства бензола
 
Нервная система
Нервная системаНервная система
Нервная система
 
廢墟
廢墟廢墟
廢墟
 
Родительское собрание
Родительское собраниеРодительское собрание
Родительское собрание
 
Telematics Munich 2011
Telematics Munich 2011Telematics Munich 2011
Telematics Munich 2011
 
3 d動畫影片分析
3 d動畫影片分析3 d動畫影片分析
3 d動畫影片分析
 
Химия
ХимияХимия
Химия
 
Eigentrust (in Japanese)
Eigentrust (in Japanese)Eigentrust (in Japanese)
Eigentrust (in Japanese)
 
Кожа
КожаКожа
Кожа
 
Hhs april 2014
Hhs april 2014Hhs april 2014
Hhs april 2014
 
101景文科大碩士班暨碩士在職專班招生簡章(公告)
101景文科大碩士班暨碩士在職專班招生簡章(公告)101景文科大碩士班暨碩士在職專班招生簡章(公告)
101景文科大碩士班暨碩士在職專班招生簡章(公告)
 
Media music magazine evaluation
Media music magazine evaluationMedia music magazine evaluation
Media music magazine evaluation
 
Front cover
Front coverFront cover
Front cover
 
Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012
Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012
Kratka EOD predstavitev (poster) / Short EOD presentation (poster), 2012
 
Contents
ContentsContents
Contents
 

Similar to Node getting-started

NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Joseph Chiang
 
打開窗,讓大象跨進來 - Microsoft HDInsight
打開窗,讓大象跨進來 - Microsoft HDInsight打開窗,讓大象跨進來 - Microsoft HDInsight
打開窗,讓大象跨進來 - Microsoft HDInsightKuo-Chun Su
 
Browser vs. Node.js Jackson Tian Shanghai
Browser vs. Node.js   Jackson Tian ShanghaiBrowser vs. Node.js   Jackson Tian Shanghai
Browser vs. Node.js Jackson Tian ShanghaiJackson Tian
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile ServicesKuo-Chun Su
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践longhao
 
透過 Windows Azure Mobile Services 開發各平台 Apps
透過 Windows Azure Mobile Services 開發各平台 Apps透過 Windows Azure Mobile Services 開發各平台 Apps
透過 Windows Azure Mobile Services 開發各平台 AppsEric ShangKuan
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现hua qiu
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Servicesjavatwo2011
 
Html5开发android应用程序概述
Html5开发android应用程序概述Html5开发android应用程序概述
Html5开发android应用程序概述kevin_yanggl
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非Tony Deng
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践yiming he
 
JdonFramework中文
JdonFramework中文JdonFramework中文
JdonFramework中文banq jdon
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5 Tony Deng
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
OpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceOpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceHo Kim
 
Kindeditor设计思路v2
Kindeditor设计思路v2Kindeditor设计思路v2
Kindeditor设计思路v2luolonghao
 

Similar to Node getting-started (20)

NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
 
打開窗,讓大象跨進來 - Microsoft HDInsight
打開窗,讓大象跨進來 - Microsoft HDInsight打開窗,讓大象跨進來 - Microsoft HDInsight
打開窗,讓大象跨進來 - Microsoft HDInsight
 
Browser vs. Node.js Jackson Tian Shanghai
Browser vs. Node.js   Jackson Tian ShanghaiBrowser vs. Node.js   Jackson Tian Shanghai
Browser vs. Node.js Jackson Tian Shanghai
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践
 
透過 Windows Azure Mobile Services 開發各平台 Apps
透過 Windows Azure Mobile Services 開發各平台 Apps透過 Windows Azure Mobile Services 開發各平台 Apps
透過 Windows Azure Mobile Services 開發各平台 Apps
 
Node js实践
Node js实践Node js实践
Node js实践
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
 
Html5开发android应用程序概述
Html5开发android应用程序概述Html5开发android应用程序概述
Html5开发android应用程序概述
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
JdonFramework中文
JdonFramework中文JdonFramework中文
JdonFramework中文
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
非常靠谱 Html 5
非常靠谱 Html 5 非常靠谱 Html 5
非常靠谱 Html 5
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
OpenResty/Lua Practical Experience
OpenResty/Lua Practical ExperienceOpenResty/Lua Practical Experience
OpenResty/Lua Practical Experience
 
Kindeditor设计思路v2
Kindeditor设计思路v2Kindeditor设计思路v2
Kindeditor设计思路v2
 

Node getting-started