node知識點小結(一)

想看花開發表於2020-12-25

1、node概念

node是一個平臺 基於c++開發

不是有js才有node 是因為node的平臺,js才可以執行在伺服器端

學習資料https://nodejs.org/dist/latest-v14.x/docs/api/

學習node達到水平:
登入註冊、增刪改查。
基本的後臺管理系統需要獨立實現。
能理解清楚前後端分離思想。
會使用介面
在實際開發中,懂得如何和後臺進行互動

2、環境變數配置
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
3、包管理器以及模組化

npm其實是一個平臺,上面放了很多包。自己也可以定義包放在上面。

npm是一個國外的平臺,所以有時候下載會比較慢。可以使用國內映象cnpm或者yarn(快取)

如果網路比較慢,有時候會下載失敗。需要重新下載。

如果專案需要拷貝的時候,最好刪除node_modules資料夾。拷貝完了重新下載。

cnpm裝出來的包比較亂,不影響使用。一般網路情況允許的情況下,還是使用npm

cnpm安裝 npm install -g cnpm --registry=https://registry.npm.taobao.org

cnpm功能和npm一樣,使用方法一樣只是多了一個c cnpm install

安裝 cnpm install 檔名字@版本號 寫依賴-S/-D/-g

包管理工具只是node的一個功能而已。

模組化可以看另一篇文章:https://blog.csdn.net/weixin_53037175/article/details/111399717

4、執行node檔案

執行js相當於在伺服器環境下執行: node 檔名 終止程式碼ctrl+c

執行檔案的時候,找到檔案所在目錄,直接在node環境下(或者在目錄下cmd,前提要有node環境)執行檔案或者檔名字,不能取node

5、global

global是全域性物件,可以直接使用,不需要單獨引入.

node檔案相當於是伺服器的不是客戶端的

伺服器端沒有了window,有global

global相當於客戶端中的window

global.console.log('這是列印資訊');

定時器例子:

global.setInterval(function(){
	console.log(1111);
}, 1000)
global.setTimeout(()=>{
  console.log('這是單次定時器')
}, 100)

6、尋找路徑

當前檔案所在目錄

console.log(__dirname);

當前檔案地址

console.log(__filename);

7、const fs

fs是一個內建的模組,需要單獨引入。

模組引入的時候,一般使用const

fs是檔案系統,一般用來和檔案有關的操作

const fs=require('fs');

寫檔案

fs.writeFile('檔名','資料',(err)=>{})
fs.writeFile('my.xls','hello node',(err)=>{
	if(err) throw err;
	console.log('檔案書寫成功')
 })

刪除檔案

fs.unlink('檔名字',(err)=>{})
fs.unlink('./my.xls',(err)=>{
	if(err) throw err;
	console.log('檔案刪除成功')
})

讀檔案

fs.readFile('./my.txt','utf-8',(err,data)=>{
if(err) throw err;
	// data預設接收到的資料是buffer。如果需要轉化。
	// 兩種方式1、data.toString() 2、增加引數'utf-8'
console.log(data)
console.log(data.toString())
})

新建資料夾

fs.mkdir('資料夾名字',(err)=>{}) 如果該目錄存在,去建立會報錯
fs.mkdir('jd',(err)=>{
if(err) throw err;
})

刪除目錄

fs.rmdir('jd',(err)=>{
	if(err) throw err;
 })

讀取資料夾

 fs.readdir(__dirname,(err,files)=>{
	if(err) throw err;
// files儲存的是當前資料夾下的所有檔案
console.log(files); 
})

stat獲取當前路徑的狀態

fs.stat(__dirname,(err,stats)=>{
if(err) throw err;
	// isFile()判斷是否是檔案
    console.log(stats.isFile());
	// isDirectory()判斷是否是目錄
    console.log(stats.isDirectory())
 })

8、建立檔案並進行遍歷輸出名稱

建立淘寶資料夾以及裡面其他檔案

const fs=require('fs');

function demo(proname){
	return {
		proName:proname,
		prolist:[
			{
				name:'css',
				type:'dir'
			},
			{
				name:'images',
				type:'dir'
			},
			{
				name:'js',
				type:'dir'
			},
			{
				name:'index.html',
				type:'file'
			}

	}
}

function createDemo(proname){
	var str=`<!DOCTYPE html>
	<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Document</title>
	</head>
	<body>
		
	</body>
	</html>`;
	var pro=demo(proname);
	//建立主目錄
	fs.mkdir(__dirname+'/'+proname,(err)=>{
		if(err) throw err;
	    //對其裡面檔案進行遍歷
		pro.prolist.forEach((item,index)=>{
			if(item.type=='dir'){
				//完整路徑:資料夾所在目錄/主目錄/資料夾名
				fs.mkdir(__dirname+'/'+proname+'/'+item.name,(err)=>{
				})
			}else{
				fs.writeFile(__dirname+'/'+proname+'/'+item.name,str,(err)=>{
				})
			}
		})
	})
}
createDemo('taobao')