日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
一些小眾卻有用的Node.js包

yargs

為淮上等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及淮上網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、淮上網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

yargs 是一個(gè)用來(lái)處理命令行參數(shù)的包,可以幫你處理自行設(shè)置的命令行標(biāo)志和輸入的任何類型的數(shù)據(jù),其中包括布爾值、浮點(diǎn)數(shù)和字符串等。這個(gè)包非常簡(jiǎn)單明了,不需要在項(xiàng)目中編寫大量的樣板代碼。

yargs 能夠幫你處理 “用法幫助” 輸出,可以輕松地告訴用戶在使用你程序時(shí)需要輸入哪些選項(xiàng),包括哪些是必選的。

 
 
 
 
  1. var argv = require('yargs') 
  2.     .usage('Usage: $0 -x [num] -y [num]') 
  3.     .demand(['x','y']) 
  4.     .argv; 
  5.   
  6. console.log('Pow(x, y):', Math.pow(argv.x, argv.y)); 

把上面的代碼保存為 index.js,然后在命令行中執(zhí)行 node index.js -x 3,會(huì)看到如下消息:

 
 
 
 
  1. Usage: index.js -x [num] -y [num] 
  2.  
  3. Options: 
  4.   -x                                   [required] 
  5.   -y                                   [required] 
  6.  
  7. Missing required argument: y 

yargs 能夠提示我們命令行中到底缺少什么參數(shù),而我們只需要簡(jiǎn)單的調(diào)用 .usage()和 .demand() 方法就行了。

toobusy

這是一個(gè)非常實(shí)用的包。它輪詢 Node 事件循環(huán)并跟蹤完成請(qǐng)求所需的時(shí)間,如果發(fā)現(xiàn)延遲時(shí)間太長(zhǎng),則 toobusy 會(huì)通知你,然后你就可以將 HTTP 503 "Service Unavailable" 狀態(tài)碼返回給客戶端。

這種處理是很重要的,因?yàn)榉?wù)器越忙,請(qǐng)求所等待的時(shí)間也就越長(zhǎng)。這很快就成為一個(gè)很復(fù)雜的問題,隨著時(shí)間的流逝會(huì)越來(lái)越嚴(yán)重。如果你聽之任之的話,那么服務(wù)將會(huì)崩潰。如果我們能及時(shí)的停止一些請(qǐng)求的處理,并返回 HTTP 503,這樣的話至少還能處理一些請(qǐng)求。

可以輕松的用 npm 命令安裝 toobusy:

 
 
 
 
  1. npm install toobusy 

然后把它和類似 Express 的東西集成在一起:

 
 
 
 
  1. var toobusy = require('toobusy'), 
  2.     express = require('express'); 
  3.      
  4. var app = express(); 
  5.      
  6. // 如果服務(wù)器壓力過(guò)大將會(huì)阻止請(qǐng)求 
  7. app.use(function(req, res, next) { 
  8.  if (toobusy()) { 
  9.   res.send(503, "Too many users!"); 
  10.  } else { 
  11.   next(); 
  12.  }  
  13. }); 
  14.    
  15. var server = app.listen(3000); 
  16.    
  17. process.on('SIGINT', function() { 
  18.  server.close(); 
  19.  toobusy.shutdown(); // 正常退出 
  20.  process.exit(); 
  21. }); 

不需要寫多少代碼,也不用太多的配置就能繼承到我們自己的項(xiàng)目中。

chalk

在命令行上很難開發(fā)出一個(gè)好用的用戶界面,因?yàn)橛糜诤陀脩艚换サ闹皇敲钚写翱凇D敲茨阍撊绾稳ヌ崾疽恍┲匾男畔⒛?在輸出的文本中添加格式不失為一種好方法。Express 就是一個(gè)很典型的例子,從它的輸出中,你可以很輕松地快讀找到重要的信息。

以下是 chalk 支持的樣式列表:

修飾符bold

  • underline
  • dim
  • reset
  • hidden
  • inverse
  • italic (并非所有環(huán)境都支持)
  • strikethrough (任何環(huán)境下都不支持)

顏色

  • red
  • black
  • green
  • white
  • yellow
  • blue (在 Windows 上會(huì)使用較亮的版本,因?yàn)槠胀ǖ乃{(lán)色很難辨認(rèn))
  • cyan
  • gray
  • magenta

背景顏色

  • bgBlue
  • bgBlack
  • bgRed
  • bgGreen
  • bgCyan
  • bgYellow
  • bgWhite
  • bgMagenta

