隔壁孩子10篇博客node入門而且寫了一個前後端分離項目,你怎麼還在睡覺!!!(一)

寫在前面:
————————————————————————————————————
博主是一個前端小白,之前學過node但是當時學的比較淺吧,現在回頭來把node入門的相關知識學習一下。然後10篇博客將會講解node入門相關知識,最後會寫一個node + vue 前後端分離的項目。
希望大家有什麼建議可以提出,有錯誤也希望大家指出!
————————————————————————————————————

1.什麼是nodeJS?

  • NodeJs是一個基於chrome V8引擎的JavaScript 運行環境,NodeJS使用了一個事件驅動,非阻塞的IO模型,使其
    輕量又高效。
  • NodeJS的包管理器npm是全球最大的開源生態系統。
  • NodeJS是一個可以讓JavaScript脫離瀏覽器還能執行的平臺。

2.NodeJS和JavaScript的區別?

  • NodeJS是一個可以運行JavaScript的平臺,基於chrome V8引擎,並且對JavaScript語言進行了增強,使JavaScript具有
    服務器語言開發的能力。

  • JavaScript是一門編程語言。

3.爲什麼要學習nodeJS

  • 1.前後端語言統一 (JavaScript理想狀態) firefox
  • 2.前後端分離
  • 3.前端很多開發工具都是基於NodeJS,只有會使用NodeJS,使用起來才能得心應手
  • 4.社區活躍,上千個成熟模塊供我們使用

4.nodeJS下載

  • 網址:http://www.nodejs.cn 中文文檔
    可以直接選擇msi 不用去配置一些環境
  • 安裝完成後 在cmd 運行命令 node -v 檢查node版本。 如果有v12.14.1

5.DOS基本命令

  • (a,b,c,d,e):切換盤符
  • dir : 顯示文件及其文件夾列表
  • cd : 進入文件夾
    cd 文件夾 -->進入指定文件夾
    cd …/ -->但會上一文件夾
    cd / -->返回根文件夾
    exit : 退出命令行

6.nodeJs運行

  • REPI 模式 Ctrl + C 退出
  • node + js文件名

7.JS模塊化規範

  • 1.JS的模塊居於共性,模塊的代碼都是在一個函數中。
  • 2.模塊定義在函數,也是局部的。
  • 3.模塊中包含一個模塊對象。包含module(模塊名),exports(導出對象)。
  • 4.如果模塊中需要暴露方法給外部使用,那麼就執行往exports對象上面添加。
  • 5.使用一個模塊require()引進另外一個模塊。

8.CommonJS

  • commonJs是誕生比較早的,nodeJS就是使用CommonJS規範來定義模塊。

9.NodeJS 模塊基礎

  • NodeJS使用模塊方式,管理和組織代碼,NodeJS的所有功能都存在每個模塊之中。
1.什麼是模塊?
  • 在node.js中所有的功能都是以模塊方式存在的,每一個文件就是一個模塊。所有用戶編寫的代碼都會自動封裝在一個模塊中。
  • 如果要在一個模塊中引用另外一個模塊,另外一個模塊就要將自己的內容暴露出來。
  • node引用模塊圖示
    在這裏插入圖片描述
  • 代碼演示
//require.js
//這裏演示引用模塊
var obj = require('./exports.js')
console.log(obj);

//exports.js
//這裏演示暴露模塊
var obj = {
    name:'康家豪',
    age:'永遠18'
}

exports.obj = obj;

//運行node require
{ obj: { name: '康家豪', age: '永遠18' } }
2.主模塊
  • 在node.js中會有一個主模塊,也就是node項目的入口文件,我們通常將主模塊命名爲main.js/app.js/index.js。

10.NodeJS模塊進階(*)

1.nodejs的模塊組成

我們應該會好奇,require,exports都是哪裏來的呢?
這時候我們執行以下代碼:

console.log(arguments.callee.roString());

可以得到以下結果:

function (exports, require, module, __filename, __dirname) {
console.log(arguments.callee.toString());
}

所以我們可以看到用戶編寫的代碼都放在模塊中,模塊就是一個文件,u偶有用戶編寫的代碼都自動封裝在一個函數中,這個函數有五個參數:
分別是 exports, require, module, __filename, __dirname;

2.介紹nodejs的模塊組成
  • exports 暴露對象:可以將模塊中的數據暴露給引入的文件
  • require 引入模塊的函數,用於在一個模塊中引入另外一個模塊,並且將子模塊暴露的數據賦值給變量
  • module 模塊對象:包含了當前模塊的所有信息
  • __filename : 當前模塊的文件名
  • __dirname : 當前模塊所在的路徑(目錄路徑)

11.NodeJS模塊組成細講(*)

