把js從前耑語言變成了服務耑語言。
使用
nodehelloworld.js
安裝額外的包
npm install mysql
安裝很慢的話,可以更換源爲中國源
npm install -g cnmp --registry=""cnpm install xxx // -g 爲全局安裝 // 什麽都不寫就說本地安裝,加入到./node_modules // -s -D,一個是運行環境要有,一個是開發環境要有
卸載包
npm uninstall xxx
導包
const http = require('http');
示例1 httpserver.js
示例2 mysql.js
// 1.導包 const mysql = require('mysql') // 2.創建連接對象 var connection = mysql.createConnection({ host:"127.0.0.1", port:3306, user:"root", password:"root", database:"test"}); // 3.配置數據庫連接信息 // 4.開辟鏈接 connection.connect(); // 5.執行sqlconnection.query("select * from user",function(error,results,fields) { if(error) throw error; console.log("results=",results); }); // 6.關閉連接 connection.end();
ES6
let const var
let:變量,並且能夠防止變量穿透 const: 常量,不可修改
之前都用var,無法區分變量常量,而且無法防止變量穿透var name = "xiaobo";var PI = Math.PI;---現在使用 let 和 constlet name = "xiaobo";const PI = Math.PI;//不可修改
變量穿透
// 使用var 無法防止變量穿透 for(var i = 0;i<5;i++){ console.log(i); } //0,1,2,3,4 console.log(i); //5 不希望的結果 //使用let 可以 for(let i = 0;i<5;i++){ console.log(i); } // 0,1,2,3,4 console.log(i); // 報錯,i is not defined
模板字符串
使用兩個反括號包裹起來 `` 即可
var person = { name:"xiaocainiao", address:"dalian" } let address = "我是"+person.name+",在"+person.address;//我是xiaocainiao,在dalian let address2 = `我是${person.name},在${person.address}`;//我是xiaocainiao,在dalian console.log(address); console.log(address2);
默認參數
函數的參數,沒有賦值的時候是undefined,多個參數,沒有全部傳值就會計算出錯。 現在可以使用默認參數function sum(a,b){return a+b;}var res = sum(70);console.log(res);//結果爲 NaN------------function sum(a=100,b=100){return a+b;}var res = sum(70);console.log(res);//結果爲 170
箭頭函數
1.去掉function,加上箭頭 2.如果方法中只有一句return,沒有別的邏輯,可以去掉大括號和return 3.如果參數隻有一個,可以取消參數的括號
var sum = function(a,b){ return a+b; } // 變體1 var sum2 =(a,b)=>{ return a+b; } // 變體3 var sum3 = (a,b)=>a+b; // 4 如果只有一個參數,可以省略括號 var twobei = a=>a*2; console.log(twobei(100)); // 結果爲200
對象初始化簡寫
變量名和對象的key一致,對象内部可以簡寫 對象内的:function可以省略,只剩下括號
let name="xiaocainiao"; let phone=12345678901; let info = { name:name, phone:phone, go:function(){ console.log("go!go!go!"); } } // 可以簡寫爲以下,前提是變量名和對象的key一致。 let name="xiaocainiao"; let phone=12345678901; let info = { name, phone, //:function可以省略,只剩下括號 go(){ console.log("go!go!go!"); } }
對象解構
對於對象取出屬性或者執行對象的方法,有兩種方式
obj.x obj.y()
obj["x"], obj["y"]
現在新添一種,
var{x,y} = obj;
也就是快速取出了
let name="xiaocainiao"; let phone=12345678901; let info = { name, phone, //:function可以省略,只剩下括號 go() { console.log("go!go!go!"); } } for(var x in info) { console.log(x); console.log(info.x); // undefined // 這是用 `.`方式的缺點,它不回去尋找x背後的值是name或者phone, // 而是就直接尋找info.x,沒有就undefined了 console.log(info[x]); // 可以查出 } // 新增方式 // 但是這種,應該要求解構出來的變量名需要與對象屬性名一致,這樣就不能用對象構造時候的簡寫了。 // 否則新定義的變量就與上面的變量沖突了 // 所以似乎沒啥用 let {name,phone,go} = info; console.log(name); console.log(phone); go();
傳播操作符
...obj 解構之後的對象,可以拿到除了解構出的屬性,剩餘的所有屬性 具體見代碼
let info = { name:"cainiao", phone:123456, address:"DLUT", go(){ console.log("go!go!go!"); } } let {name,phone,...info2} = info; console.log(name); console.log(phone); console.log(info2);//這裡會拿到除了name和phone的所有屬性。 //cainiao //123456 //Object { address: "DLUT", go: go()}
數組Map
假設有一個需求,要對數組所有内容*2,之前只能使用for循環的方式,現在可以用map迅速搞定
let arr1 = [1,2,3,4,5];let arr2=[]; for(let i = 0;i<arr1.length;i++){ arr2.push(arr1[i]*2);}//map方式let arr1 = [1,2,3,4,5];let arr2 = arr1.map(function(val){ return val*2;});// 當然也可以改進簡寫let arr1 = [1,2,3,4,5];let arr2 = arr1.map(val=> val*2);
原理是什麽?arr.map的時候,實際上是産生了新的數組,然後取出原數組的每個字,計算後,return進行回填到對應位置 v1爲數組的第i個元素, v2爲第i-1個元素,第一次循環時爲0 v3爲數組本身 最多三個,v4就not defined
// 更複雜的形式 let arr1 = [1,2,3,4,5]; let arr2 = arr1.map(function(v1,v2,v3) { console.log(v1); console.log(v2); console.log(v3); return v1+v2+v3; }); // v1爲數組的第i個元素,v2爲第i-1個元素,第一次循環時爲0 // v3爲數組本身 // 最多三個,v4就not defined // v1和v2是值相加,接著再加對象,變成了字符串拼接,結果爲 /* Array(5) [ "11,2,3,4,5", "31,2,3,4,5", "51,2,3,4,5", "71,2,3,4,5", "91,2,3,4,5" ] */
數組reduce
v1是循環計算位,第一次就是數組的第一個數 接著每次都是計算後的結果暫存 v2是第i+1位 v3是第i位(好複雜。。。) v4 和map的v3一樣,是數組本身 v5 not defined
let arr1 = [1,2,3,4,5]; let arr3 = arr1.reduce(function(v1,v2,v3){ console.log(v1);//1 4 9 16 console.log(v2);//2 3 4 5 console.log(v3);//1 2 3 4 return v1+v2+v3; }); console.log(arr3);//25
總結
後耑java程序員,這方面想必應該是了解就好,springboot 還沒有學會,就先不在這裡深究了。以後一定回來繼續深入了解。