雖然官方只支持這些顏色,但是任何符合 xterm 標(biāo)準(zhǔn)的終端都可以使用完整的 8 位色代碼。

只需要將字符串傳給用于著色或格式化的函數(shù)就能輕松的格式化這些文本。如果你需要讓用戶注意到嚴(yán)重錯(cuò)誤提示,可以用下面的格式:

 
 
 
 
  1. var chalk = require('chalk'); 
  2.  
  3. var str = chalk.red.bold('ERROR: ') + chalk.bold('Everything just blew up...'); 
  4. console.log(str); 

node-inspector

好用的調(diào)試器很難找,尤其是那些帶有好用的 GUI 的調(diào)試器,node-inspector 為你提供了一個(gè)網(wǎng)頁(yè) GUI 來(lái)幫助調(diào)試代碼。它有標(biāo)準(zhǔn)調(diào)試器的所有功能,例如斷點(diǎn)、單步執(zhí)行、退出代碼以及變量檢查等,另外還有一些不太常用的功能,但是這些功能非常有用,例如 CPU 和堆分析、網(wǎng)絡(luò)客戶端請(qǐng)求檢查以及實(shí)時(shí)編輯運(yùn)行代碼的功能。

node-inspector

不過(guò) node-inspector 只與 Chrome 和 Opera 兼容,因?yàn)樗褂昧薆link Developer Tools,并與Node兼容。

一直以來(lái)我非常依賴控制臺(tái)輸出進(jìn)行調(diào)試,這會(huì)花費(fèi)了大量的時(shí)間。使用 GUI 能夠大大的節(jié)省調(diào)試時(shí)間。

terminal-kit

如果你的 Node 程序需要在命令行下支持除簡(jiǎn)單的文本輸入輸出之外的其他操作,那么你應(yīng)該需要 terminal-kit。terminal-kit 簡(jiǎn)化了與用戶交互的許多東西,使你可以專注于在程序中開發(fā)重要的內(nèi)容。terminal-kit 的主要功能是:

  • 文字樣式(很像 chalk)
  • 編輯屏幕
  • 進(jìn)度條
  • 用戶輸入

