• Node.js的知识点框架整理


    背景:因为appium是基于Node.js的,所以想看一下Node.js。但是发现很多资料的顺序看起来有点颠倒。然后就一面看资料一面整理了一下大概的知识点框架,希望对自己对别人有用。
    本文不包含node.js的基本语法。node.js的基本语法和JavaScript基本一样,可以以后再单独整理一份基本语法的。
     
    Node.js是一个基于chrome V8的JavaScript运行时的环境
    Node.js是事件驱动,非阻塞式I/O模型
    Node.js使用npm包管理器
    使用Node.js不仅实现了一个应用,也实现了整个HTTP服务器,所以不需要单独搭建Apache或nginx
     
     
    Node.js安装
    mac下安装方法
    brew install node
     
    查看node.js的版本
    node -v
     
    查看包管理工具npm版本
    npm -v
     
    进入node.js的交互式解释器
    node
    交互式解释器和python的类似。可以输入命令实时查看输入结果
     
    npm的使用
    npm随着node一起被安装
    npm允许用户从NPM服务器下载并安装第三方包,也允许将自己编写的包上传到第三方服务器,类似python的pip
     
    npm安装命令
    npm install 【包名】
    安装的包放在工程目录的node_modeles目录下,例如mac上是在/usr/local/lib/node_modules文件夹下
    安装好的包在代码中通过require("包名")来引用
     
    安装的包模块的目录下有package.json,文件包含了包名、依赖包列表(npm安装时会将依赖表中的包自动安装)
     

    Package.json 属性说明

    • name - 包名。

    • version - 包的版本号。

    • description - 包的描述。

    • homepage - 包的官网 url 。

    • author - 包的作者姓名。

    • contributors - 包的其他贡献者姓名。

    • dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

    • repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。

    • main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。

    • keywords - 关键字
    (属性转自菜鸟教程)
     
    npm卸载命令
    npm uninstall 【包名】
     
    更新模块
    npm update 【包名】
     
    搜索模块
    npm search【包名】
    (从包管理中心搜索包含该关键词的包)
     
    更改npm下载的地址为国内的仓库
    有些包下载较慢,可以切换到国内的仓库
    npm config list(查看npm的一些配置项)
    npm config set registry cnpmjs.org(更改仓库为cnpmjs.org)
     
    首次更改仓库后,会创建一个~/.npmrc文件,里面内容为“registry="https://registry.npm.taobao.org "”
    如果想切回到原来的下载中心,可以将~/.npmrc中的registry注释掉或删掉。
     
    Node.js引入其他模块
    通过require()引入其他模块
    引入npm下载的第三方模块
    require("模块名")
     
    引入本地某一路径下的模块(实际就是.js文件,引用时不需要后缀)
    require("路径/模块名")
    例如引入当前目录的hello.js模块:require("./hello")
     
    Node.js的函数
    Node.js中一个函数可以作为另一个函数接收参数,通过关键字function定义函数
    定义方式:function 函数名(参数){要执行的内容}
     
    function say(word){console.log(word)} \定义一个名字为say的函数,参数为word
    say("hi") \调用函数say,并传递参数word为hi
     
    在函数做为参数传递时,也可以定义一个匿名函数(不取函数名,直接function(参数){要执行的内容})直接传递给函数
    function exe(name,value){name(value)} \定义一个函数exe
    exe(function(value){console.log(value)},"wow,see it!")  \执行exe()时,传递的第一个参数是一个匿名函数
     
    Node.js的事件
    Node.js是单进程单线程应用程序,通过事件和回调来支持并发(Node.js所有的API都通过回调实现了异步)
    Node.js中所有事件都是用观察者模式实现的
    Node.js中大部分的模块都继承自Event模块(Event模块是一个简单的事件监听器模式的实现)
     
    Node.js可以通过引入events模块,并通过实例化EventEmitter类来绑定和监听事件。
    绑定事件及事件的处理函数:eventEmitter.on("事件名字",函数)   \实际就是绑定给时间eventEmitter一个监听器
    触发事件:eventEmitter.emit(“事件名字”)
     
    例子如下:
    var events=require("events")//导入events模块
    var eventemitter=new events.EventEmitter()//实例化events的EventEmitter类
    eventemitter.on("start",function(){console.log("hello world")})//注册一个事件,绑定打印hello world的事件,名字为start,实际start就是一个监听器
    eventemitter.emit("start")//触发事件start
     
    实际上on调用的是addListener(event,listener)。一个事件可以on多个监听器,emit执行时依次执行。
    可以通过removerListener来移除一个监听器,监听器还有很多其他的方法。
    类方法
     
    Node.js的回调函数
    Node的所有API都支持回调函数(也可以选择不使用回调函数),Node.js的异步是通过回调来实现的,非阻塞的I/O,大大提高了Node.js的性能
    阻塞是按顺序执行的,必须执行完当前的代码才会进行下一个执行。而非阻塞是不需要按照顺序的,所以如果需要处理回调函数的参数,就需要写在回调函数内。
     
    例如fs的读取函数readFile:
    var fs=require("fs")
    fs.readFile("test.txt",function(err,data){
         if (err) return console.log(err)
         console.log(data.toString())
    })
     
    Node的API回调函数的第一个参数都是捕获错误,第二个参数一般是正确的返回值
     
    Node.js全局对象
    全局对象:它及它的所有属性可以在程序的任何地方访问,不需要require导入
    process:与当前进程互动,可以查看当前目录、进程等
    console:用于输出
    setTimeout :定时,用法【setTimeout(函数,毫秒单位的时间)】
     
    还有很多其他的全局对象
     
     
    Node.js的工具模块
    Node.js模块库有很多很好用的模块,下面列举几个
    os:返回当前系统的一些数据
    path:对路径做的一些操作
    http:可以创建web服务器对象等
    fs:针对文件进行读写等操作
     
     
     
  • 相关阅读:
    Oozie — What Why and How
    git 用户手册
    整理笔记 C语言
    第一次理解通用链表
    C++ 通用队列类
    懂了这些,你才真正懂了C
    简单键盘驱动
    简述进程间通信方式
    几何原本
    GSP几何画板简介
  • 原文地址:https://www.cnblogs.com/meitian/p/5774248.html
Copyright © 2020-2023  润新知