国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

全面掌握Node命令選項(xiàng)

raise_yang / 3203人閱讀

摘要:譯者按作為開發(fā)者,有必要全面了解一下命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。命令有很多選項(xiàng),可以用于調(diào)試代碼。這篇博客全面介紹了命令,可以提高大家的工作效率。訪問官方文檔,可以查看命令的所有選項(xiàng)。

譯者按: 作為Node.js開發(fā)者,有必要全面了解一下Node命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。

原文: Mastering the Node.js CLI & Command Line Options

譯者: Fundebug

為了保證可讀性,本文采用意譯而非直譯。

Node命令有很多選項(xiàng),可以用于調(diào)試代碼。這篇博客全面介紹了Node命令,可以提高大家的工作效率。

查看Node命令選項(xiàng)

使用man命令可以獲取Node命令的所有選項(xiàng):

$ man node

Usage: node [options] [ -e script | script.js ] [arguments]  
       node debug script.js [arguments] 

Options:  
  -v, --version         print Node.js version
  -e, --eval script     evaluate script
  -p, --print           evaluate script and print result
  -c, --check           syntax check script without executing
...

有Usage信息可知,所有選項(xiàng)都是可選的,且需要放在腳本之前。

index.js如下:

console.log(new Buffer(100))  

--zero-fill-buffers選項(xiàng)將所有新創(chuàng)建Buffer初始化為0:

--zero-fill-buffers
              Automatically zero-fills all newly allocated Buffer and SlowBuffer instances.

使用--zero-fill-buffers選項(xiàng)的命令如下

$ node --zero-fill-buffers index.js

這樣的話,輸出結(jié)果全部為0,而不是隨機(jī)的序列:

  
Node命令常用選項(xiàng) --version-v

執(zhí)行 node --version或者 node -v,可以查看Node版本信息。-v--version的縮寫,其他選項(xiàng)也有對(duì)應(yīng)的縮寫。

$ node -v
v6.10.0  
--eval-e

使用--eval 選項(xiàng),可以直接在終端執(zhí)行Node.js代碼。REPL中定義的模塊,例如httpfs等都可以直接使用,不需要require。

$ node -e "console.log(3 + 2)"
5  
--print-p

--print選項(xiàng)與--eval選項(xiàng)的功能類似,但是--print選項(xiàng)可以打印表達(dá)式的結(jié)果。--eval選項(xiàng)使用console.log的話可以達(dá)到相同的效果。

$ node -p "3 + 2"
5  
--check-c

Node v4.2.0之后才有

使用--check,則會(huì)檢查代碼的語法(并不會(huì)執(zhí)行代碼)。

index.js如下:

console.log(new Buffer(100)  

可知,代碼中缺少了一個(gè)),如果使用node index.js執(zhí)行的話則會(huì)出錯(cuò):

