寫在前面:
————————————————————————————————————
博主是一個前端小白,之前學過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 模塊
——————————————————————————————————