javascript
nodejs怎么与c语言通信费是什么,NodeJS介绍与使用
NodeJS是什么
Node.js是一個基于Chrome V8引擎的JavaScript運行時。
NodeJS并不是一門語言,JavaScript才是一門語言,他是一個運行時,如果想要在服務器端運行就需要運行時。
nodeJS使用了一個事件驅動、非阻塞式I/O的模型
非阻塞式I/O
I/O:就是input,output,計算機輸入輸出的意思。鍵盤,打印機這些都是輸入輸出設備。對計算機來說就是讀寫磁盤或者進行網絡操作,數據庫操作都是I/O操作。
阻塞式I/O:I/O時進程休眠等待I/O完成后進行下一步。
非阻塞式I/O:I/O時函數立即返回,進程不等待I/O完成就執行下一步,I/O完成后通知主程序。
事件驅動(發布訂閱模式)
I/O等異步操作結束后的通知
運行node
方式1:
命令行執行node
進入了node的運行環境
退出執行 .exit ( 或者ctrl+c )
方式2:推薦使用在跟入口文件的同一層目錄下執行
node 文件路徑
環境
Commonjs規范
一種模塊化規范
模塊化:每個文件是一個模塊,有自己的作用域
在模塊內部module變量代表模塊本身
module.exports屬性代表模塊對外接口
require規則
/表示絕對路徑
./表示相對于當前文件的
以 ' / ' 或 ' ./ ' 認為是按照當前給的路徑查找模塊。
不寫路徑則認為是build-in模塊或者各級node-modules內的第三方模塊
支持js、json、node 擴展名,不寫,先嘗試沒有后綴的文件,再依次嘗試
如果引入的是文件夾,那么會讀取該文件夾下的Index文件
require特性
module被加載的時候執行,加載后緩存
一旦出現某個模塊被循環加載,就只加載已經執行的部分,還未執行的部分不會輸出。
注意:使用模塊時,建議引入都寫在文件的開頭部分,輸出都寫在文件末尾
調試
瀏覽器調試
node --inspect-brk main.js
chrome://inspect/#devices
API
global全局對象
commonjs方法:require() module.exports
Buffer processs timer console.log
path
path模塊提供用于處理文件路徑和目錄路徑的實用工具
path.normalize
規范化給定的path
path.join([...path])
使用平臺特定的分隔符作為定界符將所有給定的path片段連接在一起,然后規范化生成的路徑。
path.resolve([...paths])
將路徑或路徑片段的序列解析為絕對路徑。
path.basename(path[,ext])
返回path的最后一部分,尾部的目錄分隔符將被忽略
path.dirname(path)
返回path的目錄名
path.extname(path)
返回path的擴展名
path.parse(path)
dir root base name ext
path.format(pathObject)
從對象返回路徑字符串。 與 path.parse() 相反。
__dirname 是執行代碼的文件所在系統的絕對目錄
__filename 是執行代碼的文件所在系統的絕對文件路徑
注意:
__ dirname、__filename 返回執行文件所在系統的絕對路徑
process.cwd()總是返回執行node命令所在文件夾
在require方法中指相對當前文件所在文件夾
在其他地方和process.cwd()一樣,相對node執行所在文件夾
fs文件系統
fs.readFile()
fs.writeFile()
fs.appendFile()
fs.stat()
fs.mkdir()
fs.readdir()
fs.rename()
fs.rmdir()
fs.unlink()
util
util.promisify()
url
url.format()
url.parse()
querystring
querystring.escape()
querystring.unescape()
querystring.parse()
querystring.stringify()
http(作為客戶端)
http.get(options[, callback])
http.request(options[, callback])
http(作為服務器)
http.createServer(options)
response.statusCode
response.statusMessage
response.setHeader(name, value)
response.writeHead(statusCode[, statusMessage] [, headers])
response.write(chunk[, encoding] [, callback])
response.end([data[, encoding]] [, callback])
buffer
用于讀取或操作二進制數據流的機制,實例類似整數數組,大小固定
Buffer.alloc()
Buffer.from()
Buffer.isBuffer()
Buffer.concat()
buf.length
buf.toString()
buf.fill()
buf.equals()
buf.indexOf()
buf.copy()
Stream
fs.createReadStream()
fs.createWriteStream()
events
大多數 Node.js 核心 API 構建于慣用的異步事件驅動架構,其中某些類型的對象(又稱觸發器,Emitter)會觸發命名事件來調用函數(又稱監聽器,Listener)。
emitter.addListener(eventName, listener)
emitter.emit(eventName[, ...args])
emitter.off(eventName, listener)
emitter.on(eventName, listener)
emitter.once(eventName, listener)
emitter.removeAllListeners([eventName])
emitter.removeListener(eventName, listener)
Like
Like
Love
Haha
Wow
Sad
Angry
總結
以上是生活随笔為你收集整理的nodejs怎么与c语言通信费是什么,NodeJS介绍与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业性特有的道德要求,什么是通信科
- 下一篇: php实现把es6转为es5,使用web