您当前的位置:首页 >> 视频
Node.js学习第一天
发布时间:2019-10-06
 
学习使人快乐

Node.js学习日记更新第一天

01

Node.js

是什么?

Node.js官方网站:https://nodejs.org/en/about/对Node.js的定义是:

About Node.js

As an asynchronous event driven JavaScript runtime, Node is designed to build scalable network applications. In the following "hello world" example, many connections can be handled concurrently. Upon each connection the callback is fired, but if there is no work to be done, Node will sleep.

翻译过来是说:

作为异步事件驱动的JavaScript运行时,Node旨在构建可伸缩的网络应用程序。在下面的“hello world”示例中,可以同时处理许多连接。在每次连接时都会触发回调,但是如果没有工作要做,Node将会休眠。


02

详细解释

其实按照我们日常生活能够理解的话来说呢,也就是说node.js不是一门语言,也不是库,更不是框架,而是一个JavaScript运行时环境,简单来说就是node.js可以解析和执行JavaScript打码。以前只有浏览器可以执行JavaScript代码,但现在的js可以脱离浏览器来运行,这归功于nodejs。


想必学习过JavaScript的同学都知道ECMAScript,这是一种国际标准,其中包括了JavaScript(脚本语言),DOM(文本对象模型),BOM(浏览器对象模型)。既然这里也有JavaScript,那与Node.js中的是否一样呢?

其实是不一样的,Node.js中的JavaScript包含了有ECMAScript,也就是说符合这个国际标准,但是不包含BOM和DOM。

在node这个JavaScript执行环境中,为服务器提供了一些服务器级别的操作API(例如文件的读写网络服务的构建网络通信http服务器等)。



03

Node.js

能做什么?

1.Web服务器后台

2.命令行工具(npm,git(C语言开发的),hexo)

3.对于前端开发工程师来讲,接触node最多的是它的命令行工具(自己写的很少,主要是试用别人开发的)


04

深入细节-

模块系统

* 在 Node 中没有全局作用域的概念

    * 在 Node 中,只能通过 require 方法来加载执行多个 JavaScript 脚本文件

    * require 加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题

      - 模块完全是封闭的

      - 外部无法访问内部

      - 内部也无法访问外部

    * 模块作用域固然带来了一些好处,可以加载执行多个文件,可以完全避免变量命名冲突污染的问题

    * 但是某些情况下,模块与模块是需要进行通信的

    * 在每个模块中,都提供了一个对象:`exports`

    * 该对象默认是一个空对象

    * 你要做的就是把需要被外部访问使用的成员手动的挂载到 `exports` 接口对象中

    * 然后谁来 `require` 这个模块,谁就可以得到模块内部的 `exports` 接口对象

    * 还有其它的一些规则,具体后面讲,以及如何在项目中去使用这种编程方式,会通过后面的案例来处理

  + 核心模块

    * 核心模块是由 Node 提供的一个个的具名的模块,它们都有自己特殊的名称标识,例如

      - fs 文件操作模块

      - http 网络服务构建模块

      - os 操作系统信息模块

      - path 路径处理模块

      - 。。。。

    * 所有核心模块在使用的时候都必须手动的先使用 `require` 方法来加载,然后才可以使用,例如:

      - `var fs = require('fs')`


05

端口

+ 端口号

    * ip 地址定位计算机

    * 端口号定位具体的应用程序

  + Content-Type

    * 服务器最好把每次响应的数据是什么内容类型都告诉客户端,而且要正确的告诉

    * 不同的资源对应的 Content-Type 是不一样,具体参照:http://tool.oschina.net/commons

    * 对于文本类型的数据,最好都加上编码,目的是为了防止中文解析乱码问题

  + 通过网络发送文件

    * 发送的并不是文件,本质上来讲发送是文件的内容

    * 当浏览器收到服务器响应内容之后,就会根据你的 Content-Type 进行对应的解析处理



06

推荐书籍

① 《深入浅出Node.js》

    偏理论,几乎没有实战。帮助大家理解管理有帮助(底层),后续再看。

《Node.js权威指南》

     API讲解,没有实战。

接下来还有两个新手入门很实用的网站与交流平台

http://javascript.ruanyifeng.com/

https://www.nodebeginner.org/  



END

今天是第一天开始学习Node.js并且开始写技术笔记,有很多不好的地方,也有很多不全面的地方,后续希望自己会改善,写笔记也是希望自己更够更好的记录学习,更深入的记住。虽然本公众号主要作为个人学习笔记的记录,但是同时也欢迎有兴趣一起学习的朋友共同参与,可以留言哦。


后续还会督促自己继续将自己的学习笔记发表

督促自己学习,一起进步。