11.1 require函數
  • 作用:在當前模塊加載另外一個模塊

  • 模塊分類:

       (1)自定義模塊(我們自己寫的文件就是一個自定義模塊)
      		引入自定義模塊 myModule
      		require('./myModule.js');
      		
      		注意:
      		a:子模塊沒有暴露數據時,返回空對象
      		b:  自定義模塊必須加./,因爲nodeJS默認在node_modules中尋找模塊。
      
       (2)第三方模塊
      		第三方程序員或者公司開發的模塊,先安裝再使用
      		安裝可以使用npm包管理工具
      		npm install <模塊包>
      		下載後項目裏面直接回多有一個node_modules文件夾
      		引入第三方模塊:
      		const jquery = require('jquery')
       (3)系統模塊
       		node.js已經開發好的功能模塊,直接引入即可,不需要安裝也不需要自己寫。 fs  http  url  path
       		引入系統模塊
       		const fs = require('fs');
    
11.2使用require函數引用fs模塊讀取一個文件。
//新建test.txt文件
演示fs讀取test文件!!!

//新建fsRead.js文件
//引入fs模塊
const fs = require('fs');
fs.readFile('./test.txt',(err,data) => {
    console.log(data.toString());
})

//執行node fsRead
輸出:演示fs讀取test文件!!!
11.3 使用require函數的注意事項
  • 1.當引入的模塊有語法錯誤時,會報錯。
  • 2.當引入的模塊路徑有問題的時候,會報路徑錯誤。
  • 3.當一個模塊多次引入時,模塊只執行一次。
    在這裏插入圖片描述
    exports將暴露的對象在第一次被引用的時候發給require引用處一次,然後再發給緩存區一次,require函數引用文件先去尋找緩存區有沒有文件,如果有直接就拿到,所以多次引入一個模塊,這個模塊指揮執行一次。
11.4 exports函數 (ez)
  • 作用: 將模塊中選喲共享給其他模塊的數據暴露到引用處。
  • 語法:
    exports.屬性名 = 屬性值
    exports.方法名 = 函數
11.5 exports函數的注意事項(ez)
  • exports是module.exports函數的引用
module.exports === exports;  // true
  • exports 只是module.exports的引用,不能改變指向,只能添加屬性和方法。
  • 之後我們暴露數據都使用module.exports
  • 代碼使用:
//在這裏暴露數據
module.exports = {
    name:'康家豪',
    age:'永遠18',
    detail:'聰明帥氣'
}

//引用模塊數據
var personObj = require('./kanged');
console.log(personObj);

//執行
{ name: '康家豪', age: '永遠18', detail: '聰明帥氣' }
11.6 module 模塊對象(ez)
  • module.exports : 正真的暴露對象,exports只是對它的引用
  • 查看module中的所有參數
Module {
    id: '.',    //模塊id
    path: 'C:\\Users\\86156\\Desktop\\node\\node01',    //模塊路徑
    exports: {},      //暴露對象
    parent: null,	  //模塊的父級
    filename: 'C:\\Users\\86156\\Desktop\\node\\node01\\kang.js', // 模塊文件名和路徑
    loaded: false,
    children: [],
    paths: [
        'C:\\Users\\86156\\Desktop\\node\\node01\\node_modules',
        'C:\\Users\\86156\\Desktop\\node\\node_modules',
        'C:\\Users\\86156\\Desktop\\node_modules',
        'C:\\Users\\86156\\node_modules',
        'C:\\Users\\node_modules',
        'C:\\node_modules'
    ]
    //模塊查找路徑
},

12.NPM包管理工具(*)

  • Npm(Node Package Manager):Node包(模塊)管理工具,藉助NPM,可以幫助用戶管理和使用全球Node開發者提供的包了。

13.package.json(*)

  • Package.json NodeJS項目的包描述文件。
    以JSON格式的形式來描述node項目默認包中的入口文件爲index.js,也可以在包中新建一個package.json包描述文件,設置main屬性值爲模塊的入口。

  • Package.json 屬性說明:
    + name - 包名
    + version - 包的版本號
    + description - 包的描述
    + homepage - 包的官網
    + author - 包的作者姓名
    + contributors - 包的其他貢獻者姓名
    + dependencies - 依賴包列表

  • 如何創建package.json

執行命令:     npm init
命令2:        npm init -y 全部以yes的形式生成package.json文件
完成後項目會出現一個package.json文件,詳情如下:
{
  "name": "node01",
  "version": "1.0.0",
  "description": "package.json",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "kang",
  "license": "ISC"
}
 

————————————————————————————————————
寫在後面

  • 隔壁孩子10篇博客node入門而且寫了一個前後端分離項目,你怎麼還在睡覺!!!(二)
    + node回調函數相關實現(promise)
    + buffer緩存區
    + fs文件模塊的使用
    + path url http 模塊
    ——————————————————————————————————
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章