1. 程式人生 > 實用技巧 >node筆記一、認識nodejs

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菜鳥教程

Node API文件

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

​ 預設情況下exportsmoudule.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目錄資訊