zoukankan      html  css  js  c++  java
  • nodejs【伪】入门教程

    声明:
    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
     
  • 相关阅读:
    A Look Inside Presentation Controllers
    iOS用户数据安全:Keychain、Touch ID以及1Password
    iOS开发UI篇—UITableView全面解析
    iOS 上的相机捕捉
    iOS UIScrollView
    ViewController类中得方法和属性的用途
    ios 中__bridge,__bridge_transfer和__bridge_retained详解
    __weak如何实现对象值自动设置为nil
    iOS开发UI篇—UIWindow简单介绍
    iOS:App启动过程详解
  • 原文地址:https://www.cnblogs.com/skyfynn/p/4635639.html
Copyright © 2011-2022 走看看