Node js 学习总结 - litonghui/TechBlog GitHub Wiki
简单的说,node js 允许后端运行JavaScript 语言(JS最早是运行在浏览器中,在nodejs中它显然脱离了浏览器),相比于流行的服务器语言(PHP、JAVA、C#、Python),node js 选择使用JavaScript语言主要考虑它更加成熟、速度快、性能好、开发人数也很多。其特有闭包和第一类函数。
node.js 服务器开发原因
-
非阻塞模式的IO处理,在高并发情况下可以很好处理资源耗尽问题。
-
事件驱动、异步编程,为网络服务而设计。JavaScript 匿名函数和闭包特性适合异步编程。
-
轻量、简单开发配置。
-
闭包:函数可以继承并访问自身被声明的那个作用域的变量。
var clickCount = 0; document.getElementById('Button').onclick = function(){ clickCount +=1; //匿名函数 function 可以访问clickCount 变量 }; -
第一类函数:函数是第一类对象,可以将函数作为参数传递给其他函数
node.js 安装配置
- 下载,根据自己需求选择Window or Mac。
- 安装,Windows 下载node-v4.3.1-x64.msi ,点击安装,Run->next->Finish。
- Window 下普通安装不需要环境变量配置,因为node.exe文件安装到C:\Program Files (x86)\nodejs\目录下,并将该目录添加进PATH环境变量。
- 检测:node -v ,出现:v4.3.1 (版本号不固定)
node.js 重点概念解析
-
路由:HTTP 衍生的方法之一,添加在Express 实例中。对应的方法包括get、post、put、head 等
在根路由 (/) 上(应用程序的主页)对 POST 请求进行响应: app.post('/', function (req, res) { res.send('Got a POST request'); }); 对 /user 路由的 PUT 请求进行响应: app.put('/user', function (req, res) { res.send('Got a PUT request at /user'); }); -
Express 是基于Node js 流行的Web框架,迅速化搭建网站,特别是记住WebStorm 迅速开发。具体查看
-
Npm 安装本地且保存到package.json 文件中:npm install --save-dev serve-static
-
...
node.js 入门开发
-
文件读取, Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
//----文件读取封装类----- 新建js 文件命名localfile.js,添加如下代码: var rf = require('fs'); function getfile(_filename,callback){ rf.readFile('./data/'+_filename,'utf-8',function(err,data){ if(err){ callback(err);//callback 也是JavaScript 语言特别常用的回调方式。 }else{ callback(data); } }) } module.exports.getfile = getfile;//Node.js 通过module.exports向外部导出getfile 方法,提供外部调用。 //----文件读取使用类-----在index.js 添加调用: var reader = require('../models/localfile'); var router = express.Router(); router.use('/config.html?',function(req,res){ reader.getfile('config.html',function(result){ res.send(result); }); }); module.exports = router; //简单的例子,通过请求 XXXXXX/config.html? 接口返回 本地 config.html 的文件 -
网络请求,Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端。但是我推荐一个 request 库,当然需要你npm install request 并且保证package.json 中添加 "request": "^2.69.0"。
//request 回调函数返回三个参数,error 、response、body var request = require('request'); function getrequest(_url,callback){ request(_url, function (error, response, body) { if (!error && response.statusCode == 200) { callback(body); console.log(body) } }) } module.exports.getrequest = getrequest; -
数据库连接,以mongodb 数据库为连接对象,推荐使用 mongoose 库,npm install mongooose并且保证package.json 中添加 "mongooose":"^4.4.17"。代码查看,重点关注内容:
一,数据配置文件:config.js、mongoose.js, 1,首先创建一个文件命名为config.js ,添加代码: module.exports = { mongodb :"mongodb://localhost/mobile" //数据库连接url ,有必要可以添加用户名、密码的信息。 }; 2,同名目录下创建文件命名mongoose.js ,添加代码 var mongoose = require('mongoose'); var config = require('./config'); module.exports = function(){ var db = mongoose.connect(config.mongodb);//数据库连接 require('../models/mongodb/config.server.models.js');//mongodb 是按文件存储,存储需要一定的模型,字段名称和类型,在此处加载 return db; } 二,封装文件:config.server.models.js、dbhelper.js 1,创建mongodb 存储模型将数据集合映射到数据库中,例如配置模型config,包含字段:title、type、time 。 var mongoose = require('mongoose'); var configSchema = new mongoose.Schema({ title:String, type:String, time:Date }); mongoose.model('Config', configSchema); 2,创建外部封装模块: var mongoose = require('mongoose'); var Config = mongoose.model('Config'); function setConfig(req,callback){ var config = new Config({ title:'splash', type:'normal', }); config.save(function(err){ if (err) { callback('保存失败'); return; } callback('保存成功'); return; }) } module.exports.setConfig = setConfig; 三,app.js 全局申明: var mongoose = require('./config/mongoose');//指向上文创建的mongoose 文件 var db = mongoose();