nodejs为什么
为什么要用nodejs服务:
总的来说,Node.js的应用场景
1) 适合
JSON APIs——构建一个Rest/JSON API服务,Node.js可以充分发挥其非阻塞IO模型以及JavaScript对JSON的功能支持(如JSON.stringfy函数)
单页面、多Ajax请求应用——如Gmail,前端有大量的异步请求,需要服务后端有极高的响应速度
基于Node.js开发Unix命令行工具——Node.js可以大量生产子进程,并以流的方式输出,这使得它非常适合做Unix命令行工具
流式数据——传统的Web应用,通常会将HTTP请求和响应看成是原子事件。而Node.js会充分利用流式数据这个特点,构建非常酷的应用。如实时文件上传系统transloadit
准实时应用系统——如聊天系统、微博系统,但Javascript是有垃圾回收机制的,这就意味着,系统的响应时间是不平滑的(GC垃圾回收会导致系统这一时刻停止工作)。如果想要构建硬实时应用系统,Erlang是个不错的选择
2) 不适合
CPU使用率较重、IO使用率较轻的应用——如视频编码、人工智能等,Node.js的优势无法发挥
简单Web应用——此类应用的特点是,流量低、物理架构简单,Node.js无法提供像Ruby的Rails或者Python的Django这样强大的框架
NoSQL + Node.js——如果仅仅是为了追求时髦,且自己对这两门技术还未深入理解的情况下,不要冒险将业务系统搭建在这两个漂亮的名词上,建议使用MySQL之类的传统数据库
如果系统可以匹配Node.js的适用场景,那么是时候采取具体的措施来说服老板了。
说服自己老板采用Node.js的方式
构建一个简单的原型——花一周时间构建系统某一部分的原型是非常值得的,同时也很容易和老板在某一点达成一致,等到系统真的在某一部分应用了Node.js,就是打开局面的时候
寻找开发者——首先JavaScript语言的普及度很高,一般公司都不乏Web前端工程师,而此类工程师的学习门槛也非常低。这就意味着Node.js很容易招人,或者公司就隐藏了一些高手
强大的社区支持——Node.js社区非常活跃,吸引很多优秀的工程师,这就意味着公司可以很容易从社区得到免费或者付费的支持
系统性能考虑——JavaScript引擎Google V8,加之原生异步IO模型,使得Node.js在性能的表现非常出色,处理数以千计的并发请求非常轻松
nodejs官方为什么推荐jade:
Jade有两点是超出传统模板技术的。
第一、简洁。
注意,简洁并非单指更少的符号,而是看是否能match你的需要。Jade强制的缩进格式能凸显html的结构,而对于前端来说,最重要的任务恰恰是处理结构,而不像一般的html author那样是处理内容。反过来说,假如你的主要任务是处理内容,比如写作blog之类的,那你应该用wiki或者markdown之类的,而不应该用Jade。
第二、html-aware
传统模板技术其实是通用模板,即模板引擎并不care你输出的是html还是其他格式的文本。而Jade专为HTML设计,因此可以做许多传统模板做不到的专门针对html的优化。举个几个简单的例子:
1. 决定如何输出属性(当属性赋值为null/false时不输出属性,为true时只需属性不需要值,这在传统模板里写起来很麻烦、代码难看易出错)
2. 自动产生well-formed结构(甚至可决定是否要输出结束标签,而传统模板理论上也做不到这点,除非引入额外的html parse或tidy)
3. 换行处理,避免产生额外的空白节点
4. 对输出的变量自动进行特殊字符的encode
当然,这些ejs或传统模板也有能实现的,但是用起来感觉都很挫。
实际上,Jade在这方面其实做得还不够好(我打算顺着这个思路做个开源的项目),但是比那些传统模板还是要优雅多了。
为什么我在sumblime安装nodejs插件,Ctrl+b后没有输出:
打开文件“Nodejs.sublime-build”,将代码 "encoding": "cp1252" 改为 "encoding": "utf8" ,将代码 "cmd": ["taskkill /F /IM node.exe & node", "$file"] 改为 "cmd": ["node", "$file"] (如果不行就改为["D:\\Program Files\\nodejs\\node.exe", "$file"]试试)
打开文件“Nodejs.sublime-settings”,将代码 "node_command": false改为 "node_command": "D:\\Program Files\\nodejs\\node.exe" ,(自己安装nodejs的路径)将代码 "npm_command": false 改为 "npm_command": "D:\\Program Files\\nodejs\\npm.cmd" ,保存文件
为什么安装的nodejs npm不能用:
网上抓取和解析html的框架一抓一大把,各种工具直接拿来用就行了,比较省心。
缺点:首先速度/效率很成问题,有一次下载电影海报的时候,由于是crontab定期执行,也没做优化,开的php进程太多,直接把内存撑爆了。然后语法方面也很拖沓,各种关键字 符号 太多,不够简洁,给人一种没有认真设计过的感觉,写起来很麻烦。
nodejs为什么我delete总是Cannot GET: 没有任何可比性
nodejs 使用redis 为什么不用连接池:
nodejs是个单线程的过程,异步处理很方便,redis又支持pipelining,通过异步处理,可以在复用一个连接的情况下完成大部分任务。返回顺序上,redis的请求永远都是先请求的先返回,所以负责发送的程序在发送的时候记个序号,然后按序号等相应返回结果就行了。不过吧,我觉得如果要用BRPOP这样的命令,没有连接池肯定不行啊……还有如果要用PUB/SUB的话,Subscribe也要占一个连接。
一般考虑用单连接还是多连接,主要看两个问题:
1. 我自己的程序是多线程还是单线程,如果是多线程,用多个连接、每个线程一个连接,编程起来要简单很多,可以直接使用同步socket的方式;单线程一般本身就是多路复用,用多个连接跟使用pipelining的编程复杂度是一样的。
2. 服务器端使用多个连接是否可以提高性能。这个取决于服务器端对pipelining(或者multiplexing)的支持。redis对pipelining的支持很好,用多个连接完全不能比单个连接快,只会占用更多的资源,所以尽量应当使用单个连接。而MySQL这样的协议对pipelining比较不友好,它是有状态转移的,在处理一个SQL的过程中可能需要发送/取回多次数据,这样只能一次处理一个SQL,用多个连接就可以有效提高并发度。其他协议也是一样的,比如HTTP/1.1虽然支持pipelining但是只能一个一个结果返回,而HTTP/2.0对multiplexing的支持很好,这样HTTP/1.1就应当使用多个连接,而HTTP/2.0就可以使用单连接。
nodejs 接收 post 不知道为什么 绑定 end 不是执行一次: 新建1个文件,如:index.js然后复制1下的内容到你的这个文件中varhttp=require(http);varserver=http.createServer();varquerystring=require(querystring);varfirstPage=function(res){res.writeHead(200,{Content-Type:text/html});varhtml=htmlbody+formaction=/loginmethod=post+name:inputtype=textname=name/br+password:inputtype=passwordname=pwd/br+inputtype=submitvalue=login+/form+/body/html;res.end(html);varlogin=function(req,res){varinfo=;req.addListener(data,function(chunk){info+=chunk;.addListener(end,function(){info=querystring.parse(info);if(info.name==ainfo.pwd==1){res.end(loginsuccess+info.name);}else{res.end(loginfailed+info.name);varrequestFunction=function(req,res){if(req.url==/){returnfirstPage(res);if(req.url==/login){if(req.method!=POST){return;returnlogin(req,res);console.log(req,res);server.on(request,requestFunction);server.listen(80,0.0.0.0);console.log(Serverrunningat
如果用yaf,为什么不用nodejs,python那种常驻内存的代码:
laruence对php语言层面很熟悉,整个Yaf出来也是很顺手的事情。
语言层面的性能制约现在已经很少了,机器便宜硬件好了。
加载文件消耗很少,读过php文件后linux等OS会做内存映射,或者有OPCODE加速,器,加载文件从来就不是问题。
我个人觉得微有些尴尬,基于php语言和应用之间。动手改吧,改不了(至少大部分phper是搞不定的),像个黑,盒子。提高了门槛和代码的可移植性,不方便项,目交接。
-
e是什么钱
怎么能设置笔记本ATI显卡的HyperMemory呀我不想用可是不知道怎么关呀谢谢了BIOS里没找到啊是哪一项呀: 好像那个自己不能设的~ ...
307条评论 6264人喜欢 3443次阅读 881人点赞 -
ppt组织架构图如何制作
我的是影驰的显卡,开机之后显示影驰的BIOS,退出重启之后还是继续显示影驰BIOS: 首先要看你的显卡是AMD卡 还是NVIDIA卡如果是NVIDIA卡就会开机首先提示的的显卡的信息NVIDIA显卡开机首先 显示显卡的型号 内存容量等 之后才能进入主板BIOS 进入安全模式可以 说明兼容方面出了问题,...
917条评论 5642人喜欢 1693次阅读 380人点赞 -
mc是什么
电脑开机出现1长8短报警声,显示器不显示。显卡和内存重插几次,还是老问题,怎么解决?: 1长8短是显卡或显示器有错误 1.先去除身上静电,打开机箱,检查一下显示数据线连接情况,重新把显示器数据线插上并插稳,如果故障没有排除,重新选一根好的数据线插上2.取下显示卡用毛刷将显示卡上的灰尘刷走,再用橡皮擦把显...
402条评论 4485人喜欢 1814次阅读 230人点赞
随机推荐榜单
- DNF电信浙江6区高价收一把35粉光 玄光圣剑,有的进
- exo有一首歌是十二个人要坐在椅子上唱的那是什么歌?
- 张掖c1驾照升B照照多少学费
- 能免费领腾讯游戏大礼包的软件有那些
- 常A是什么地方的车牌号码开头??
- A股大赛什么时候结束的
- 星巴克星享卡一周年了,可是没有累计到金星级。那积分清零后,是不是从玉星级降到银星级呢?
- 从青山铺至星沙的公交车时间表
- 高圆圆mk同款戴妃包正品多少钱
- 形容人辛苦的成语
- 新鲜菠萝蜜果肉上有些褐色小斑点,外面表皮上也有,用指甲抠一抠可以抠掉,是坏了吗?还可以吃吗?求解
- 本人男,身高170,体重60KG,算瘦吗
- 学跳舞能改变o型腿吗
- ERP软件中存货一般按什么分类
- 宝来可以识别的U盘最大是多少G?
- 五行属土的人做木的生意有相冲吗
- (cygwin gcc): 编译newlib时Segmentation fault的报错是什么意思?
- 帮我想一个王者荣耀cp的名字啊,情侣的内种,不要重复的,谢谢啊
- 哪家银行信用卡百分百下卡
- 实在不想在工厂上班,如果辞职明年自己去做的话,做什么顶目好呢?