Node.js是一個基于V8 JavaScript引擎的JavaScript運行時環(huán)境。
也就是說Node.js基于V8引擎來執(zhí)行JavaScript的代碼,但是不僅僅只有V8引擎:
? 前面我們知道V8可以嵌入到任何C ++應(yīng)用程序中,無論是Chrome還是Node.js,事實上都是嵌入了V8引擎來執(zhí)行JavaScript代碼;
? 但是在Chrome瀏覽器中,還需要解析、渲染HTML、CSS等相關(guān)渲染引擎,另外還需要提供支持瀏覽器操作的API、瀏覽器
自己的事件循環(huán)等;
? 另外,在Node.js中我們也需要進行一些額外的操作,比如文件系統(tǒng)讀/寫、網(wǎng)絡(luò)IO、加密、壓縮解壓文件等操作;
?目前前端開發(fā)的庫都是以node包的形式進行管理
Node.js是在2009年誕生的
? LTS版本:(Long-term support, 長期支持)相對穩(wěn)定一些,推薦線上環(huán)境使用該版本;
? Current版本:最新的Node版本,包含很多新特性;
? 這些我們選擇什么版本呢?
? 如果你是學習使用,可以選擇current版本;
? 如果你是公司開發(fā),建議選擇LTS版本(面向工作,選擇LTS版本);
js代碼執(zhí)行?
node正常安裝后,tab可以自動補全文件名
// 1.輸出的內(nèi)容
console.log("Hello World")
const num1 = 100
const num2 = 200
console.log(num1 + num2)
// console.log(process.argv)
// 2.給程序輸入內(nèi)容
// node ./webpack.config.js env=development
const arg1 = process.argv[2]
const arg2 = process.argv[3]
console.log(arg1, arg2)
? 正常情況下執(zhí)行一個node程序,直接跟上我們對應(yīng)的文件即可:
node index.js
? 但是,在某些情況下執(zhí)行node程序的過程中,我們可能希望給node傳遞一些參數(shù):
node index.js env=development coderwhy
? 如果我們這樣(傳遞參數(shù))來使用程序,就意味著我們需要在程序中獲取到傳遞的參數(shù):
? 獲取參數(shù)其實是在process的內(nèi)置對象中的;
? 如果我們直接打印這個內(nèi)置對象,它里面包含特別的信息:
????????? 其他的一些信息,比如版本、操作系統(tǒng)等大家可以自行查看
?
node的全局變量
特殊的全局對象
? 這些全局對象實際上是模塊中的變量,只是每個模塊都有,看來像是全局變量;
? 在命令行交互中是不可以使用的;
? 包括:__dirname、__filename、exports、module、require()
? __dirname:獲取當前文件所在的路徑:
? 注意:不包括后面的文件名
? __filename:獲取當前文件所在的路徑和文件名稱:
? 注意:包括后面的文件名稱
常見的全局對象
? process對象:process提供了Node進程中相關(guān)的信息:
? 比如Node的運行環(huán)境、參數(shù)信息等;
? 后面在項目中,我也會講解,如何將一些環(huán)境變量讀取到 process 的 env 中;
? console對象:提供了簡單的調(diào)試控制臺,在前面講解輸入內(nèi)容時已經(jīng)學習過了。
? 更加詳細的查看官網(wǎng)文檔:https://nodejs.org/api/console.html
? 定時器函數(shù):在Node中使用定時器有好幾種方式:
? setTimeout(callback, delay[, ...args]):callback在delay毫秒后執(zhí)行一次;
? setInterval(callback, delay[, ...args]):callback每delay毫秒重復(fù)執(zhí)行一次;
? setImmediate(callback[, ...args]):callbackI / O事件后的回調(diào)的“立即”執(zhí)行;
? 這里先不展開討論它和setTimeout(callback, 0)之間的區(qū)別;
? 因為它涉及到事件循環(huán)的階段問題,我會在后續(xù)詳細講解事件循環(huán)相關(guān)的知識;
? process.nextTick(callback[, ...args]):添加到下一次tick隊列中;
? 具體的講解,也放到事件循環(huán)中說明;
?文章來源:http://www.zghlxwxcb.cn/news/detail-548674.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-548674.html
到了這里,關(guān)于Node.js開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!