node.js study

本文介绍Node.js的基础概念、优势及应用场景,并提供详细的安装步骤与配置方法。此外还讲解了核心全局变量、模块与包的使用,以及如何创建简单的Web服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一 什么是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: 2ms
console.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);
        }
    });
//同步读取readFileSync
var 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~65535
server.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值