昔洛 的个人博客 昔洛 的个人博客

Bug不空,誓不成佛

目录
NodeJS 后端编程 (上)
/      

NodeJS 后端编程 (上)

学习内容

  • Nodejs 简介
  • Nodejs 中的 js 与浏览器中的 js 区别
  • Nodejs 模块的概念

Nodejs

什么是 Nodejs

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHPPythonPerlRuby 等服务端语言平起平坐的脚本语言。 [2]  发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

NodeJs 的下载安装与运行

  • 下载
    • 官网: https://Nodejs.org/en/
    • 中文网:http://Nodejs.cn/
    • 版本说明:
      • LTS: 长期稳定版(Long Term Support))。 项目开发建议使用长期稳定版
      • Current: 最新版。最新版包含了一些新功能,如果想学习最新的功能,则可以使用该版本。最新版可能会有一些未知的bug。
  • 安装:下载完后无脑下一步就行。
  • 运行:
    • 方式一:在终端中输入 node,即可进入自带的 REPL 环境,编写 JS 代码即可运行replnode.gif
    • 方式二:运行一个 js 文件,使用终端窗口输入 node path(js 文件的路径名)即可执行 js 文件,例如 node index.js
  • 语言:由于 NodeJs 也遵循 ECMAScript 的规范,并且是服务端的编程,其支持 ES6 及其以上,所以推荐 NodeJS 编程使用 ES6 语法,可从以下网站进行语法查询:

NodeJs 和 浏览器的 JavaScript 区别

nodejs 和浏览器的关系

  • 相同之处:都可以运行(ECMAScript)代码
  • 不同之处
    • 1562665535479.png
    • 安装了浏览器这个软件,它不但可以执行ECMAScript,浏览器这个软件内置了window对象,所以浏览器有处理DOM和BOM的能力。
    • 安装了NodeJs这个软件,它不但可以执行ECMAScript,NodeJS这个软件也内置了一些东西,包括全局成员和模块系统,同时还可以载入第三方模块来完成更强大的功能。
    • nodejs是一个容器(不是一个新语言),ECAMScript程序可以在这个容器中运行。
      • 不能在nodejs使用window对象,也不能在nodejs使用dom操作。因为nodejs中并不包含这个对象。
    • javascript是由三个部分组成:ECAMScrtipt,Bom,Dom

Nodejs 模块的概念和使用

在项目的开发过程中,随着功能的不断增强,代码量,文件数量也急剧增加,我们需要把一个大函数拆成小函数,把一个大文件拆成小文件,把一个大功能拆成若干个小功能。这里很自然地就涉及到模块化的想法:一个复杂的系统分成几个子系统,体现在几个小的文件在一起组成一个大的文件,集成强大的功能。遗憾的是es5不支持模块化:就是在一个js文件内不能引入其他js文件。不能通过一个大文件去集成若干个小文件。

模块化

一个js文件中可以引入其他的js文件,能使用引入的js文件的中的变量、数据,这种特性就称为模块化。使用模块化开发可以很好的解决变量、函数名冲突问题,也能灵活的解决文件依赖问题。

  • 以前es5不支持模块化,让前端人员很为难。为了让支持模块化,我们一般会借用第三方库来实现:
  • 现在
    • es6原生语法也支持模块化
    • Nodejs内部也支持模块化(与es6的模块化有些不同之处),具体的语法在后面来介绍

nodejs中的模块

每个模块都是一个独立的文件。每个模块都可以完成特定的功能,我们需要时就去引入它们,并调用。不需要时也不需要要管它。(理解于浏览器的js中的Math对象)

  • nodejs模块的分类

    • 核心模块
    • 自定义模块
      • 程序员自己写的模块。就相当于我们在学习js时的自定义函数。
    • 第三方模块
      • 其他程序员写好的模块。nodejs生态提供了一个专门的工具来管理第三方模块。
      • 相当于别人写好的函数或者库。例如前面学习的JQuery库,arttemplate等。
  • 核心模块

    官网文档 https://nodejs.org/dist/latest-v10.x/docs/api/
    中文文档 http://nodejs.cn/api/
    学会查 API,远远比会几个 API 更重要

  • 核心模块就是 Node 内置的模块,需要通过唯一的标识名称来进行获取。

  • 每一个核心模块基本上都是暴露了一个对象,里面包含一些方法供我们使用

  • 一般在加载核心模块的时候,变量的起名最好就和核心模块的标识名同名即可

内事不懂问百度,外事不懂问谷歌~