#6 JavaScript & Node.js

前几天说了很多纯 JavaScript 及 DOM 的东西了,该为进入 Node.js 做准备了,所以今天来说说为什麽我们需要 Node.js 以及 Node.js 和 NPM 到底是什麽。

JavaScript 是怎麽执行的

我们前几天都是在浏览器上执行 JavaScript,看起来也挺好玩的,JavaScript 可以帮我们完成许多事。

所有我们写的 JavaScript 能在浏览器中执行都是因为有浏览器中的 JavaScrript 直译器 (JavaScrript 引擎,其实不只是一般直译器) 「看了」你写的程序後叫电脑执行的。

每个浏览器都有自己的 JavaScript 引擎,这里举出几个常用浏览器的 JavaScript 引擎:

  • Firefox: SpiderMonkey
  • Safari: Nitro
  • Chromium Family: V8

这里就有个问题可能会发生:相同 JavaScript 程序码在不同浏览器上的表现可能会不尽相同。所有的 JavaScript 引擎都是在实现 JavaScript 标准,但 JavaScript 标准是每年都在变的,所以可能某些引擎还没实作出来就没办法使用了。

如果在写 JavaScript 时不确定某功能有没有被广泛支援,可以在 MDN 或者是 can i use 上查询。

我们为什麽会需要 Node.js

所以为什麽我们会需要装Node.js 在电脑上?

为什麽我们不直接随便搬一个 JavaScript 引擎过来用就好?原因是 JavaScript 引擎本身是用来处理程序的执行与逻辑的,在浏览器中很多东西其实都由浏览器处理好了,像是网路连线之类的。而且在浏览器中的环境毕竟为了安全,所以较直接在电脑环境中封闭,比如说档案系统的存取又或者是网路连线的并行数都会被浏览器限制,你总不希望有人在你浏览网站时拿你的电脑挖矿吧。

Node.js 所使用的 JavaScript 引擎就是 Chrome 的 V8。为了让开发者可以利用 JavaScript 来跟电脑互动,Node.js 做了许多的介面让你的 JavaScript 可以存取档案系统、发送大量并行请求、与其他程序互动之类的。

毕竟你的 JavaScript 一般不会编译成执行档,所以还是要用 Node.js 来跑你的程序码。

如何安装 Node.js

import node_install_tutorial from "google-search";

我不想花太多时间在重复教怎麽装 Node.js 了,相信铁人赛已经有很多前辈写过很好的安装教学了。
但在你去安装 Node.js 前请先等等!可以先查查看好用的 NVM (Node.js Version Manager)。

NPM 是什麽

NPM 全名为 Null Pointer Missing,顾名思义就是某种遗失指针的状况。或是 No More Please,请别人停止说废话用的简称。

NPM 全名为 Node.js Package Manager,顾名思义就是 Node.js 中预设的包管理器。

所谓的包 (Package) 指的就是一套已经写好的程序,某人写好後把它注册到 Registry (类似於记录有哪些包的资料库) 上,然後其他人就可以在自己程序中引入包并使用别人写好的功能。

举例来说,如果我想要写一个爬虫程序,我可以引用别人写好的「解析HTML」的包,不需要管他的包里面的魔法是怎麽运作的直接引用解析的程序,就可以专心的研究目标网站结构,加速开发时间,听起来是不是很棒?

最好还是关心一下包是谁发布的,如果发布者没听过,或使用人数少,最好还是注意一下包的内容,毕竟它也是会在你的电脑上被执行的。

当然,NPM 只是「预设」的包管理器,其他着名的包管理器还有 yarnpnpm 等等,主要差在快取的机制造成的速度差异等等的,找一个自己习惯的用就好。


每日铁人赛热门 Top 10 (0919)

以 9/19 12:00 ~ 9/20 12:00 文章观看数增加值排名

  1. +463 Day 1 无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
    • 作者: 用图片高效学程序
    • 系列:无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
  2. +334 D05 - 准备前端环境
    • 作者: 鳕鱼
    • 系列:你渴望连结吗?将 Web 与硬体连上线吧!
  3. +313 Day 3 云端四大平台比较:AWS . GCP . Azure . Alibaba
    • 作者: 用图片高效学程序
    • 系列:无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
  4. +264 Day 2 AWS 是什麽?又为何企业这麽需要 AWS 人才?
    • 作者: 用图片高效学程序
    • 系列:无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
  5. +230 Day 4 网路宝石:AWS VPC Region/AZ vs VPC/Subnet 关系介绍
    • 作者: 用图片高效学程序
    • 系列:无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
  6. +211 Day 5 网路宝石:AWS VPC 架构 Routes & Security (上)
    • 作者: 用图片高效学程序
    • 系列:无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
  7. +204 Proxmox VE 储存基本配置
    • 作者: Jason Cheng (节省哥)
    • 系列:突破困境:企业开源虚拟化管理平台
  8. +201 [Day 01] 在享受tinyML这道美食之前
    • 作者: 史蒂芬周
    • 系列:争什麽,把AI和MCU掺在一起做tinyML就对了!
  9. +201 [Day 01] 在享受tinyML这道美食之前
    • 作者: 史蒂芬周
    • 系列:争什麽,把AI和MCU掺在一起做tinyML就对了!
  10. +198 #1 JavaScript Easy Go!
    • 作者: JacobLinCool
    • 系列:JavaScript Easy Go!

Day 1 居然第十名?!


<<:  DAY5 Messaging API 设定

>>:  那些被忽略但很好用的 Web API / FullScreen

Day 1 Introduction

前情提要 我是 siriuskoan,在这三十天内会把一些关於 flask 的知识写成文章,以供自己...

应用系统的防护基准-帐号管理与存取权限

适用人员: 技术人员(开发人员)。 适用法规: 资通安全责任等级分级办法 - 附表十资通系统防护基准...

第二十七章、燃烧吧!Three.js 小宇宙!(伍)

前言 嗨大家好,今天是铁人赛的第 27 天,也是本系列 Three.js 最後一篇罗,照惯例,最後一...

Day18 - 建立追踪清单画面

今天将使用Django提供的Generic display views建立追踪清单画面。 Gener...

Day4-Container?

Container并不是轻量的VM,Container正确的来说是作业系统(OS)的"特殊...