node.js基于谷歌的v8引擎,将谷歌的v8引擎单独拿出来 运行在服务器端html
在一个文件中,声明的变量和函数都属于局部变量或局部函数,在交互模式下属于全局变量或全局函数;node
例1:npm
var a=1; console.log(global.a);
例2:json
function fn(){ console.log(123); } var res=global.fn(); console.log(res);
在浏览器下,文件中声明的变量或建立的函数都属因而全局做用域下的,能够使用全局对象访问;浏览器
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();
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.arch // 多少当前cpu架构架构
process.platform // 什么当前操做系统函数
process.env // 查看当前计算机的环境变量oop
process.version // 查看node.js的版本号
process.pid // 进程编号
process.kill(pid) // 杀死进程
// 建立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
包:就是一个目录模块,里边包含多个文件,其中有一个文件命名为package,json文件,是包说明文件。
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)