一文詳解如何使用node執(zhí)行js文件
知識(shí)回顧
I/O (Input/output)
I/O操作指的是對(duì)磁盤的讀寫操作
Node
Node
- Node是對(duì)ES標(biāo)準(zhǔn)一個(gè)實(shí)現(xiàn),Node也是一個(gè)JS引擎
- 通過(guò)Node可以使js代碼在服務(wù)器端執(zhí)行
- Node僅僅對(duì)ES標(biāo)準(zhǔn)進(jìn)行了實(shí)現(xiàn),所以在Node中不包含DOM和 BOM
- Node中可以使用所有的內(nèi)建對(duì)象
string Number Boolean Math Date RegExp Function object Array
而B(niǎo)OM和DOM都不能使用,但是可以使用console也可以使用定時(shí)器(setTimeout () setInterval() )
Node可以在后臺(tái)來(lái)編寫服務(wù)器
Node編寫服務(wù)器都是單線程的服務(wù)器
進(jìn)程
進(jìn)程就是一個(gè)一個(gè)的工作計(jì)劃(工廠中的車間)
線程
線程是計(jì)算機(jī)最小的運(yùn)算單位(工廠中的工人),線程是千活的
傳統(tǒng)的服務(wù)器都是多線程的
每進(jìn)來(lái)一個(gè)請(qǐng)求,就創(chuàng)建一個(gè)線程去處理請(qǐng)求
Node處理請(qǐng)求時(shí)是單線程,但是在后臺(tái)擁有一個(gè)I/O線程池
CommentJS規(guī)范
ECMAScript標(biāo)準(zhǔn)規(guī)范
- 沒(méi)有模塊系統(tǒng)
- 標(biāo)準(zhǔn)庫(kù)較少
- 沒(méi)有標(biāo)準(zhǔn)接口
- 缺乏管理系統(tǒng)
模塊化
- 如果程序設(shè)計(jì)的規(guī)模達(dá)到了一定程度,則必須對(duì)其進(jìn)行模塊化。
- 模塊化可以有多種形式,但至少應(yīng)該提供能夠?qū)⒋a分割為多個(gè)源文件的機(jī)制。
- CommonJS的模塊功能可以幫我們解決該問(wèn)題。
CommonJS規(guī)范
- CommonJS規(guī)范的提出,主要是為了彌補(bǔ)當(dāng)前JavaScript沒(méi)有標(biāo)崔的缺陷。
- CommonJS規(guī)范為JS指定了一個(gè)美好的愿景,希望JS能夠在任何地方運(yùn)行。
CommonJS對(duì)模塊的定義十分簡(jiǎn)單
模塊引用
模塊定義
模塊標(biāo)識(shí)
模塊化
- 在Node中,一個(gè)js文件就是一個(gè)模塊
- 在Node中,每一個(gè)js文件中的js代碼就是獨(dú)立運(yùn)行在函數(shù)中,而不是全局作用域,就相當(dāng)于一個(gè)閉包,所以一個(gè)模塊的變量和函數(shù)在其他模塊中無(wú)法訪問(wèn)
就相當(dāng)于下圖,閉包中的變量和函數(shù)不能被外面的函數(shù)或者操作訪問(wèn)
如果想對(duì)外部的模塊訪問(wèn)到,可以通過(guò)exports來(lái)向外部暴露變量和方法
向外部暴露屬性或方法
exports.x=20; exports.y=100; exports.fn=function(){ }
引入其他的模塊
在node中,通過(guò)require()函數(shù)來(lái)引入外部的模塊,require()可以傳遞一個(gè)文件的路徑作為參數(shù),node將會(huì)自動(dòng)根據(jù)該路徑來(lái)引入外部模塊;如果使用相對(duì)路徑,必須用.或者..開(kāi)頭
使用require()引入模塊以后,該函數(shù)會(huì)返回一個(gè)對(duì)象,這個(gè)對(duì)象代表的是引入的模塊
總結(jié)
到此這篇關(guān)于如何使用node執(zhí)行js文件的文章就介紹到這了,更多相關(guān)node執(zhí)行js文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pycharm配置Node.js運(yùn)行js代碼詳細(xì)過(guò)程
在PyCharm中寫JavaScript代碼并進(jìn)行調(diào)試是非常方便的,但是有些用戶可能對(duì)如何在PyCharm中準(zhǔn)確地運(yùn)行JavaScript代碼感到困惑,這篇文章主要給大家介紹了關(guān)于Pycharm配置Node.js運(yùn)行js代碼的相關(guān)資料,需要的朋友可以參考下2023-11-11nodejs和C語(yǔ)言插入mysql數(shù)據(jù)庫(kù)亂碼問(wèn)題的解決方法
這篇文章主要介紹了nodejs和C語(yǔ)言插入mysql數(shù)據(jù)庫(kù)亂碼問(wèn)題,需要的朋友可以參考下2017-04-04解決npm?install版本不匹配問(wèn)題:?npm?ERR!?code?ETARGET?npm?ERR!?
這篇文章主要介紹了如何解決npm?install版本不匹配問(wèn)題:?npm?ERR!?code?ETARGET?npm?ERR!?notarget?No?matching?version?found?for,文中給出了詳細(xì)的解決方法,需要的朋友可以參考下2024-02-02node實(shí)現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項(xiàng)目實(shí)踐
本文主要介紹了node實(shí)現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07pm2發(fā)布node配置文件ecosystem.json詳解
這篇文章主要介紹了pm2發(fā)布node配置文件ecosystem.json詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05總結(jié)幾道關(guān)于Node.js的面試問(wèn)題
這篇文章主要總結(jié)了幾道關(guān)于Node.js的面試問(wèn)題,通過(guò)這些問(wèn)題就來(lái)判斷一個(gè)人的Node.js水平是不太嚴(yán)謹(jǐn)?shù)?,但是它能讓你?duì)面試者在Node.js上的經(jīng)驗(yàn)如何有個(gè)大概的了解。有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01