歡迎訪問巨立鑫電腦培訓官方網站! 網址:http://www.deanlusk.com

在線報名 | 聯系我們

軟件編程 平面設計 APP開發 弱電工程

Node基礎

   常人所說的NODE是后臺編程語言,這種說法其實是錯誤的。NODE只是一個工具(或者環境),我們可以把NODE安裝在服務器上,NODE提供的環境可以運行JS代碼,這樣我們就可以在服務器端使用Java編寫一些處理服務器相關操作的程序,也可以理解為JS變為了后臺編程語言。
 
1、NODE是基于V8引擎來渲染JS的(V8是谷歌的引擎)
 
渲染JS的速度會很快
 
我們在使用JS開發后臺程序的時候,不需要考慮瀏覽器兼容了,使用JS的最新標準即可(ECMA)
 
2、單線程、無阻塞I/O操作、事件驅動(event-driven)
 
NODE是如何執行JS代碼的
 
常用的方式有三種
 
使用NODE的REPL(Read-Evaluate-Print-Loop,輸入-求值-輸出-循環)命令
 
使用命令行:node xxx.js (在命令行中把xxx.js文件中的代碼執行)
 
在webStorm中直接右鍵 -> Run xxx.js 也可以把JS代碼在NODE中執行
 
I/O操作
 
I(input):輸入
 
O(output):輸出
 
I/O操作泛指對文件及文件中內容的操作(包括:增刪改查)
 
JS作為前端編程語言(運行在客戶端瀏覽器中),不能直接對客戶端的本地文件進行I/O操作
 
目的是為了保證客戶端信息的安全
 
有一些機制可以操作客戶端內容(input type=’file’),但是需要用戶手動選擇某些文件上傳才可以
 
JS作為后臺編程語言(運行在服務器端NODE環境下),可以對服務器上的資源文件進行I/O操作
 
NODE中絕對提供了供JS代碼操作I/O的方法(后面講到的fs模塊就是做這件事情的)
 
letfs = require( 'fs');
//=>異步讀?。寒惒阶x取文件中的內容就是無阻塞I/O操作
 
//fs.readFile()//=>同步讀取
 
letcon = fs.readFileSync( './readme.md', 'utf8');
 
console.log(con);
 
JS中的同步異步
 
客戶端:
 
定時器都是異步操作的
 
AJAX中也提供異步操作(Promise設計模式是異步編程的處理模式)
 
事件綁定也是異步編程
 
回調函數也可以理解為異步編程
 
同步:一件事一件事的來進行處理,A做完了,B才能做,A做不完,B也無法執行…
 
異步:上一件事沒有徹底完成,下一件事可以先干著,A(異步)沒做完,B(同步)先做,等B做完了,在把A進行處理…
 
JS本身是單線程的(有很多的進程), 一次只能做一件事情
 
NODE中的異步操作:
 
定時器
 
異步的I/O
 
回調函數
 
setImmediate:在等待任務隊列的頂部最先執行
 
process.nextTick:在主任務隊列的最底部執行(永遠會在setImmediate之前執行)
 
 
事件驅動:
 
到達某個時候做一些事情,就是事件驅動(服務器端能用異步的不用同步操作)
 
 
 
NODE和客戶端瀏覽器的主要區別:全局對象
 
瀏覽器全局對象: window
 
NODE全局對象: global
 
NODE天生就是基于模塊化開發的
NODE中模塊這個概念非常強(強到我們每創建一個新的JS,都相當于創建了一個新的模塊)
 
NODE是基于commonjs規范來完成模塊設計的(如何創建模塊、如何調取模塊、如何導出模塊 這些就是規范里提及的內容)
 
CMD模塊開發思想:seajs (按需導入:用到的時候在導入進來使用)
 
AMD模塊開發思想:requirejs (提前導入所有需要的依賴)
 
1、自定義模塊:自己創建的
 
2、第三方模塊:別人寫好的我來用
 
3、內置模塊:天生自帶的
 
自定義模塊的原理
 
創建一個JS就相當于創建一個模塊,而模塊之間是獨立的(也可以共享),為了實現這樣的需求,每當創建一個JS,NODE都幫助我們做了很多的事情
 
//=>NODE為了實現模塊之間的獨立,會自動包一層閉包,而且給每一個模塊傳遞五個值
( function(exports, require, module, __filename, __dirname){ /* * module模塊:NODE模塊管理的對象 * exports叫做導出,等同于module.exports,用來把模塊進行導出的 * require是導入的方法,通過這個方法可以把一些模塊導入到當前模塊中使用 *///=>內部代碼中有一個類似于這樣的操作,可以把一些想要供別人使用的屬性和方法暴露出來module.exports=exports= this={ fn:()=>{} };})(); //=>下一個模塊
 
( function(exports, require, module, __filename, __dirname){ letobj= require( 'pre'); //=>導入上邊的模塊//=>我們的obj就是上面模塊導出的對象 //{fn:()=>{}}
 
})();
 
require
 
導入某個模塊,目的是使用其它模塊中的屬性和方法
 
require( './xxx') : 指定目錄的情況下,都是為了要導入自己定義的模塊
require( 'xxx'):不指定目錄情況下,可能是導入第三方安裝的模塊,也可能是導入內置模塊(首先到node_modules文件夾中找第三方模塊,有的話,導入的就是第三方模塊,沒有的話,看內置模塊中有沒有,內置中這個模塊,導入的就是內置模塊,內置中沒有就會報錯)
 
module.exports
 
把當前模塊中的某些屬性和方法導出
 
module.exports.fn=fn;
module.exports.a= 12;
 
//=>上面寫起來麻煩(上面屬于向原有內置對象的堆內存中增加屬性和方法,下面屬于導出一個新的堆內存)
 
module.exports={ fn:fn, a: 12};--- //=>直接使用exports也可以,但是這種模式只能使用原有內置內容,自己開辟新內存不行
 
exports.fn=fn;exports={};
 
//=>這種方式不行
 
思考題:
 
有三個自定義模塊
 
A:任意數求和 sum :sum(1,2,3,4) => 10
 
B:求平均數 avg : avg(12,23,34) =>平均數 (先求和[調取A中的sum],除以長度,求出平均數)
 
C:最后調取 : 調取B中的avg ,傳遞幾個數,算出平均數即可
 
第三方模塊的安裝
 
除了npm我們還可以使用yarn來安裝模塊
 
1、首先在全局安裝yarn
 
npm install yarn -g
 
2、想在項目中安裝模塊,和npm的操作步驟類似
 
yarn init -y 生成package.json
 
yarn add xxx 安裝具體模塊,并且保存在生產依賴項中(yarn只能把模塊安裝在本地項目中不能安裝在全局)
 
yarn add xxx —dev 保存在開發依賴項中
 
yarn remove xxx 移除安裝的模塊
 
yarn install 按照依賴模塊清單,跑環境

在線留言

*將嚴格保護您的信息請放心填寫

熱門案例

更多 +

幫助中心

在線報名 聯系我們

咨詢電話(9:00-17:00)

0551-65571116
13225607766

在線客服

點擊咨詢

掃一掃咨詢

移動端查看

在線咨詢
手機請直接輸入:如1860086xxxx
座機前加區號:如0105992xxxx
輸入您的電話號碼,點擊通話,稍后您將接到我們的電話,該通話對您完全免費,請放心接聽!
掃描二維碼
国产美女a做受大片观看_一个人看的www在线高清视频_女人和公牛做了好大好爽_东北老女人下面痒大叫