有很多適合終端工具包的例子。例如,如果你需要從網(wǎng)上下載一些內(nèi)容,那么就需要向用戶顯示進(jìn)度條。下面的代碼用來(lái)顯示虛擬進(jìn)度條:

 
 
 
 
  1. var terminal = require( 'terminal-kit' ).terminal; 
  2.  
  3. var progressBar; 
  4. var progress = 0; 
  5.  
  6. function updateProgress() { 
  7.     // 產(chǎn)生一個(gè)隨機(jī)的進(jìn)度值 
  8.     progress += Math.random() / 10; 
  9.     progressBar.update(progress); 
  10.      
  11.     // 檢查是否完成 
  12.     if (progress >= 1) { 
  13.         setTimeout(function() { 
  14.          terminal('\n'); 
  15.          process.exit(); 
  16.         }, 250); 
  17.     } 
  18.     else { 
  19.         setTimeout(updateProgress, 100 + Math.random() * 500); 
  20.     } 
  21.  
  22. progressBar = terminal.progressBar({ 
  23.     width: 80, 
  24.     title: 'Downloading file:', 
  25.     eta: true, 
  26.     percent: true 
  27. }); 
  28.  
  29. updateProgress(); 

上面的代碼會(huì)產(chǎn)生下面這種效果:

terminal-kit進(jìn)度欄

validator

validator 可以幫你進(jìn)行一系列常見的字符串驗(yàn)證(例如:電子郵件地址、電話號(hào)碼、IP地址等)。每當(dāng)你從用戶那里獲得輸入時(shí),這樣的軟件包都是必不可少的。用戶會(huì)犯錯(cuò)誤,并會(huì)在文本框中輸入一些非常奇怪的東西,所以需要一個(gè)驗(yàn)證輸入的包,避免數(shù)據(jù)損壞或服務(wù)器崩潰。

以下是一些常用的驗(yàn)證器:

  • isEmail(str [, options])
  • isIP(str [, version])
  • isMobilePhone(str, locale)
  • isURL(str [, options])

validator也提供檢測(cè)器,可以對(duì)輸入字符串進(jìn)行規(guī)范化、刪除或轉(zhuǎn)義。例如對(duì)用戶提交的內(nèi)容進(jìn)行清理,避免他們輸入惡意的 HTML 或 JavaScript 代碼。

下面是常用的檢測(cè)器:

  • blacklist(input, chars)
  • escape(input)
  • normalizeEmail(email [, options])
  • whitelist(input, chars)

normalizeEmail() 方法它能夠確保電子郵件地址都是小寫字母,甚至可以刪除需要忽略的字符。假設(shè)你有電子郵件 abc.def+ghi@163.com,normalizeEmail() 會(huì)將其標(biāo)準(zhǔn)化為 abcdefghi@163.com。

formidable

formidable 可以幫你處理文件上傳的每個(gè)步驟,包括 multi-part 解析器、把文件寫入磁盤以及錯(cuò)誤處理等。這是我最喜歡的一個(gè)包,如果你不想重新發(fā)明輪子可以試一試。

下面是一個(gè)在普通 HTTP 服務(wù)器上使用 formidable 的例子,代碼是從包本身中給出的示例修改而來(lái)的:

 
 
 
 
  1. var http = require('http'); 
  2. var util = require('util'); 
  3. var formidable = require('formidable'); 
  4. var path = require('path'); 
  5.  
  6. var PORT = 8080; 
  7.  
  8. var root = path.join(__dirname, '../'); 
  9. exports.dir = { 
  10.  root    : root, 
  11.  lib     : root + '/lib', 
  12.  fixture : root + '/test/fixture', 
  13.  tmp     : root + '/test/tmp', 
  14. }; 
  15.  
  16. var server = http.createServer(function(req, res) { 
  17.   if (req.url == '/') { 
  18.     res.writeHead(200, {'content-type': 'text/html'}); 
  19.     res.end( 
  20.       '' + 
  21.       '
    ' + 
  22.       '
    ' + 
  23.       '' + 
  24.       '' 
  25.     ); 
  26.   } else if (req.url == '/post') { 
  27.     var form = new formidable.IncomingForm(), 
  28.         fields = []; 
  29.  
  30.     form 
  31.       .on('error', function(err) { 
  32.         res.writeHead(200, {'content-type': 'text/plain'}); 
  33.         res.end('error:\n\n' + util.inspect(err)); 
  34.       }) 
  35.       .on('field', function(field, value) { 
  36.         console.log(field, value); 
  37.         fields.push([field, value]); 
  38.       }) 
  39.       .on('end', function() { 
  40.         console.log('-> post done'); 
  41.         res.writeHead(200, {'content-type': 'text/plain'}); 
  42.         res.end('received fields:\n\n ' + util.inspect(fields)); 
  43.       }); 
  44.     form.parse(req); 
  45.   } else { 
  46.     res.writeHead(404, {'content-type': 'text/plain'}); 
  47.     res.end('404'); 
  48.   } 
  49. }); 
  50.  
  51. server.listen(PORT); 
  52.  
  53. console.log('listening on http://localhost:' + PORT + '/'); 

shelljs

shelljs是一個(gè)能夠讓你在任何系統(tǒng)上使用通用的Unix命令的包,不管是 Windows、Linux 還是 Mac。這樣你就不用再為項(xiàng)目分別編寫 bash 和批處理腳本。shelljs 提供了類似 Unix 的環(huán)境,如果你需要編寫腳本來(lái)運(yùn)行測(cè)試、提交代碼或在服務(wù)器上啟動(dòng),則只需編寫一次即可。

可以用命令執(zhí)行類似操作:

 
 
 
 
  1. require('shelljs/global'); 
  2.  
  3. ls('*.js').forEach(function(file) { 
  4.  sed('-i', 'BUILD_VERSION', 'v2.0.3', file); 
  5.  sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file); 
  6.  sed('-i', /.*REPLACE_THIS_LINE.*\n/, cat('macro.js'), file); 
  7. }); 

執(zhí)行常見命令:

 
 
 
 
  1. require('shelljs/global'); 
  2.  
  3. mkdir('-p', 'release/data'); 
  4. cp('-R', 'data/*', 'release/data'); 

檢查可用的二進(jìn)制文件:

 
 
 
 
  1. require('shelljs/global'); 
  2.  
  3. if (!which('git')) { 
  4.  echo('This script requires git!'); 
  5.  exit(1); 

甚至可以像在 bash 腳本中一樣運(yùn)行命令:

 
 
 
 
  1. if (exec('git commit -am "Release commit"').code !== 0) { 
  2.   echo('Error: Git commit failed!'); 
  3.   exit(1); 

本文名稱:一些小眾卻有用的Node.js包
分享路徑:http://www.5511xx.com/article/coghopc.html