node.js

 

 

node.js基于谷歌的v8引擎,将谷歌的v8引擎单独拿出来 运行在服务器端html

 

 

 全局对象

Node.js   ---->     global

在一个文件中,声明的变量和函数都属于局部变量或局部函数,在交互模式下属于全局变量或全局函数;node

例1:npm

var a=1;
console.log(global.a);

例2:json

function fn(){
    console.log(123);
}
var res=global.fn();
console.log(res);

 JS:window

在浏览器下,文件中声明的变量或建立的函数都属因而全局做用域下的,能够使用全局对象访问;浏览器

xxx.html服务器

<script src="xxx.js"></script>

xxx.js网络

var a=1;
function fn(){
    console.log(123);
}
console.log(a);
fn()
console.log(window.a);
window.fn();

 console对象

global.console.log(123);      // 打印消息
// 返回值:123
global.console.info(123);     // 打印消息
global.console.warn(123);     // 打印警告消息,感叹号
global.console.error(123);    // 打印错误消息,叉号

// 开始计时
global.console.time('for-loop');
for(var i=0;i<10;i++){

}
// 计时结束
global.console.timeEnd('for-loop');

process对象 --->  查看当前计算机的进程

语法:process.arch                // 多少当前cpu架构架构

           process.platform         // 什么当前操做系统函数

           process.env                // 查看当前计算机的环境变量oop

           process.version          // 查看node.js的版本号

           process.pid                 // 进程编号

           process.kill(pid)          // 杀死进程

buffer对象 --->  缓冲区(在内存中存储数据的区域,存储网络传出时的资源)

// 建立buffer,大小是5个字节
var buf=global.Buffer.alloc(5,'abcde');
console.log(buf);
// 将buffer数据转成普通字符
console.log(buf.toString());

全局函数

parseInt / parseFloat / encodeURI / decodeURI  / isNaN  /  isFinite  /eval

console.log(global.parseInt(3.14));     // 3 

1) 一次性定时器

// 定时器,参数1是执行的操做,参数2是间隔的时间(ms),当间隔时间到了就执行回调函数
var timer = setTimeout(function(){
    console.log('响铃');
},3000);

// 清除一次性定时器
clearTimeout(timer);

2)周期性定时器

// 周期性定时器,每间隔3秒响一次
var timer = setInterval(function(){
    console.log('响铃');
},3000);

// 清除
clearInterval(timer);

例1:

// 使用周期性定时器每隔3秒打印hello,打印三次后清楚定时器
// 初始化1个变量用于记录执行次数
var i=0;
var timer = setInterval(function(){
    i++;
    console.log('hello');
    // 当i为3的时候清除定时器
    if(i==3){
        clearInterval(timer);
    }
},3000);

3)当即执行的定时器

// nextTick先执行,setImmediate后执行;
// 当即执行,放到一组事件的最后执行,没有清除方式;
process.nextTick(function(){
    console.log('响铃');
});


// 在下一个循环的开头执行
setImmediate(function(){
    console.log('响铃');
});

模块

一、模块:自定义模块、核心模块、第三方模块

二、任意一个文件都是一个模块

三、exports   require    module.exports   __diename     __dirname

四、导出:module.exports.fn=function(){ }

/*
建立两个模块main.js(主模块),circle.js(功能模块);在功能模块中创
建两个函数,传递1个参数,分别获取圆的周长(getLength)和面积(getArea),
导出这两个函数;在主模块中引入功能模块,调用两个方法;*/


//[circle.js]
function getLength(){
    return 2*PI*r;
}

function getArea(){
    return PI*r*r;
}
// 导出
module.exports.getLength=getLength;
module.exports.getArea=getArea;



// [main.js]
// 引入功能模块circle.js,自定义模块格为js结尾,.js能够省略
var circle=require('./circle.js'); 
console.log(circle.getLength(2));
console.log(circle.getArea(2));

五、引入文件模块或目录模

 

 

 

 例1:

/*建立模块03_1.js,引入当前目录下的03_2目录模块;
在03_2下建立test.js,导出一个函数fn(打印两个数字
相加),在03_1.js中调用*/

//【03_1.js】
var test=require('/03_2/test.js')
console.log(test.add(2,3));



//【test.js】
function add(a,b){
    return a+b;
}
module.exports.add=add;


// 【package.json】
{"main":"test.js"}

例2:

/*在05目录下建立模块05_1.js,引入不带路径的目录模块05_2,
05_2目录中含有hello.js文件(打印一句话)*/

// 【05目录下05_1.js模块】
require('05_2');


// [node_modules目录下05_2目录,文件名hello.js]
console.log('hello');

// [node_modules目录下05_2目录,建立package.json]
{"main":"hello.js"}

 

包和npm

 npm:node package manage

包:就是一个目录模块,里边包含多个文件,其中有一个文件命名为package,json文件,是包说明文件。

 

核心模块--> nodejs官方提供的模块,能够直接引用,不须要建立

1) 查询字符串模块——quearystring

浏览器向服务器发送请求,传递数据的一种方式

parse()    将查询字符串解析为对象

stringify()    将对象转换为查询字符串

http://www.codeboy.com/product_details.html?lid=5&name=dell

例1:

//[querystring.js]
// 引入查询字符串模块
const querystring=require('querystring');   // 对象     用户引入核心模块
var str='lid=5&pname=dell';
// 获取查询字符串传递的数据
// 将查询字符串解析为对象
var obj=querystring.parse(str);
console.log(obj.lid,obj.dell);

var obj2={
    name:'tom',
    age:18,
    sex:1
}
// 将对象转换为查询字符串
var str2=querystring.stringfy(obj2);
console.log(str2);

 例2:

/* 把百度搜索时的查询字符串解析为对象,获取关键词 
ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=电脑& */
const querystring=require('querystring');
var str='ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=电脑&';
var obj=querystring.parse(str);
console.log(obj.wd);

2)url模块

 

3)

 

4)