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)