• 【Node.js】初识Node.js


      因组里项目需要,我和另外一名同事要学习Node.js。之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术,而且还有项目实战锻炼,还不错。

    一.  Node.js架构

      

      1. Node.js跨平台支持*nix与Windows得益于Libuv中间层,通过它去调用不同操作系统的底层操作。

      2. Node.js底层由C++实现,因此可以编写C++扩展模块,经封装后由JS调用,这样可以解决需要提升性能时(例如频繁的位运算,JavaScript的一个弱点是位运算,由JS来做性能低),就可以编写C++扩展模块,与JS配合提升性能。

    二. Node.js特点

      1. 单线程

        优点:无需像多线程编程在意状态的同步问题,因此无死锁问题,也避免了线程上下文切换带来的性能开销

      2. 异步I/0(非阻塞I/0)

        优点:让单线程远离阻塞,更好地利用CPU

      3. 事件驱动

    三. 初学网络编程

       Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端。http.server是一个基于事件的HTTP服务器,核心由Node.js下层C++部分实现,接口由Javascript封装,兼顾高性能与简易性。

      举个经典的小例子,

     1 //http.js
     2 var http = require('http');
     3 var url  = require('url');
     4 var querystring = require('querystring');
     5 
     6 //for example, url: http://127.0.0.1:3000/p/a/t/h?query=string
     7 
     8 var getReqInfo = function(req){
     9     //get req.url
    10     console.log("req.url: " + req.url);
    11     
    12     //get path
    13     var path = (url.parse(req.url)).pathname;
    14     console.log("path: " + path);
    15     
    16     //get querystring
    17     var query = url.parse(req.url).query;
    18     console.log(querystring.parse(query));
    19 }
    20 
    21 http.createServer(function(req, res){
    22     
    23     getReqInfo(req);
    24     
    25     res.writeHead(200, {'Content-Type': 'text/plain'});
    26     res.end('Hello world!
    ');
    27 }).listen(3000);
    28 
    29 console.log('now we are listening 3000 port');

       用户通过输入URL(http://127.0.0.1:3000/p/a/t/h?query=string)访问时,就可以获取URL中的参数(这里指reqest header的第一行信息),并作出响应。结果如下:

       

       这里创建的是HTTP服务器,如果创建Https服务器,相比http,需要多提供一个参数,包含私钥和签名证书,如server.keyserver.crt。客户端在发起安全连接前会去获取服务器端的证书,并通过CA的证书验证服务器端证书的真伪。

    四. Node.js学习资料

      1. 《Node.js入门指南》,推荐,适合入门

      2. 《深入简出Node.js》,有深度,推荐

    五. 其他备忘

      1. IDE

        我用的是Vim,安装插件(nodejscomplete和JsHint)后,可以实现代码提示及语法错误检查。

                                                                  2014.6.4上午

  • 相关阅读:
    .Net在arraylist用法
    ORM查询方法
    正则表达式大全
    checkbox修改功能保存功能绑定
    Web ASP.Net运行机制
    面试题
    Sql Server 中锁的概念
    由nginx和spring boot中tomcat配置不当引起的问题
    记录一次由事务可重复读引起的问题
    Ubuntu18.04没有声音的解决
  • 原文地址:https://www.cnblogs.com/KevinSong/p/3767397.html
Copyright © 2020-2023  润新知