/Users/gergelyke/Development/risingstack/mastering-nodejs-cli/index.js:1
(function (exports, require, module, __filename, __dirname) { console.log(new Buffer(100)
                                                                                        ^
SyntaxError: missing ) after argument list  
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)

使用node --check index.js命令,可以在不執(zhí)行代碼的情況下檢查到同樣的錯(cuò)誤。兩者輸出結(jié)果非常相似,但是使用--check選項(xiàng)時(shí)沒有執(zhí)行代碼,因此沒有錯(cuò)誤棧(stack trace):

/Users/gergelyke/Development/risingstack/mastering-nodejs-cli/index.js:1
(function (exports, require, module, __filename, __dirname) { console.log(new Buffer(100)
                                                                                        ^
SyntaxError: missing ) after argument list  
    at startup (bootstrap_node.js:144:11)
    at bootstrap_node.js:509:3
--inspect[=host:port]

node v6.3.0之后才有

使用node --inspect選項(xiàng)可以在指定的地址(host)和端口(port)開啟監(jiān)控器。如果沒有指定地址和端口,則默認(rèn)為127.0.0.1:9229。Chrome調(diào)試工具(Chrome Debugging Protocol)通過該端口綁定Node.js進(jìn)程。

--inspect-brk[=host:port]

node v7.6.0之后才有

--inspect-brk選項(xiàng)與--inspect選項(xiàng)的功能相同,只是它會(huì)在代碼第一行就暫停。

$ node --inspect-brk index.js 
Debugger listening on port 9229.  
Warning: This is an experimental feature and could change at any time.  
To start debugging, open the following URL in Chrome:  
    chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/86dd44ef-c865-479e-be4d-806d622a4813

運(yùn)行命令之后,使用Chrome瀏覽器訪問輸出中提示的URL地址chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/86dd44ef-c865-479e-be4d-806d622a4813就可以調(diào)試Node.js代碼了。

--zero-fill-buffers

node v6.0.0之后才有

使用--zero-fill-buffers選項(xiàng)可以使所有新創(chuàng)建的Buffer初始化為0。 這樣做可以防止內(nèi)存中的敏感信息泄露。

注意,僅當(dāng)需要防止內(nèi)存敏感信息泄露時(shí)才使用該選項(xiàng),因?yàn)樗鼤?huì)嚴(yán)重影響代碼性能。

另外,下面這些Buffer構(gòu)造器在node v6.0.0已經(jīng)棄用了。

Also note, that some Buffer constructors got deprecated in v6.0.0:

new Buffer(array)

new Buffer(arrayBuffer[, byteOffset [, length]])

new Buffer(buffer)

new Buffer(size)

new Buffer(string[, encoding])

所以,應(yīng)該使用 Buffer.alloc(size[, fill[, encoding]]), Buffer.from(array), Buffer.from(buffer), Buffer.from(arrayBuffer[, byteOffset[, length]])Buffer.from(string[, encoding]).

關(guān)于Node.js的內(nèi)存安全問題,可以查看博客Exploiting Buffer

--prof-process

使用 --prof-process選項(xiàng),Node.js進(jìn)程將輸出V8引擎的性能記錄信息(profiler)

首先,使用--prof選項(xiàng)執(zhí)行代碼:

node --prof index.js  

運(yùn)行之后,工作目錄中將生成一個(gè)新文件,前綴為isolate-

然后,使用--prof-process選項(xiàng)執(zhí)行代碼:

node --prof-process isolate-0x102001600-v8.log > output.txt  

output.txt文件中有V8引擎的性能記錄信息,比如: C++代碼花了多少時(shí)間,JavaScript代碼花了多少時(shí)間,那個(gè)函數(shù)調(diào)用花了最多時(shí)間。如下:

[C++]:
   ticks  total  nonlib   name
     16   18.4%   18.4%  node::ContextifyScript::New(v8::FunctionCallbackInfo const&)
      4    4.6%    4.6%  ___mkdir_extended
      2    2.3%    2.3%  void v8::internal::String::WriteToFlat(v8::internal::String*, unsigned short*, int, int)
      2    2.3%    2.3%  void v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::ObjectEvacuationStrategy<(v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::ObjectContents)1>::VisitSpecialized<24>(v8::internal::Map*, v8::internal::HeapObject**, v8::internal::HeapObject*)

[Summary]:
   ticks  total  nonlib   name
      1    1.1%    1.1%  JavaScript
     70   80.5%   80.5%  C++
      5    5.7%    5.7%  GC
      0    0.0%          Shared libraries
     16   18.4%          Unaccounted

訪問官方文檔,可以查看Node命令的所有選項(xiàng)。

V8引擎選項(xiàng)

使用--v8-options選項(xiàng)可以打印所有的V8引擎選項(xiàng)。

目前,V8引擎提供了上百個(gè)選項(xiàng),這篇博客只是介紹了其中幾個(gè)。這些選項(xiàng)可以大大地改變V8引擎的行為,因此需要慎重使用。

--harmony

使用--harmony選項(xiàng),則在代碼中可以使用所有harmony特性(即正在開發(fā)的特性,例如在低版本的Node中使用ES6特性)。

--max_old_space_size

使用--max_old_space_size選項(xiàng),可以調(diào)整老生代內(nèi)存空間(old space,用于儲(chǔ)存存活時(shí)間較長(zhǎng)或常駐內(nèi)存的對(duì)象)的最大值,這個(gè)將直接影響Node.js進(jìn)程可以使用的內(nèi)存大小。在內(nèi)存較小的情況下,這個(gè)選項(xiàng)將非常方便,因?yàn)槲覀兛梢韵拗芅ode.js進(jìn)程對(duì)內(nèi)存的使用。

