node.js study

来源:互联网 发布:手机拍摄淘宝视频 编辑:程序博客网 时间:2024/06/05 04:54

目录

    • 目录
    • 一 什么是nodejs
    • 二 nodejs的用处为何选择nodejs
    • 三 nodejs安装
      • 1官网下载安装包
      • 2配置
        • 配置用户名称和e-mail地址
        • 配置编辑器
        • 检查配置
        • 获取帮助
    • 四 nodejs的学习
      • 一常用的全局变量global
        • 1console
        • 2process
      • 二模块和包
      • 三创建一个web服务器

一 什么是nodejs

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。

二 node.js的用处(为何选择node.js)

NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的 DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

三 nodejs安装

1、官网下载安装包

https://nodejs.org/en/download/
◆ 一顺安装完成后,在cmd控制台输入:node -v,控制台将打印出:v4.2.1,出现版本提示表示安装成功。
node版本验证
◆ 新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以使用cmd命令行输入”npm -v”来测试是否成功安装。
npm版本验证

2、配置

♠ 配置用户名称和e-mail地址

当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中

$ git config --global user.name "eatgirl_hui"  $ git config --global user.email "xxxxxx" 

♠ 配置编辑器

本人使用webstorm编辑器
选择文件–>设置–>语言和框架–>Node.js and NPM;
Node interpreter会自动识别,点击Configure选项,下载node.js的source code包;
下载完成点击configure即可。

♠ 检查配置

$ git config --list 

♠ 获取帮助

    $ git help <verb>      $ git <verb> --help      $ man git-<verb>  

四 node.js的学习

(一)常用的全局变量global

node.js常用内置对象和方法

1、console

//(1)输出里面的信息,warn和error的颜色同log、info不同console.log("this is a log");console.info("this is an info");//信息console.error("this is an error");//错误console.warn("this is a warn");//警告
//2)测时间 console.time/console.timeEnd,输出test: 2msconsole.time("test");for(var i=0;i<1000000;i++){}console.timeEnd("test");//注:需要和time里的参数字符串保持一致

2、process

//process设置编码(注意:只设置如此就ok,不可设置gbk等)process.stdin.setEncoding("utf-8");

process.stdin.on
两种控制台输入,输出文字信息方法:”data”和”readable”

//1、输入文字,然后输出(手动输入,然后会输出)process.stdin.on("data",function(data){    console.log(data);});//2、输入文字,然后输出process.stdin.on("readable",function(){   var aa=process.stdin.read();   console.log(aa);});

退出触发事件:”exit”

//退出触发事件process.on("exit", function () {   console.log("this will exit");});

改变退出的默认行为

process.on("SIGINT",function(){    console.log("process has a sigint")});

process.cwd()

//受webstrom的限制结果相同//console.log("dirname:"+__dirname);//console.log(process.cwd());//执行node命令的目录

process.argv
获取附加信息

//process.argv可获取附加信息console.log(process.argv);// 输出结果如下//[ 'E:\\soft\\nodejs\\node.exe',//    'c:\\Users\\hui\\WebstormProjects\\myproject\\globle.js' ]

(二)模块和包

通过require引入模块

var sum = require("./sum");console.log(sum.sum(100));

通过exports输出

//求和函数function sum(n){    var sum = 0;    for(var i=1;i<=n;i++){        sum += i;    }    return sum;}exports.sum = sum;

文件相关操作的相关内容fs和path

fs
规则:模块的名字和包的名字保持一致
同步代码会阻塞下面代码的执行
异步读取不会阻塞下面代码的执行

var fs = require("fs");//异步读取方法readFile    fs.readFile('sum.js','utf-8', function (err,data) {        if(err){            console.log(err);        }else{            console.log(data);        }    });
//同步读取readFileSyncvar data = fs.readFileSync('sum.js', 'utf-8');console.log(data);

path

var path=require('path');console.log(path.sep);//不同平台的分隔斜杠符不同console.log(path.extname('a.jpg'));//获取最后的扩展名,输出为.jpg

(三)创建一个web服务器

在浏览器中请求响应机制如下:
响应机制
Node Http Server:

require(‘http’)
var server = http.createServer(cb);
端口:在服务器硬件上或操作系统中运行的程序
url:http(url请求的协议)://www.baidu.com(百度网站的域名)(:80(省略的端口号)*/s?…….*(提交的参数get请求的参数会在url中)

var http = require('http'),    fs = require('fs'),//加载文件    server = http.createServer(function(request,response){       fs.readFile('index.html','utf-8',function(err,data){           response.end(data);//响应结束       });    });//启动server需要监听端口//http默认是80端口//端口号是从1~65535server.listen(8080);

以下程序说明:
一个程序只能被一个端口号监听
一个端口号只能被一个程序监听

var http = require('http');    http.createServer(function(request,response){    }).listen(8080);//输出报错信息//events.js:141//throw er; // Unhandled 'error' event//^////Error: listen EADDRINUSE :::8080

另外也可以这样写

var http = require('http'),    fs = require('fs'),    url = require('url');http.createServer(function(request,response){   var urlobj =  url.parse(request.url);    console.log(urlobj);    var pathname = urlobj.pathname;    var query = urlobj.query;    if(pathname==='/'){        readFileAndResponse('/index.html',response);    }else if(pathname==='/ajax'){        response.end('this is a ajax response');    }else{        readFileAndResponse(pathname,response);    }}).listen(8080);function readFileAndResponse(pathname,response){    fs.readFile(pathname,'utf-8', function (err,data) {        if(err){            response.writeHead(404);            response.end('file not found');        }else{            response.end(data);        }    });}

本章所讲的示例demo下载:demo

0 0
原创粉丝点击