Skip to content

Node.js学习笔记(一)Node,js概述及其开发对象类型 #1

Description

@yshunda

title: Node.js学习笔记(一)Node,js概述及其开发对象类型
date: 2017-09-23 21:37:48

Node,js是什么

a.Node.js是一个采用C++语言编写而成的,一个后端的Javascript运行环境(支持的系统包括*nux、Windows),它不是一个javascript应用.

b.Node.js采用了Google Chrome浏览器的V8引擎,性能很好,同时还提供了很多系统级的API,如文件操作、网络编程(包括HTTP、DNS、NET、UDP、HTTPS、TLS等)等.

c.Node.js的设计特点是以事件驱动为核心,采用异步编程的设计思想.也就是说我们使用过程中引入了了相应的模块以后,需要根据自己的业务逻辑注册相应的回调函数.这些回调函数都是异步执行的,这意味着虽然在代码结构中,这些函数看似是依次注册的,但是它们并不依赖自身出现的顺序,而是等待相应的事件触发.

Node.js发展简史

2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。
2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。
2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。
2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。
2011年7月,Node.js在微软的支持下发布Windows版本。
2012年1月,达尔离开了Node.js项目,开发工作由他的同事以及npm创始人艾萨克·施吕特(Isaac Schlueter)继续主持。
2014年2月,蒂莫西·费里斯(Timothy J. Fontaine)接任项目主管。

Node.js开发对象类型

  • 核心对象(模块)
  • 全局对象
  • 第三方对象 ( 自己写的/ npmJS官网上下载的)

核心对象(模块)

常用的核心对象(模块)有:

  • fs 模块
  • http 模块
  • 使用方法:"声明引入对象" 例如:引入文件操作对象cosnt fs = require('fs')
  • 注意:所有的API都提供了同步和异步的两个版本,
    • 同步会阻塞后续代码执行
    • 异步不会阻塞后续代码执行,nodejs官方建议我们更多的使用异步的

全局对象(Global对象)

  • javascript中有一个特殊的对象,为全局对象(Global Object),它以及它的属性都可以在全局作用域下访问,即"全局变量".在浏览器javascript中全局对象是window对象.而在Node.js中全局对象是global对象,所有全局变量(除了global本身以外)都是global对象的属性。
  • 在Node中,顶级作用域并非全局作用域,在Node模块里通过var定义的变量只属于那个模块。如果要在所有模块中使用变量,就要将其写入global中。
  • 计时器: setTimeout
  • 全局变量: __filename __dirname在global全局对象中,有两个全局变量:__filename __dirname ,分别是用于返回当前模块文件的绝对路径和模块文件所在文件夹的路径。__filename__dirname并非在全局作用域中,而是在模块作用域中。
  • 控制台对象: console
    console 是用于控制台标准备输出、标准错误等相关处理的对象
  • 进程对象 process
    • 相关属性
      • argv 获取命令行的所有参数,默认是字符串形式,中间以空格分隔
      • env 获取当前系统环境变量
    • 相关函数
      • process.pid 获取进程id
      • process.kill
  • 模块加载对象:require
    • 引入模块:require()
    • 返回模块路径: require.resolve()
      _ 模块缓存对象: require.cach()
  • 模块对象 : module
  • 模块导出对象:exports

第三方对象

- 你自己写的  require('相对路径./aaa.js');
- npm上下载的(一般不用路径)
    + 下载,自动下载到node_modules目录中
    + require('包名');

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions