美文网首页
node学习之node基础篇

node学习之node基础篇

作者: Gopal | 来源:发表于2017-11-02 17:18 被阅读35次

这几天在学习node,以下的笔记主要是自己看《Node.js开发指南》的笔记,下面的内容主要是1到4章的

Node.js开发指南
  • 单线程异步式I/O事件驱动式的程序设计模型

  • Node.Js是可以让JavaScript运行在服务器端的开发平台

  • Node.js内建了一个HTTP服务器支持,也就是你可以轻而易举地实现一个网站和服务器的组合

  • Node.js还可以部署到非网络应用的环境下,比如一个命令行工具
    Node.js可以调用C/C++的代码

  • Node.js在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式I/O请求完成后会被推送到事件队列中,等待程序进程进行处理

  • 内存上下文切换??

  • 回调函数很重要

  • Node.js的异步机制是基于事件的,所有的I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环处理

异步机制
事件循环

第三章 Node.js的快速入门

  • node script.js 其中script.js 就是脚本的文件名

  • node -e "console.log('Hello')"

  • Node的REPL模式,REPL(Read-eval-print loop),即输入—求值—输出循环

  • 两次Ctrl+c退出该模式

node和php
  • 使用supervisor可以实现“热加载
    supervisor 文件名

  • 当线程遇到I/O操作时候,不会以阻塞的方式等待I/O操作的完成或者数据的返回,而是将I/O请求发送给操作系统,继续执行下一条语句。当操作系统完成I/O操作时候,以事件的形式通知I/O操作的线程,线程会在待定的时间处理这个事件

  • 单线程、非阻塞
    I/O部分和计算部分。通常I/O部分占用的时间比计算的部分多得多

多线程同步式
  • 异步式I/O传统的多线程阻塞式I/O少了多线程的开销
比较
  • EventEmitter

  • require不会重复加载模块

  • 覆盖exports
    exports
    使用module.exports = Hello 代替exports.Hello = Hello

  • CommonJs规范应该具备以下特征:

CommonJs
  • npm是node官方提供的包管理工具

  • 获取一个包
    npm [install/i] [package_name]
    本地模式和全局模式
    npm [install/i] -g [package_name]

  • 本地模式不会注册PATH环境变量,仅仅是把包安装到node_modules子目录下,其中的bin目录没有包含在PATH环境变量中,不能在命令行中调用

  • 使用全局模式安装的包并不能直接在 JavaScript 文件中用require获得,因为 require 不会搜索 /usr/local/lib/node_modules/

本地模式与全局模式
  • npm link 不支持Windows

  • 通过使用npm init可以根据交互式问答产生一个符合标准的package.json

  • npm pubilsh发布包 package.json中修改version字段,重新使用npm publish重新发布

  • node中的全局对象是global,所有的全局变量(除了global本身以外)都是global对象的属性

  • process就是一个全局变量,即global对象的属性。它用于描述当前node进程状态的对象,提供一个与操作系统的简单接口

  • process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js会在下一次事件循环响应时候调用callback

  • 常用工具util是node的核心模块,提供常用函数的集合,用于弥补核心JavaScript的功能过于精简的不足

  • util.inherit(constructor,superConstructor)是一个实现对象间原型继承的函数
    util.inspect(object,[showHidden],[depth],[])是将任意对象转换成字符串的方法,通常用于调试或者错误输出

  • 对于每个时间,EventEmitter支持若干个事件监听器

  • Node标准库提供了http模块,其中封装了高效的HTTP服务器和一个简易的HTTP客户端

  • http.Server是HTTP模块中的HTTP服务器对象,用Node.js做的所有基于HTTP协议的系统,如网站、社交应用甚至代理服务器,都是基于http.Server实现的

经典实例
  • http.Server的事件
    对它的事件编写响应函数即可实现http服务器的所有功能
    request
    connection
    close

  • http.createServer([requestListener])
    功能是创建一个HTTP服务器并将requestListener作为request事件的监听函数

  • http.ServerRequest是HTTP请求的信息
    一般由http.Server的request事件发送的,作为第一个参数进行传递

以下3个事件用于控制请求体传输
data
end
close

  • http.ServerResponse是返回给客户端的信息,决定了用户最后能够看到的内容。也是有http.Serverrequest事件发送的,作为第二个参数进行传递
重要成员函数
  • http模块提供两个函数http.requesthttp.get,功能是作为客户端向http服务器发起请求

http.request(options,callback)发起http请求。option是类似关联数组的对象,表示请求的参数,callback是请求的回调函数

1 结果
  • http.ClientRequest是由http.request或者http.get返回的对象,表示一个已经产生而且正在进行的http请求

相关文章

  • node学习之node基础篇

    这几天在学习node,以下的笔记主要是自己看《Node.js开发指南》的笔记,下面的内容主要是1到4章的 单线程、...

  • node.js入门教程

    nodejs和npm的安装 体验一下 Hello World 之 Node.js 基础之Npm使用 Node之模块...

  • Node学习随笔--node基础

    1.浏览器输入网址发送请求,发生如下过程 客户端发送请求, www.baidu.com/www.taobao.co...

  • Nodejs知识点

    Nodejs基础部分 为什么要学习Node? Node使用Js语法去开发后端应用 一些公司要求前端掌握Node开发...

  • Node基础

    Node基础 为什么学习Node? IO优势对于文件读写,Node采用的是非阻塞IO传统IO在读写文件的时候CPU...

  • 构建node.js应用模块

    在这里,开始Node.js的学习,通过构建一个基础的HTTP服务器,来进入学习。 node.js简介 Node.j...

  • node配置模块化导入导出

    node的前一篇写过配置node的跨域,今天我们在上一篇的基础上进行重构让node支持模块化的导入导出(impor...

  • Vue学习第一天

    基础知识 node 安装 Node(傻瓜式安装) npm基础 npm 之于 Node.js ,就像 pip 之于 ...

  • 前端Node.js 基础

    一 .Node.js 基础 目录 Node开发概述Node运行环境搭建Node.js快速入门 1. Node开发概...

  • node服务器系列(二)nginx

    前言 上一篇我们完成了node服务器搭建的基础,可以通过node app 来跑起来基本的node应用了,这篇我们将...

网友评论

      本文标题:node学习之node基础篇

      本文链接:https://www.haomeiwen.com/subject/tghapxtx.html