一文詳解如何使用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引擎
- 通過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
而BOM和DOM都不能使用,但是可以使用console也可以使用定時(shí)器(setTimeout () setInterval() )
Node可以在后臺(tái)來編寫服務(wù)器
Node編寫服務(wù)器都是單線程的服務(wù)器
進(jìn)程
進(jìn)程就是一個(gè)一個(gè)的工作計(jì)劃(工廠中的車間)
線程
線程是計(jì)算機(jī)最小的運(yùn)算單位(工廠中的工人),線程是千活的
傳統(tǒng)的服務(wù)器都是多線程的
每進(jìn)來一個(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ī)范
- 沒有模塊系統(tǒng)
- 標(biāo)準(zhǔn)庫較少
- 沒有標(biāo)準(zhǔn)接口
- 缺乏管理系統(tǒng)
模塊化
- 如果程序設(shè)計(jì)的規(guī)模達(dá)到了一定程度,則必須對(duì)其進(jìn)行模塊化。
- 模塊化可以有多種形式,但至少應(yīng)該提供能夠?qū)⒋a分割為多個(gè)源文件的機(jī)制。
- CommonJS的模塊功能可以幫我們解決該問題。
CommonJS規(guī)范
- CommonJS規(guī)范的提出,主要是為了彌補(bǔ)當(dāng)前JavaScript沒有標(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ù)在其他模塊中無法訪問
就相當(dāng)于下圖,閉包中的變量和函數(shù)不能被外面的函數(shù)或者操作訪問
如果想對(duì)外部的模塊訪問到,可以通過exports來向外部暴露變量和方法
向外部暴露屬性或方法
exports.x=20; exports.y=100; exports.fn=function(){ }
引入其他的模塊
在node中,通過require()函數(shù)來引入外部的模塊,require()可以傳遞一個(gè)文件的路徑作為參數(shù),node將會(huì)自動(dòng)根據(jù)該路徑來引入外部模塊;如果使用相對(duì)路徑,必須用.或者..開頭
使用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ì)過程
在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語言插入mysql數(shù)據(jù)庫亂碼問題的解決方法
這篇文章主要介紹了nodejs和C語言插入mysql數(shù)據(jù)庫亂碼問題,需要的朋友可以參考下2017-04-04解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?
這篇文章主要介紹了如何解決npm?install版本不匹配問題:?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í)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07pm2發(fā)布node配置文件ecosystem.json詳解
這篇文章主要介紹了pm2發(fā)布node配置文件ecosystem.json詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05