NodeJs初探

nodejs

node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效

安装

mac node使用

#安装
brew install node
#升级node
brew upgrade node

linux node

#ubuntu安装6.x
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
#升级node
npm install -g n
n stable
#升级npm
npm install npm -g

nodejs常用命令

#查看版本
node -v

用例

创建最简单的webserver

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

断言(assert)

当需要在一个值为FALSE时中断当前操作的话,可以使用断言

const assert  = require ("assert")
assert(true)//成功
assert(1)//成功
assert(false,"it's false")//触发断言

//deepEqual用于比较对象的属性是否相等,但会忽略原型链上的属性,原始值使用==
const obj1 = {
a : {
b : 1
}
};
const obj2 = {
a : {
b : 2
}
};
const obj3 = {
a : {
b : 1
}
}
const obj4 = Object.create(obj1);

assert.deepEqual(obj1, obj1);
//同一对象成功
assert.deepEqual(obj1, obj2);
//失败,对象值不相等
assert.deepEqual(obj1, obj3);
//成功,值相等
assert.deepEqual(obj1, obj4);
//失败,忽略原型链上的值

node base64

console.log(new Buffer("Hello World").toString('base64'));
<!--SGVsbG8gV29ybGQ=-->
console.log(new Buffer("SGVsbG8gV29ybGQ=", 'base64').toString('ascii'))
<!--Hello World-->

npm

NPM的全称是Node Package Manager,如ruby的gem,Python的PyPL、setuptools,PHP的pear,NPM就是Nodejs的包管理器

npm常用命令

#版本
npm -v
#升级模块
npm update modulename
sudo npm install npm -g

npm 使用新资源库

#以资源库安装
npm --registry "http://npm.hacknodejs.com/" install underscore
#默认资源库为淘宝
npm config set registry "http://npm.taobao.org/"

Node-sass 安装失败解决方案

#mac
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass --save-dev

/usr/bin/env: ‘node’: No such file or directory

ln -s /usr/bin/nodejs /usr/bin/node

node调试

sudo npm install supervisor -g   #安装
supervisor index.js

node后台运行

nohup node app.js > /foo/log.txt 2>&1 &
#或者
sudo npm install forever -g #安装
forever list
forever start app.js
forever stop app.js
forever start -l forever.log -o out.log -e err.log app.js #输出日志和错误