声明:
- 本文适合白的不能再白的小白
- 不要被标题误导,本文不会讲nodejs基础,只是本人学习流程和资料的一个整合
- 若是想找一大堆教程本身看,没有电梯,本身拉到文章最下方吧
1、nodejs是什么
前段时间,偶然获得了一次跟几个大牛学长学习的机会,他们正在作一个startup的项目,构建网站所使用的就是nodejs;对这个最近牛哄哄的东西,本身也只是略有耳闻,从何下手呢,打开百度,google一下。
首先,nodejs不是一种什么编程语言,而是一个可让javascript运行在服务器端的平台,至于什么nodejs由c++编写,基于google chrome的v8引擎,一律忽略;你须要知道的是,之前你用php/java写服务器端的代码,如今可使用nodejs完成,并且不须要太多的新知识。
if(足够熟悉js){
go on……
}else{
window.location('http:www.baidu.com');
and search 'javascript 入门教程'+去吧-_-;
}
其次,使用nodejs开发你可使用windows/linux/macos,任何一个环境,可是用windows感受怪怪的,推荐linux(such as ubuntu).至于安装什么的,本身解决吧。
接下来你最想知道的可能就是,我现有的工具作开发,挺好的,你有啥么理由让我转到nodejs这来呢? 因此看看nodejs能干什么吧。
2、nodejs能干什么
Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。(摘)当前的服务器程序有什么问题?咱们来作个数学题。在 Java™ 和 PHP 这类语言中,每一个链接都会生成一个新线程,每一个新线程可能须要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发链接数量是 4,000 个用户。随着您的客户群的增加,若是但愿您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每一个请求使用不一样的服务器,所以,任何共享资源都必须在全部服务器之间共享。鉴于上述全部缘由,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器可以处理的并发链接的最大数量。
Node 很是适合如下状况:在响应客户端以前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不必定不少。
总结起来就是:其它服务器端语言能干的它几乎都能胜任,并且这货能处理高并发,节省服务器成本。而它又不是诸如apache这种服务器软件的一个替代品,它的理想目标是:提供高度可伸缩服务器。
看到这又晕了是么?别管了,看看本身建立一个服务器,处理request、response是什么感受吧。
3、怎么学nodejs
1. 须要哪些基础
js的基础是必须的,并且并非简单的了解就能够,前端的东西也必须掌握把,否则你怎么构建一个完整的网站应用呢。
2.从哪里下手
当时学的时候,苦于国内没有一个很好的教程,也不能说教程很差,可能他们都是站在一个相对较高的视角去讲述这个东西,一下就来了一大堆东西在那讲,想看视频学的同窗暂时仍是不要有这个想法了,基本上没有适合入门的教程,若是你非要找,英语水平能够的话,51cto上有一个我感受还不错:
1>nodejs基础
2>基础过关了,进阶使用框架
你可能想去尝试建立一个本身的应用,那就要介绍express了,这也是在开发一个大型项目中必需要用到的,但若是你足够任性我也没办法。express是nodejs的一个框架,就像你用基本java web知识能够构建网站,但使用SSH能够更快、更清晰。就像你学PHP,直接建站没问题,可是有像YII,tp等等的框架,不少轮子就不须要你重复造了。
express也是一样的道理,做者参考了Ruby的Sinatra.rb,完成了一个基于nodejs的实现(此句可忽略),有了基础就要实践了,上面的教程可能也或多或少讲到express,可是上面就把重点放在nodejs基础上,下面才是express:
- 若是你暂时还不想看官方文档,能够先看看阮一峰阮大大的《Express框架》 http://javascript.ruanyifeng.com/nodejs/express.html
- 而后呢,你就能够建立一个博客应用试试了,来吧跟着作(发现这个教程的时候,有种相见恨晚,要的就是你的感脚)url:https://github.com/nswbmw/N-blog/wiki
- 可是官方文档是不能不放在这里地,有问题先看看手册吧:http://expressjs.com/
3>前端怎么办
上面的内容都搞定了,前端难道仍是用html么,呵呵,被你猜对了,仍是html,只不过是换种方式写html,前端的模板引擎目前有EJS、Jade、React等。
jade我我的不喜欢,那种靠缩进、空格、换行来组织代码的小shit,不习惯,很少讲,想学的,自行google吧。
react并不算是一个完整的MVC框架,也就算是V,对C算是有锦上添花的做用吧,组件化的开发思路,这也应该是一个趋势,“在js中写html,你感觉感觉”。
" 在Web开发中,咱们总须要将变化的数据实时反应到UI上,这时就须要对DOM进行操做。而复杂或频繁的DOM操做一般是性能瓶颈产生的缘由(如何进行高性能的复杂DOM操做一般是衡量一个前端开发人员技能的重要指标)。React为此引入了虚拟DOM(Virtual DOM)的机制:在浏览器端用Javascript实现了一套DOM API。基于React进行开发时全部的DOM构造都是经过虚拟DOM进行,每当数据变化时,React都会从新构建整个DOM树,而后React将当前整个DOM树和上一次的DOM树进行对比,获得DOM结构的区别,而后仅仅将须要变化的部分进行实际的浏览器DOM更新。"想一想不就应该这样么。
学长跟我说,React水很深,若是能成为专家,前途无量。听得心潮澎湃呢 :) ,无论怎么说react入门确实有必定的难度,
小结:
看完这些基本上对nodejs的知识有一个完整的体系了,若是基础很差,也没了解过python这样的语言,对于nodejs这种所谓基于事件的异步式编程可能让你非常痛苦,看人家的代码,可能发现好多东西不知道,不要紧那些依赖库都是nodejs社区你们贡献的,每一个拿来用就能够了,并不须要专门研究,也不用感受好像东西很杂,便心生烦躁,想放弃,这也只是一个过程,纠结事后就拨开云雾见青天了。
附录:
- 资料一:知乎,怎样有效地学习 Node.js:http://www.zhihu.com/question/19793473
- 资料二:quora: http://www.quora.com/What-are-the-best-resources-to-learn-Node-js