php中nodethirtythree,node常用模块 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...
nodeJS和ES6
node基本用法
(1)安裝nodeJS
cmd輸入node -v出現node版本號,表明安裝成功。
(2)node中的互相調用
require("./02.js");//調用其他的js文件
module.exports = obj;//向外暴露接口
tips:var xx = require("./xx.js")
這樣即可獲取到在xx.js中module.exports中的值。
(3)node內置模塊
os模塊
os:系統模塊
提供一些基本操作系統的相關函數;
os.platform()當前系統類型
os.uptime()當前操作系統的運行時間;
fs模塊
fs:文件讀取模塊,用于對系統文件和目錄的讀寫操作;
fs.writeFile("./xx.txt","aaa");
fs.readFile("./xx.txt","utf-8",function(err,data){
data為讀取到的內容,err為出錯信息。
})
path模塊
path:路徑模塊;
路徑處理模塊,存有路徑的信息,同時提供了對路徑操作的方法;
let str = "./tmp/d.txt";
path.dirname(str);獲取路徑(./tmp)
path.basename(str);獲取文件名(d.txt)
path.extname(str);獲取擴展名(.txt)
path.join(__dirname,"路徑2");將當前路徑和文件路徑合并;
http模塊
1、http:nodeJS中封裝了高效的http服務器和http服務端。
http.server是一個基于事件的http服務器;
http.request是一個客戶端工具;
eg:
const http = require("http");
const server = http.createServer();
server.listen(8080);
server.on("request",(req,res)=>{
res.end("發回給瀏覽器的數據");
})
tips:createServer創建了一個服務器,listen監聽了其相對應的端口。
在前端發來了請求之后,觸發事件,執行回調函數。
2、需要給返回的內容設置其類型,即響應頭;
res.writeHeader(200,{
'Content-Type':'text/html';
})
tips:設置了響應頭,指定了返回數據的類型,在解析時會根據類型做相應解析;
tips:前端接收數據,html會解析其中的標簽,json會解析使其變為對象;
url模塊
1、url:url模塊提供操作url的方法,以及保存了url的信息;
req.url
const obj = url.parse(req.url,true);
tips:這時的obj將會變成一個url對象(json對象)
{
protocol:
slashes:
...
}
url.format(urlObj)將url解析成字符串,路徑形式;
url.resolve(from,to)拼接路徑,將路徑起始和終止連接;
tips:url中的pathname是路徑的末尾處部分;
eg:
www.xxx.com/index.html
這里的pathname即為'index.html';
eg:
server.on('request',(req,res)=>{
const obj = url.parse(req.url,true)
fs.readFile('./public' + obj.pathname, (err, data)=>{
res.end(data);
})
})
tips:將指定的路徑獲取的的文件內容返回到客戶端,讀取數據,res.end(data);
2、在瀏覽器中,前端發送的數據可能會分為多次進行發送,
這時候需要將所有發送的內容都進行獲取之后在進行操作。
eg:
req.on('data', (chunk)=>{
str += chunk;
})
tips:這里的chunk指代了每一次獲取的數據,將每次的數據都進行拼接;
querystring模塊
querystring:用于將對象轉化為字符串,或將字符串轉化為對象,
用于get請求的數據格式轉化;
eg:
const query = querystring.stringify(obj, [sep], [eq]);`
query.parse(str);
util模塊
util:
child_process
child_process+
ES6語法
(1)、變量聲明
使用的變量必須在聲明后才可以使用;
es6的語法聲明沒有變量提升,且聲明的變量的作用域會局限于{}中。
const constant,常數、常量,在定義之后就不可更改,不變的量。
let比起var沒有變量提升。
(2)、對象方法
對象解構(object deconstruct)
let userinfo = {name:"xx",age:18}
let {name} = userinfo;
tips:輸出的name的結果為userinfo.name;
let {name,age} = userinfo;
let {name:name12 , age} = userinfo;
tips:name的值賦給name12,進行了重命名操作;
數組解構
let arr = ["xx", "yy", "aa", "cc"]
let [a, b, c, d] = arr
結果為:
a = "xx";
b = "yy";
c = "aa";
d = "cc";
tips:解構后的對應變量和數組元素一一對應;
eg:
let [a, , b, c] = arr;//這時候的第二個元素會被忽略;
let [ , , , a] = arr;//前三個元素忽略,只有第四個元素被取出了;
數組過濾
var arr_2 = arr.find(function(item, index){
//item指arr中的元素,index為該元素的索引值
//在其內部可以寫if條件判斷,
//當return值為true的時候,該元素就會作為返回值返回,可以用一個變量來接收;
})
(3)、字符串方法
str.includes()是否包含該字符串
str.startsWith()是否以該字符串開頭
str.endsWith()是否以該字符串結尾
tips:全部都返回一個布爾值;
eg:
let str = "xxyyzzsstt";
str.includes("yy")
str.startsWith("xx")
str.endsWith("tt")
(4)、模板字符串
反引號,用于拼接字符串
let obj = {name:xx, age:yy}
str = `
${obj.name}
${obj.age}
`tips:反引號內部的字符串支持換行,不需要加號拼接;
(5)數組新方法
arr.find(function(item,index){
//item是當前的元素,index為其索引
//當出現了符合條件的元素時,寫return true,這時即返回了一個當前符合條件的元素,可以用一個變量來接收這個元素
})
let tmp = arr.findIndex(function(item,index){
return index > 28
//此時返回的即為index > 28的元素
})
(6)對象擴展,obj extend
let name = "xx";
let age = 18;
let obj = {
name,
age,
gender : woman
}
tips:在這里,obj里的name和外界定義的name名稱一致,在obj中本來應該寫成name : name,因為同名,所以在這里可以省略成只寫一個name;
(7)函數簡寫
hello:function(){
}
簡寫:
寫法一:hello(){
}
寫法二:hello()=>{
}
tips:在箭頭函數中,其內部不存在this,如果出現了this,只會往上一級尋找this變量;
普通的function中才會有this;
eg:
hello:x=> x * x
tips:該函數等同于hello:function(x){
return x * x
}
(8)展開運算符
以下兩式等同,...相當于apply。數組將會被拆分每一個元素都會分別調用方法。
function test(a,b,c){}
var args = [0, 1 , 2]
test.apply(null, args)
======>
function test(a,b,c){}
var args = [0, 1, 2]
test(...args)
總結
以上是生活随笔為你收集整理的php中nodethirtythree,node常用模块 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq会员加速卡怎么使用(PC版官方网站)
- 下一篇: centos系统php环境配置,Cent