Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nodejs getting-started

Nodejs getting-started

lylijincheng

March 27, 2013
Tweet

More Decks by lylijincheng

Other Decks in Technology

Transcript

  1. 最简单的服务器 app.js: var http = require('http'); http.createServer(function (req, res) {

    res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).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/
  2. 核心模块 • EventEmitter 模块 • HTTP(S) 模块 • File System

    文件系统模块 • Utilities 实用对象模块: util.inherits(constructor, super), util.isArray(object), ... • Socket, Stream 模块 • 全局(global) 对象: process, Buffer, …
  3. 创建 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 删除一个用户
  4. MongoDB MongoDB使用BSON格式来存储数据。在Node中使用 MongoDB有两种基本方式,引入两个不同的模块 1. MongoDB Native Node.js Driver, 原生MongDB为Node开发的驱动模块。 2.

    Mongoose, 提供ORM(Object Relational Mapping)支持的对象建模工具。 相比而言,Mongoose提供了更加抽象的接口,使用 Schema 对象定义数据模型。
  5. 定义数据模型和实例 定义数据模型: 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'] });
  6. 数据库连接与操作 连接到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) { });
  7. 示例:创建一个文件服务器 所需模块: • http, 创建服务器并监听请求 • path, 处理文件和路径 • fs,

    提供文件系统读写等常用操作 http.createServer(function(req, res) { // 当一个请求发生时,解析请求的URL确定文件的位置 // 检查并确认此文件的存在性 // 如果文件不存在作出相应的响应 // 如果文件存在,打开后读取数据 // 准备一个响应头 // 把文件写入响应体 … … }.listen('8124')
  8. 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
  9. package.json example: { "name": "nodeapp" , "description": "My first Node

    App." , "version": "0.0.1“ , "author": "Madhusudhan Srinivasa <[email protected]> (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