声明:
  1. 本文适合白的不能再白的小白
  2. 不要被标题误导,本文不会讲nodejs基础,只是本人学习流程和资料的一个整合
  3. 如果想找一大堆教程自己看,没有电梯,自己拉到文章最下方吧
 
一、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能干什么吧。
 
二、nodejs能干什么
 
     Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。(摘)当前的服务器程序有什么问题?我们来做个数学题。在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。除这些成本上升外,还有一个潜在技术问题,即用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。鉴于上述所有原因,整个 Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。
    
     Node 非常适合以下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
 
    总结起来就是:其它服务器端语言能干的它几乎都能胜任,而且这货能处理高并发,节省服务器成本。而它又不是诸如apache这种服务器软件的一个替代品,它的理想目标是:提供高度可伸缩服务器。
 
     看到这又晕了是么?别管了,看看自己创建一个服务器,处理request、response是什么感觉吧。
  
三、怎么学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等。
    
    ejs就不用学了,就是换了个宽展名,语法完全没变,服务器端渲染时候可能传递一些数据,你所要学的只是简单的几个小语法来处理这些数据和逻辑,参考官方文档即可:http://www.embeddedjs.com/
 
    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社区大家贡献的,每个拿来用就可以了,并不需要专门研究,也不用感觉好像东西很杂,便心生烦躁,想放弃,这也只是一个过程,纠结过后就拨开云雾见青天了。
 
附录:
  1. 资料一:知乎,怎样有效地学习 Node.js:http://www.zhihu.com/question/19793473
  2. 资料二:quora: http://www.quora.com/What-are-the-best-resources-to-learn-Node-js
 

nodejs【伪】入门教程的更多相关文章

  1. 基于Nodejs生态圈的TypeScript+React开发入门教程

    基于Nodejs生态圈的TypeScript+React开发入门教程   概述 本教程旨在为基于Nodejs npm生态圈的前端程序开发提供入门讲解. Nodejs是什么 Nodejs是一个高性能Ja ...

  2. MongoDB最简单的入门教程之二 使用nodejs访问MongoDB

    在前一篇教程 MongoDB最简单的入门教程之一 环境搭建 里,我们已经完成了MongoDB的环境搭建. 在localhost:27017的服务器上,在数据库admin下面创建了一个名为person的 ...

  3. Node入门教程(4)第三章:第一个 Nodejs 程序

    第一个 Nodejs 程序 本教程仅适合您已经有一定的JS编程的基础或者是后端语言开发的基础.如果您是零基础,建议您先学一下老马的前端免费视频教程 第一步:创建项目文件夹 首先创建 demos 文件夹 ...

  4. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  5. (转)前端构建工具gulp入门教程

    前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...

  6. avalonjs1.5 入门教程

    迷你MVVM框架 avalonjs1.5 入门教程 avalon经过几年以后,已成为国内一个举足轻重的框架.它提供了多种不同的版本,满足不同人群的需要.比如avalon.js支持IE6等老旧浏览器,让 ...

  7. Webpack新手入门教程(学习笔记)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...

  8. OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  9. Linux pwn入门教程(10)——针对函数重定位流程的几种攻击

    作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...

随机推荐

  1. Scala Apply

    class ApplyTest{ //一定要写(),不加括号就报错. def apply() = println("Into Spark!") def havaAtry(){ pr ...

  2. edgerouter bonding

    configure set interfaces bonding bond0 mode 802.3ad set interfaces ethernet eth1 bond-group bond0 se ...

  3. Code Sign error: No code signing identities found: No valid signing identities

    Code Sign error: No code signing identities found: No valid signing identities 解决办法:如果证书可获取,最简办法就是把所 ...

  4. haoce修改mysql

    修改时长余额 select * from sys_user_product up where up.user_id in(select u.id from sys_user u where login ...

  5. dao代码模板

    提供数据源以及回收资源的工具类DbUtils: public class DbUtils { private static ComboPooledDataSource dataSource = new ...

  6. Chapter 2 Open Book——24

    Mike kept up a string of complaints on the way to building four. mike去教学楼的路上一直嘀咕抱怨着. Once inside the ...

  7. magento数据添加

    1.第一种方法是一个字段一个字段地添加! $record = Mage::getModel('warehouse/record');      $record->addData($postDat ...

  8. php基础(六)Include

    本文内容来自http://www.w3school.com.cn/php/php_file.asp 服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数.页眉.页脚或元素. include ( ...

  9. scale相关设置—颜色设置

    颜色设置,在R的可视化中,应该算是相对比较重要的一项内容,如何把握颜色,很大程度上影响图形的展现效果. 在ggplot的scale设置中,颜色相关的函数较多: scale_fill/colour_hu ...

  10. ubutun下安装jenkins

    安装方法所在网址:   https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu 在安装jenkins之前,ub ...