• Node.js学习笔记


    相关介绍

    1、Node.js或者Node,是一个可以让javascript运行在服务器端的平台。

    2、Node.js是一个为实时Web应用开发而诞生的语言,它从诞生之初就充分考虑了再实时响应、超大规模数据要求下的可扩展性。这使得它摒弃了传统平台依靠多线程来实现高并发的设计思路,而是采用了单线程、异步式IO、事件驱动式的程序设计模型。

    3、Node.js采用现在应用于chrome的Javascript引擎V8。V8号称目前世界上最快的Javascript引擎。

    4、Node.js遵循CommonJs规范,但是也并不完全遵循。

    Hello World

    var http = require('http');
        http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello World
    ');
    }).listen(1337, '127.0.0.1');

    Node包管理器(npm)

    npm是一个由Node.js官方提供的第三方包管理工具,就像PHP的Pear、Python的PyPI一样。npm是一个完全由javascript实现的命令行工具,通过Node.js执行,因此严格来说它并属于Node.js的一部分。

    一些概念

    1、REPL

    在命令行使用node不加参数则会进入node的REPL(read-eval-print loop:输入-求值-输出循环)模式,就像chrome的console,你可以在其中输入javascript代码,然后立即求值

    2、使用supervisor

    supervisor可以帮助你件事对代码的改动,然后重新启动Node.js,在开发中调试时很方便

    npm install -g supervisor

    3、模块和包

    模块的包的概念是参照了CommonJs的标准,Node.js中一个文件就是一个模块,可以使用require接口获取一个模块,并且是单次加载

    4、模块的类型

    模块分为两大类型,即核心模块和文件模块,核心模块就是Node官方提供的API模块,已经编译成了二进制文件,可以使用require直接调用,而文件模块就是存储为文件的模块,可以是js,json或者C++文件。

    文件模块的加载有两种方式,一种是require的参数以"/","./","../"开头的路径形式,则使用按路径加载,按照参数值使用绝对或相对路径方式找到对应文件并加载。另外一种是通过查找node_moudles文件加载,如果require的参数并非路径的形式,那么包管理器会从当前目录的node_modules目录开始查找,找不到则查找上一级目录

    5、本地模式和全局模式

    使用npm安装包的时候会有本地模式和全局模式两种情况。
    a)默认的npm install就是本地模式,即把包安装到当前目录的node_modules子目录下面。在使用require加载模块是会尝试搜索node_modules子目录,因此本地模式安装的包可以被直接引用
    b)全局模式:在安装包时使用参数-g就是采用的全局模式

    npm install -g package_name

    使用全局模式安装时会注册PATH环境变量,可以在命令行中调用,因此使用全局模式安装包是为了在命令行中调用相关功能

    6、包的发布

    npm有一套以CommonJs为基础的包规范(这里是指对目录结构标准的定义),在目录中使用npm init,然后填写一些交互式问题就可以产生一个符合标准的package.json,然后再使用npm publish就可以将包发布到官网了

    核心模块

    1、全局对象

    global是Node.js中的全局对象(即宿主对象),类似于浏览器中的window

    2、全局变量

    全局对象的属性,其一在所有包中直接调用(如process、console)

    3、几个重要模块

    a)常用工具util

    xxx

    b)事件驱动events

    events是node中最重要的模块,因为node的架构就是基于事件的,events模块不仅用于用户代码与Node下层事件循环的交互,还几乎被所有的模块依赖。
    events模块只提供一个对象events.EventEmitter,核心就是事件发射与事件监听功能的封装,例如:

    var events = require("events");
    var emitter = new events.EventEmitter();
    //添加事件监听
    emitter.on("someEvent",function(arg1,arg2){
        console.log("xxx");    
    });
    //触发事件
    imitter.emit("someEvent","arg1","arg2");

    c)文件系统fs

    提供对操作系统文件的读取、写入、改名、删除、遍历目录等功能的封装。并且fs模块中的操作都提供了同步和一部两个版本

    fs.readFile
    fs.open
    fs.read

    d)HTTP服务器

    Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的客户端。http.Server是http模块中的HTTP服务器对象,node的所有基于HTTP协议的系统都是基于它来实现的,Hello World中就实现了一个简易的服务器。

    Node不适用的场景

    1、计算密集型的程序

    2、单用户多任务型应用

    3、逻辑十分复杂的事务

    Node.js更善于处理那些逻辑简单但访问频繁的任务。

  • 相关阅读:
    android之字符串的一些转码
    android之界面一些操作
    日期的一些处理
    android数据的4种存储方式
    第四周学习情况
    第四周作业2
    第四周作业
    第三章学习情况
    第二章学习情况(2020.02.24-2020.03.01)
    个人情况介绍+《人月神话》读后感+本周学习情况(2020.02.17-2020.02.23)
  • 原文地址:https://www.cnblogs.com/gewei/p/3290874.html
Copyright © 2020-2023  润新知