1. 如何配置bowerrc文件代理
安裝之前檢查nodejs如果沒安裝nodejs按照以下步驟安裝$su-$yuminstallopenssl-devel$cd/usr/local/src$wgetprivate-bower-config.json將以下內容粘貼進去:{"port":5678,"registryFile":"./private-bower/bowerRepository.json","disablePublic":false,"publicRegistry":"/packages/","repositoryCache":{"git":{"enabled":true,"cacheDirectory":"./private-bower/gitRepoCache","host":"localhost","port":6789},"svn":{"enabled":true,"cacheDirectory":"./private-bower/svnRepoCache","host":"localhost","port":7891}},"log4js":{"enabled":true,"configPath":"./private-bower/log4js.conf.json"}}$vim/data/private-bower/log4js.conf.json{"appenders":[{"type":"dateFile","filename":"./private-bower/private-bower.log","pattern":"-yyyy-MM-dd","alwaysIncludePattern":false},{"type":"console"}],"replaceConsole":true}啟動private-bower$sudosu-$cd/data$private-bower--config./private-bower-config.json[2014-06-3010:00:22.481][INFO]console-[bower]Refreshingpublicpackages[2014-06-3010:00:22.512][INFO]console-[bower]Bowerserverstartedonport5678[2014-06-3010:00:22.538][INFO]console-[bower]Startinggitcacheserver[2014-06-3010:00:22.543][INFO]console-[bower]Startingsvncacheserver[2014-06-3010:01:09.167][INFO]console-[bower]Loadedpublicpackages確保private-bower正常啟動:打開一個新窗口來訪問:$lynx會顯示:ForkmeonGitHubPrivateBower____________________.LoadingPackages{{package.name}}hits:{{package.hits}}{{package.repo}}CreatedbyBarnaTothBarnaTóth如果是這樣,就安裝完畢了客戶端測試$sudosu-$npminstall-gbower$su-wlsuser$bowerhelp$vim.bowerrc{"registry":"http://:5678"}$cd$bowerinstalljquery
2. 如何提高NodeJS程序的穩定性
我覺得我們程序首先功能應該是獨立的,就是一個功能出異常了,不應該去影響另外
一個正常的功能,不應該將整個程序都崩潰掉,其次,即使是程序崩潰了,我們也應該有一個讓程序自動啟動,另外,應該去記錄日誌,方便我們跟蹤問題。我覺得
主要可以從以下方面提高nodejs 穩定性:
1)保持良好的代碼結構:
我們知道node是單線程,非阻塞io,默認就是非同步,通過回調的方式處理後面的流程,如果嵌套的層次太多了,勢必會引起代碼邏輯結構的混亂,也不利於維護和升級,可以採用async這個非同步流程式控制制模塊,來理清我們的代碼邏輯。
2)使用 process.on('uncaughtException', function(err){...}); 來處理未被捕捉的錯誤。
3)使用try~catch 來捕獲異常:
這個只能解決一部分問題,不是萬能的,在上面說到因為node是單線程,非阻塞io,默認就是非同步,通過回調的方式處理後面的流程,try~catch
是不能捕獲的callback 裡面的error的錯誤的,怎麼捕獲到callback裡面的錯誤呢 ? 可以採用domain模塊
4)使用domain模塊來處理程序的異常
先看看對domain的解釋:domain是 EventEmitter類的一個子類。監聽它的error事件來處理它捕捉到的錯誤。 它
提供了一種方式,即以一個單一的組的形式來處理多個不同的IO操作。如果任何一個注冊到domain的事件觸發器或回調觸發了一個『error』事件,或
者拋出一個錯誤,那麼domain對象將會被通知到。而不是直接讓這個錯誤的上下文從
`process.on('uncaughtException')'處理程序中丟失掉,也不會致使程序因為這個錯誤伴隨著錯誤碼立即退出。
5)使用log4js 模塊記錄日誌
log4js 是一個非常強大的日誌管理工具,在可以看看github這個項目: https://github.com/nomiddlename/log4js-node
6)使用forever 模塊來管理nodejs
forever 是服務端管理nodejs 的一個模塊,一個命令行工具,能夠啟動,停止app 應用。forever完全是基於命令行操作,在forever進程管理之下,創建node的子進程,通過monitor監控node子進程的運行情況,一旦文件更新,或者進程掛掉,forever會自動重啟node伺服器,確保應用正常運行。非常的好用.
3. 如何查看node js 的log
日誌對任何的應用來說都是至關重要的。在Nodejs中使用express框架並沒有自帶的日誌模塊,我們可以選擇log4js來完成日誌記錄的功能。
4. Nodejs的運行日誌怎麼做
有專門的日誌包的,引用下就行了,log4.js
5. 使用Node.js的優勢和劣勢都有哪些
NodeJs的優勢:
現在的很多的伺服器端的語言(PHP,java,ASP.net),有什麼問題呢,現在的伺服器端的語言在用戶訪問伺服器時,為每個用戶鏈接創建了一個線程,但每個線程大約要耗費2M的內存,如果一個8G內存的伺服器,也就能鏈接4000個左右的用戶,如果用戶的鏈接數較大,就必須增加伺服器的數量,而且現在用戶的鏈接方式有很多(如app,網頁同時訪問),這就又涉及到伺服器共享的問題,所以伺服器怎麼支持最大的同時鏈接用戶量就成了一個問題;
NodeJS修改了客戶端到伺服器端的鏈接方法,解決了這個問題,他不在為每個客戶端創建一個新的線程,而是為每個客戶端鏈接出發一個NodeJs內部進行處理的事件,所以NodeJS具備同時處理多達幾萬個用戶的客戶端鏈接的能力;
NodeJS適合開發的應用程序:
當應用程戚清序需要處理大量並發的輸入/輸出,而在向客戶端發出響應之前,應用程序內部並不需要進行非常復雜的處理的時候,我們應該考慮使用NodeJs來進行應用程序的開發,例如:
1、聊天伺服器:如果聊天的人很多,用戶的與伺服器之間的並發鏈接量很大,但是伺服器端的數據處理並不復雜;
2、綜合類服務網站和電子商務網站的伺服器:在這類網站中的伺服器端,往往可能每秒存內可以接受多達上千條的數據並且需要將這些數據寫入資料庫中,NodeJs可以通過其隊列機制將這些數據迅速寫入緩存區中,然後再通過每一個單獨的處理從緩存區中取出這些數據並將其寫入資料庫中,如果是其他的伺服器(如Apache伺服器或Tomcat伺服器)的話,由於這些伺服器採用的是阻塞型I/O機制,因此每條數據寫入到資料庫中都要等待一段時間(等上一條寫完,才能寫下一條),但是NodeJs使用的是非阻塞的I/O機制,因此可以實現這些數據到資料庫中的寫入,而不必再為每條數據的寫入而等待一段時間;
總結:
一個規模稍微大點的系統都不是一種開發語言可以搞定的,往往是幾種混雜一起,比如c、c做伺服器端開發,java做業務邏輯,php等做前端展示,此外還需要消息中間件等等。
nodejs可以很快地在伺服器端做原型(原來只有c系和java等能做的事情,性能還很高),而且代碼量相對會少很多;另一點是它的語法優勢,js閉包等。但它不太適合做cpu密集型處理的工作,只能繞著彎去解決,據說這次QCon會有人分享這方面的研究成果,可以關注下隱者。
每種語言都有它適合的領域,沒必要強求一門語言可以解決所有高攜前事情,擁有其它語言的特性,只有不斷的tradeoff把系統做出來才是目標。這些都是叢書上看到總結的,還望指正
6. 如何使用Vue2做服務端渲染
服務端:Nodejs(v6.3)
前端框冊啟架 Vue2.1.10
前端構建工具:webpack2.2 && gulp
代碼檢查:碼姿如eslint
源碼:es6
前端路由:vue-router2.1.0
狀遲啟態管理:vuex2.1.0
服務端通信:axios
日誌管理:log4js
項目自動化部署工具:jenkins
7. nodejs log4js category這個屬性有什麼用
var XXX = log4js.getLogger
(『category的名稱要和這里的一樣,日誌沒法寫入文檔』)
8. node.js在什麼工具上有提示
開發工具
1.WebStorm,毫無疑問非他莫屬,跨平台,強大的代碼提示,支持Nodejs調試,此外還支持vi編輯模式,這點我很喜歡。
2.做些小型項目用Sublime Text。
3.Browserify:將你的nodejs模塊應用到瀏覽器中
4.nvm:nodejs版本管理工具,你可能會用到多個nodejs版本(如v0.11.x支持generator的nodejs和stable的v0.10.x版本),用它可以方便切換
測試&自動化
1.mocha:一個簡單、靈活有趣的 JavaScript 測試框架(類似的還有should,supretest)
2.gruntjs:迄今為止node世界中最流行的構建工具
3.gulp.js:宣稱取代gruntjs的東東
4.node-inspector:nodejs代碼調試神奇,結合瀏覽器Chrome-Debug,輕量,方便
5.node-dev:代碼改了,還在不斷的按Ctrl+C嗎?快試試這個工具吧,使用fs.watch()監控項目目錄,代碼變化後,自動重啟項目
6.pm2:替代node-forever的新秀
第三方開發包
1.Edge.js:讓.NET和nodejs在同一進程中運行,相互調用(神器的東西啊)
2.Express,優秀的Web開發框架
3.moment,強大的日期處理庫
4.cheerio,jQuery核心選擇器的實現,可跑在server端,類似jsdom,但比jsdom輕量很多
5.async,非同步處理
6.shortid,url友好的unique id
7.log4js,日誌記錄,穩健的系統離不開日誌記錄
8.colors,便於在console中輸出不同顏色的文本(tinycolor,更輕量級的控制台顏色設置)
9.xmlrpc,方便xml遠程過程調用,比如寫metaweblog的時候可能會用到
10.commander:編寫命令行應用必備,簡化各種命令解析操作
11.koa:Express的接班人
12.chokidar:完善的文件、文件夾監控包,解決了fs.watch諸多不完善的地方,可以進行子目錄的監控,相當方便
13.axon:消息、常見socket模式的上層實現,簡化socket開發,TJ大神作品
14.cron:採用crontab語法的任務計劃包
15.open:使用本地應用打開文件或者url
16.term-list:cli輔助選擇操作
17.deepmerge: js對象深度合並
18.loadsh,underscore:js常用工具庫,對象合並,排序演算法,map,rece等
19.iconv-lite:純js實現的編碼轉換庫,開發爬蟲等場景會經常用到。
20.request: 更簡單的發送http請求
21.needle:輕量級的http client模塊,集成了iconv-lite,跟request類似
22.superagent:類似request,使用風格跟jQuery神似。
23.mobile-agent: 判斷是手機瀏覽器的訪問還是pc端的訪問,對做web很有用哦。
24.is-type-of:js輔助庫,判斷對象的類型
Web框架&工具
1.StrongLoop
2.KeystoneJS
3.CompoundJS
3.Geddy
9. node用log4js輸出日誌能輸出行號,和具體文件名嗎
var log4js = require('');
log4js.configure({
appenders: [
{ type: 'console' }, //控制台輸出
{
type: 'file', //文件輸出
filename: '',
maxLogSize: 1024,
backups:3,
category: 'normal'
}
]
});
var logger = log4js.getLogger('normal');
logger.setLevel('INFO');
...
//app.use(...)
//app.use(...)
app.use(log4js.connectLogger(logger, {level:log4js.levels.INFO}));
app.use(app.router);
10. nodejs, log4js為什麼生成的日誌文件是空的。。
很有可能logs目錄的許可權不夠