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目录的权限不够