node筆記一、認識nodejs
1、認識node.js
1.1 nodejs是什麼
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。與原生js不同的是,原生JavaScript執行在瀏覽器也就是客戶端,而Node.js是執行在服務端的JavaScript。Node.js不再和瀏覽器頁面相關,所以很多內容和原生js有著差異,比如不再有任何DOM相關操作,頂層物件不再是window等等。它基於V8引擎,採用非同步回撥的策略,效能非常高。
V8 引擎:Chrome瀏覽器解析js的引擎。
Node菜鳥教程
1.2 下載安裝node
1、訪問 node.js中文網
2、配置nodejs環境變數
將nodejs安裝目錄新增到path
node -v //驗證nodejs安裝是否成功
npm -v //驗證npm安裝是否成功(安裝node時會自動安排npm,nodejs的包管理工具)
2、模組系統
2.1node.js模組化
每建立一個檔案都相當於一個模組,每個檔案都是一個作用域,不用擔心變數暴露在全域性,同時我們引入的時候可以隨便採用合適的變數名接受。
node原生模組:path,fs,URL等等。
2.2路徑中“./、../、@”的區別?
./ 相對路徑,指當前目錄
../ 相對路徑,指當前目錄的上一層目錄
@ 相對路徑,以根目錄的方式定義相對路徑。vue在webpack.base.conf.js檔案中配置根目錄:
// 連線路徑並返回 function resolve(dir) { return path.join(__dirname, '..', dir) } module.exports = { resolve: { // 在匯入語句沒帶檔案字尾時,webpack會自動按照順序新增字尾名查詢 extensions: ['.js', '.vue', '.json'], // 配置別名 alias: { 'vue$': 'vue/dist/vue.esm.js', // 將專案根目錄中,src的路徑配置為別名@ '@': resolve('src'), } } }
2.3 moudule.exports與exports的區別?
最終匯出的是moudule.exports
預設情況下exports
與moudule.exports
是引用關係,如果exports被重新賦值就不再有引用關係。
2.4 模組快取?
兩次引入同一個檔案,結果一樣。修改其中一個檔案內容,另外引入的那個檔案一樣被修改。
3、path模組
path模組用來解析路徑的模組。全域性變數__dirname、__filename。
__dirname
:檔案目錄。
__filename
:帶檔名的目錄。
處理路徑的幾種方法:join、resolve、relative、parse。
join
直接拼接路徑。
resolve
拼接路徑,與join不同的是resolve會分析根路徑,遇到根路徑就從根路徑出發重新發起路徑拼接。
relative
分析兩個檔案或兩個目錄的相對路徑。
parse
解析路徑,返回一個解析路徑的物件,物件含 {root:’c:/’,dir:‘...’,base:‘...’,ext:‘...’,name:‘...’}
4、URL模組
url
模組用於處理與解析 URL。
const url = require('url');
let myURL = url.parse('https://user:[email protected]:8080/p/a/t/h?query=string#hash');
const URL = require("url");
let myURL = URL.URL; //[class URL]
console.log(new myURL("https://www.shiguangkey.com/video/4996?videoId=105451&classId=7569&playback=1"));
const {URL} = require("url");//{URL:URL}
let myURL = new URL("https://www.shiguangkey.com/video/4996?videoId=105451&classId=7569&playback=1")
console.log(myURL);
5、querystring模組
querystring
模組提供用於解析和格式化 URL 查詢字串。
const querystring = require('querystring');
querystring.parse(str[, sep[, eq[, options]]])
querystring.stringify(obj[, sep[, eq[, options]]])
6、fs模組
fs.readFile(path[, options], callback) //非同步讀取
options
encoding 預設值: null。
flag 參見檔案系統 flag
的支援。預設值: 'r'。
callback
err
data
const fs = require('fs');
fs.readFile('檔案路徑', (err, data) => {
if (err) throw err;
console.log(data);
});
fs.readFileSync(path[, options]) //同步讀取
返回 path
的內容。
const fs = require('fs');
fs.readFileSync('檔案路徑',"utf-8"); // => <data>
fs.writeFile(file, data[, options], callback) //非同步寫入
fs.writeFileSync(file, data[, options]) //同步寫入
fs.unlink(path, callback) //刪除檔案
fs.rmdir(path[, options], callback) //只能刪除非空目錄
fs.rename(oldPath, newPath, callback) //移動檔案
fs.stat(path[, options], callback) //檢視檔案or目錄資訊