① web开发为什么选择nodejs
太长的不知道你会不会看完:
Node.js其实有很多大公司都在用的,比如eBay, Microsoft, 你可以去Node.js官网看看:node.js要想知道更详细的列表,可以看这里:https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node
再稍微花点时间,搜集一些网上资料:优势和劣势。
要
讲清楚这个问题,先讲讲整个Web应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈。瓶颈在于服务器能够处理的并发连接的最大数量。
Node.js解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在Node.js引擎的进程中运行的事件,而不是为每个连接生成一个新的
OS线程(并为其分配一些配套内存)。Node.js不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O
调用。Node.js还宣称,运行它的服务器能支持数万个并发连接。
Node本身运行V8 JavaScript。V8
JavaScript引擎是Google用于其Chrome浏览器的底层JavaScript引擎。Google使用V8创建了一个用C++编写的超快解
释器,该解释器拥有另一个独特特征:您可以下载该引擎并将其嵌入任何应用程序。V8
JavaScript引擎并不仅限于在一个浏览器中运行。因此,Node.js实际上会使用Google编写的V8
JavaScript引擎,并将其重建为可在服务器上使用。
Node.js优点:
1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。
2、
Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。
3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计
可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
Node.js缺点:
1、可靠性低
2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。
不过以上缺点可以可以通过代码的健壮性来弥补。
② 使用nodejs开发的网站有哪些
完全使用nodejs开发的后台。但是其他一些已经在线上的站点还有哪些?
我知道的还有cnodejs的社区也是nodejs编写的,还有雪球网貌似也是,还有阿里的数据产品团队也在使用nodejs。
③ 如何选择Node.js Web开发框架
Node.js非常适用于Web开发,但是现在无论是一个网站,还是Web
App都已经成为包括很多不同部分,如前端、数据库、业务模块、功能模块等等的大型项目,使用Node.js从零开始进行Web开发,也许大中型团队能够
胜任,但对于个人和小型团队来说是不现实的。这时候框架就成为Web开发利器,对于个人开发来说几乎是必不可少。那么如何选择Node.js
Web开发框架呢?
首先,我们必须要弄清楚的是,我们需要的是——
程序 or 框架?
程序是已经成型的应用,你需要的是为它搭建环境、添加配置,然后就可以运行起来;框架则是应用的骨架,你需要为它添加数据模型、业务逻辑,它才能成为应用,开始提供服务。
事实上,对于Web开发来说,程序和框架的区别正越来越模糊,比如几乎妇孺皆知的Wordpress,它是一个博客程序,但它丰富的插件以及
高度的
自定义能够支持很大程度上的二次开发,在这点上它比起一些PHP框架也并不逊色。我个人认为,如果重心在于提供服务而不是掌握技术,有WordPress
这样的程序是没有必要使用框架的。
可惜的是,由于Nodejs还很年轻,目前还没有WordPress这样的程序,因此目前在Node.js开发里,如果想做出自己想要的作品,框架是必然的选择。如果是某些特定类型的应用,可以尝试一些开源的程序,比如要用Nodejs做博客,有Hexo、Ghost等。
Node.js Web框架有哪些?
Node.js里的Web框架分为API框架和Web应用框架。前者能够开发出RESTful的API,后者也能开发出RESTful API,但还包括模板、渲染等为前端所准备的功能。
API框架的使用场景是为跨平台应用提供统一的数据模型,而渲染由前端/客户端自行解决。目前比较知名的API框架有
restify(文档、Github、NPM)
ActionHero.js(官网、Github、NPM)
LoopBack(官网、Github、NPM)
Frisby(官网、Github、NPM)
Fortune.js(官网、Github、NPM)
Web应用框架顾名思义,就是为了打造Web应用所开发的框架。这里有两种风格的Web应用框架。
一个是Sinatra风格,另一个是Rails风格。Sinatra和Rails都是Ruby语言的Web框架,后者的影响力更大也更为知名。这里简单的解释一下两种风格是什么意思。
Sinatra风格是指高度可配置,注重开发的自由度。代表性的Nodejs Web框架有:
Express(官网、Github、NPM)TJ大神开发,Node.js官方推荐
hapi(官网、Github、NPM)
koa.js(官网、Github、NPM)
flaliron(官网、Github、NPM)
total.js(官网、Github、NPM)
locomotive(官网、Github、NPM)
Rails风格则是指不重复自己和约定优于配置,以及严格遵循MVC结构开发。代表性的框架有:
Sails.js(官网、Github、NPM)
geddy(官网、Github、NPM)
CompoundJS(官网、Github、NPM) 原railswayjs
这两种风格无所谓谁优谁劣,全凭使用者的偏好。
而在这两种Web框架之外,还有更大型的框架,即全栈框架,其中的代表是MEAN。
④ node.js可以用来做web前端的后台吗
JS是万能的,因为它既可以写前端脚本,又可以写后台,之所以没使用JS来开发后台可能还是因为主流就是Java。细心比较就会发现,JS中的一些函数和Java中提供的函数是雷同的,譬如toString(),encodeUrl()等,从这一点就可以证明JS是具备后台开发能力的。而node.js只是JS中的一个分支和拓展产物,肯定是可以开发后台的,具体怎么弄还需要自己去研究。
⑤ 如何使用nodejs开发一个简单的网站后台
nodejs已经基本开发都会了是吗?比如nodejs玩弄Mysql或者mongodb还有nodejs基本的json或者xml的操作nodejs文件的读写然后会一下UI框架或者自己熟练HTML+CSS+JS如果是这样级别的做一个会员管理系统就跟玩一样了。会员管理系统是什么样的?只要实现以下基础版本的,其他的都随意搞了。1用户注册2用户登录3权限设计(会员管理系统最重要的,比如给这个会员从普通会员变成VIP等。)
⑥ 开发中用nodejs做了哪些方面的工作
Node.js使用Mole模块去划分不同的功能,以简化应用的开发。Moles模块有点像C++语言中的类库。每一个Node.js的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。
要在程序中使用模块是十分方便的,只需要如下:
在这里,引入了http类库,并且对http类库的引用存放在http变量中了。这个时候,node.js会在我们应用中搜索是否存在node_moles的目录,并且搜索这个目录中是否存在http的模块。如果node.js找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,指定模块的位置,比如:
var myMole = require('./myMole.js');
模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用exports对象去实现。
⑦ 怎么使用nodejs做前端.java做后端 搭建web工程
使用CommonJS编写前端JS模块,使用Browserify打包JS,同时可以使用gulp进行其他前段构建工作,比如assets, Sass/Less, minify等。
后端:使用Java编写Restful API供前端consume,或者直接渲染前端页面。
⑧ 现在还有nodejs开发的吗
node主要应用场景是在大前端,阿里的思路是比较合适的,但是必须要注意,绝对不能让node做太多的业务逻辑,他只适合接受人家生成好的数据,然后或渲染后,或直接发送到客户端。如果让node做复杂的业务逻辑,那会得不偿失的。这个阿里的人可以来说明一下,你们node主要应用的场景是不是都是比较简单的逻辑。
回调模式下的异步是有明显缺陷的,程序的执行顺序必须依靠回调来保证,没有层层回调,就没有可以保障的逻辑顺序,这也就注定了,node不能做复杂的业务逻辑。javascript语言本身也一直在和回调做斗争,promise,generator都可以将回调包装起来,在代码的某个部分形成形式同步,但是这种模式进化的还不完全,还不能做到与回调完全割裂,做到完全的形式同步。但是形式同步肯定是发展的方向,这种模式即可以获得异步的好处,又可以有效回避回调带来的编程困难,在业务逻辑上可以更简单的表达。
就现在的环境来说,大家的思路还没转过弯,对回调的批评认为都是不好的,这些人是不敢面对现实,javascript都在变,这些人的脑子却不肯变,还以为回调就代表异步。
⑨ 如何使用node.js web开发
第二步:安装nodejs 载完双击 node-v0.吧.依陆-x吧陆.msi始安装nodejs默认安装C:\Program Files\nodejs面 第三步:安装相关环境 打C:\Program Files\nodejs目录发现面自带npm,直接用npm安装相环境既 进入node.js command prompt 命令窗口 进入nodejs 安装目录 C:\Program Files\nodejs 键入命令:cd C:\Program Files\nodejs 既 现始安装相关环境 键入命令:npm install express 车等待安装express........ 键入命令:npm install jade 车等待安装jade........ 键入命令:npm install mysql车等待安装mysql........ ........安装组件取决于环境搭建需求 默认情况述组件都安装C:\Program Files\nodejs\node_moles文件夹 nodejs相关组件自查找路径 第四步:创建工程 现已经express express命令安装全局才起作用! 所express安装候要用 npm install express -g 或者直接修改全局路径: npm config set prefix "C:\Program Files\nodejs" npm config set cache "C:\Program Files\nodejs\cache" (先建cache目录) 键入:express myapp (myapp随意起工程名称) 发现 C:\Program Files\nodejs\myapp 目录 默认情况:自创建 几文件做解释相信发经验同都能眼明 复制node_molesmyapp面 环境搭建完工面做demo测试 myapp新建helloworld.js var http = require("http"); http.createServer(function(request, response) { response.writeHead(贰00, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(吧吧吧吧); console.log("nodejs start listen 吧吧吧吧 port!"); 进入node.js command prompt 命令窗口,进入C:\Program Files\nodejs\myapp目录 键入node helloworld.j
⑩ Node.js 适合用来做 web 开发吗
异步的思维是js的特点,也是node高并发性能优势的原因之一,你从传统的同步语言过来可能不习惯,但是像我们这种从前端写js过来的人就自然得像说话一样,关键还是适应。熟悉之后可以用async,Promise系 (q, bluebird) 或者 eventproxy 之类的库来改善代码嵌套的问题。
异常的问题 - Node 核心库的 API 抛异常大致有三种常见情况:
1. 异步回调。按惯例,接收的回调函数第一个参数都是可能出现的异常,没有特殊情况的话你应该把异常按照同样的参数位置一层层传下去,直到最顶层的回调里进行统一处理。
2. 同步版本的api会直接抛异常。所以如果确实无法避免抛错的可能,直接 try catch,要么就避免用同步版本。
3. Stream形态的API,必须在stream对象上添加 error 的侦听函数,不然异常会直接抛出。
如果出现导致进程中断的异常,说明你的代码有逻辑层面的问题(以上几点没有完全做好),你应该在开发的时候发现并处理这些异常,而不是让它们在部署环境中发生。
如果你实在避免不了问题发生,你可以用 Node 的 Domain API 来对整块代码的异常进行捕捉。
另外可以用进程管理工具比如 forever, pm2 或是 monit 监视应用进程,崩溃后自动重启。
最后回到你的问题,node是否适合做web开发 - node的独特优势是高并发,高实时性,或者单页富前端的web应用,比如实时聊天,游戏,另外node也是写JSON API的最好选择。