--optimize_for_size

使用--optimize_for_size選項(xiàng),V8引擎會(huì)優(yōu)化內(nèi)存空間的使用,這樣很可能會(huì)降低應(yīng)用的執(zhí)行速度。同樣,在內(nèi)存較小的情況下,這個(gè)選項(xiàng)將非常方便。

環(huán)境變量 NODE_DEBUG=module[,…]

設(shè)置NODE_DEBUG環(huán)境變量可以打印Node.js核心模塊的調(diào)試信息。例如,下面的命令可以查看module模塊的調(diào)試信息(你也可以查看其它模塊,例如http, fs等):

$ NODE_DEBUG=module node index.js

輸出如下(可知,module模塊負(fù)責(zé)加載代碼調(diào)用的各個(gè)模塊):

MODULE 7595: looking for "/Users/gergelyke/Development/risingstack/mastering-nodejs-cli/index.js" in ["/Users/gergelyke/.node_modules","/Users/gergelyke/.node_libraries","/Users/gergelyke/.nvm/versions/node/v6.10.0/lib/node"]  
MODULE 7595: load "/Users/gergelyke/Development/risingstack/mastering-nodejs-cli/index.js" for module "."  
NODE_PATH=path

使用NODE_PATH,可以指定Node.js進(jìn)程搜索模塊的額外目錄。

OPENSSL_CONF=file

使用OPENSSL_CONF,可以指定OpenSSL的配置文件。

訪問官方文檔,可以查看Node命令的所有選項(xiàng)。

歡迎加入我們Fundebug的Node.js技術(shù)交流群: 177654062

版權(quán)聲明:
轉(zhuǎn)載時(shí)請(qǐng)注明作者Fundebug以及本文地址:
https://blog.fundebug.com/201...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69977.html

相關(guān)文章

  • 全面掌握Node命令選項(xiàng)

    摘要:譯者按作為開發(fā)者,有必要全面了解一下命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。命令有很多選項(xiàng),可以用于調(diào)試代碼。這篇博客全面介紹了命令,可以提高大家的工作效率。訪問官方文檔,可以查看命令的所有選項(xiàng)。 譯者按: 作為Node.js開發(fā)者,有必要全面了解一下Node命令的所有選項(xiàng),這樣在關(guān)鍵時(shí)刻才能得心應(yīng)手。 原文: Mastering the Node.js CLI & Comma...

    guqiu 評(píng)論0 收藏0
  • 掌握這條Linux主機(jī)sar命令,服務(wù)器性能問題一網(wǎng)打盡

    摘要:它的英文全稱是,意為系統(tǒng)活動(dòng)情況報(bào)告。是目前上最為全面的系統(tǒng)性能分析工具之一,通過該命令可以全面地獲取系統(tǒng)的運(yùn)行隊(duì)列磁盤讀寫分區(qū)交換區(qū)內(nèi)存中斷和網(wǎng)絡(luò)等性能數(shù)據(jù)。因此可以用它來找出一些性能問題,幫助我們提升服務(wù)器的性能做出很好的決策指引。首先我自己都感到不好意思,這個(gè)命令幾乎沒有用過(尷尬)。最近在翻查L(zhǎng)inux的一些命令,發(fā)現(xiàn)自己居然對(duì)它很陌生,所以趕緊惡補(bǔ)一下,擴(kuò)充一下自己。sar它的英文...

    Tecode 評(píng)論0 收藏0
  • Git 基本命令,你都學(xué)廢了嗎

    摘要:掌握了命令行,使用圖形化工具如探囊取物。管理的文件狀態(tài)已修改已暫存已提交。由于我們使用了命令,但并未創(chuàng)建新的分支,所以創(chuàng)建了一個(gè)匿名分支。省略遠(yuǎn)程分支名表示將本地分支推送到與之存在追蹤關(guān)系的遠(yuǎn)程分支通常同名。概述此篇博文意在讓新手快速上手 Git,滿足工作中的基本需求,而非梳理細(xì)節(jié)。后續(xù)會(huì)再開一個(gè)系列,來探討 Git 細(xì)節(jié)問題。一、Git 的安裝這部分網(wǎng)站上資料非常多,根據(jù)自己的系統(tǒng)版本查找...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<