admin管理员组

文章数量:1655531

目录

 

一、Node.js可以做什么

二、什么是 Node.js

三、Node.js环境安装

四、使用node命令执行JS文件

五、终端窗口

1、终端窗口补充

2、vscode自带终端

3、终端使用技巧

六、模块化介绍

1、什么是模块化

2、模块的分类


 

一、Node.js可以做什么

        Node.js 作为一个 JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于 Node.js 提供的这些基础功能,很多强大 的工具和框架如雨后春笋,层出不穷,所以学会了 Node.js ,可以让前端程序员胜任更多的工作和岗位!

  • 基于 Express/Koa 框架(Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网),可以快速构建 Web 应用

  • 基于 Electron 框架(Electron | Build cross-platform desktop apps with JavaScript, HTML, and CSS.),可以构建跨平台的桌面应用

  • 基于 restify 框架(Restify),可以快速构建 API 接口项目

  • 读写和操作数据库、创建实用的命令行工具辅助前端开发

        总之,Node.js 是大前端时代的“大宝剑”,有了 Node.js 这个超级 buff 的加持,前端程序员的行业竞争力会越来越强!

二、什么是 Node.js

        Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.翻译过来中文就是Node.js 一个基于 Chrome V8 引擎的 JavaScript 运行环境。可以通俗的理解为:Node.js 为 JavaScript 代码的正常运行,提供的必要的环境。

Node.js 的官网地址: Node.js

Node.js中的JavaScript运行环境:

 注意:

  • 浏览器是 JavaScript 的前端运行环境。(浏览器是客户端安装的软件)

  • Node.js 是 JavaScript 的后端运行环境。(正常情况下,Nodejs要安装到服务器上)

  • Node.js 中无法调用 DOM 和 BOM 等 浏览器内置 API。

三、Node.js环境安装

        如果希望通过 Node.js 来运行 Javascript 代码,则必须在计算机上安装 Node.js 环境才行。

        安装包可以从 Node.js 的官网首页直接下载,进入到 Node.js 的官网首页,点 击绿色的按钮,下载所需的版本后,双击直接安装即可。

        进入官网(中文),可以看到如下两个版本:建议使用 长期支持版

 

  • LTS 为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装 LTS 版本。

  • Current 为新特性尝鲜版,对于热衷于尝试新特性的用户来说,推荐安装 Current 版本的 Node.js。但是,Current 版本 中可能存在隐藏的 Bug 或安全性漏洞,因此不推荐在企业级项目中使用 Current 版本的 Node.js。

        安装成功后,打开终端(黑窗口,或者蓝窗口),在终端输入命令 node –v 后,按下回车键,即可查看已安装的 Node.js 的版本号。

四、使用node命令执行JS文件

此种方式,比较常用。可以运行写到 “xx.js” 里面的JS代码,可以运行JS文件中的代码。

操作步骤:

  • 打开终端

  • 注意终端的路径,注意在此路径中,是否能找到你的js文件。

  • 输入 “node 要执行的js文件

  • 执行文件的时候,需要保证 node xxx.js 这种格式

  • node只能运行JS代码(也就是不要 node xxx.html)

五、终端窗口

1、终端窗口补充

  • Windows

    • 自带 cmd (在文件夹路径位置,输入cmd,回车)

    • 自带 powershell (在文件夹路径位置,输入powershell ,回车)

    • 商店下载 Windows Terminal Preview

    • 安装git之后,多 git bash here

2、vscode自带终端

  • xxx.js 文件上,鼠标右键 --> 在终端中打开 --> 出现一个终端窗口 --> node xxx.js

常见问题

  • 在vscode终端中,运行node命令报错,重启vscode。

  • 执行node的路径一定要对(vscode中,文件上右键,在终端中打开,这样的路径肯定是对的)

  • 注意,尽量不要使用多个终端,首次打开终端后,后续建议使用快捷键(Ctrl + ~)切换终端

PS:其实无论是windows,还是mac系统,都可以使用第三方的终端工具或美化默认的终端。

3、终端使用技巧

  • 按 ↑ 找到曾经执行过的命令。按 ↓ 相反。

  • 按 tab 键,可以自动补全命令。

  • clear命令用于清屏。(cmd中使用cls命令清屏)

六、模块化介绍

1、什么是模块化

        模块化,就是把一个大的文件拆分成若干小文件,而且还能把小文件通过特定的语法组合到一起的实现过程。

        比如手机、电脑....等等几乎所有,都是模块化的设计,拿电脑来说,可以把电脑拆分成显示器、键盘、硬盘、内存等一个一个的小模块,当然也能够组装到一起。

模块化的优势:

  • 更利于维护(比如电脑屏幕坏了,只换屏幕就可以了;比如想升级显卡,只换显卡就行了);

  • 更好的复用性(比如有一块移动硬盘或U盘,大家都能用)

Node中,规定每个JS文件都是一个小模块。一个项目由许许多多的小模块(JS文件)组合而成。

Node中模块化的优势:

  • 更利于维护(比如,项目需要对登录模块升级,则不会影响其他模块)

  • 更好的复用性(比如有一个公共的函数,封装起来。其他所有JS文件都能使用这个函数)

2、模块的分类

  • 自定义模块

    • NodeJS中,创建的JS文件都是自定义模块。(也就是处处皆模块)

  • 内置模块(核心模块)

    • 安装Node之后,自带了很多内置模块。我们可以直接加载使用他们。

  • 第三方模块

    • 其他人编写的模块,发布到 npm 网站 上,我们可以下载使用。

(1)自定义模块

        我们创建的每个JS文件都是一个自定义模块,并且具有模块作用域,也就是在一个模块中创建的变量、常量、函数等等一切,都只能在当前模块中使用。

  • 共享(导出/暴露)内容给其他模块用,需要使用 module.exports 导出内容。

    • module 是Node中的一个全局对象,对象包含当前模块的详细信息。

    • module.exports 是模块的出口,通俗的说,就是导出内容用的,默认值是 {}

    • 比如,02-test.js 导出 age、name、fn 给其他模块用,可以 module.exports = {age, name, fn}

  • 其他模块,如果需要使用上述模块导出的内容,可以使用 require() 加载

    • let 结果 = require('模块路径')

    • 比如,let test = require('./02-test');

    • 加载自定义模块,必须加路径,即使是 ./ 也必须加。但是可以省略后缀。

示例:

01-导出内容

let age = 30;
let name = 'laotang';
let height = '175cm';
let weight = '75kg';
let square = x => x * x;

// 导出age、name、fn给其他模块使用
module.exports = { age, name, square };

02-导入内容 

let test = require('./02-test');

console.log(test); // { age: 30, name: 'laotang', square: Function... }

        一个模块导出什么,另一个模块加载后,就会得到什么。就比如,我给你三个苹果,你只能得到三个苹果,不可能得到其他的。

(2)内置模块

内置模块是Node.js 平台自带的一套基本的 API(功能模块)。也叫做核心模块。

下面介绍几个内置模块。

注意,加载内置模块,不能写路径,这是和加载自定义模块不一样的

 

01-path模块:

  • path 是 Node 本身提供的 API,专门用来处理路径。

  • path 路径 | Node.js API 文档

加载模块:

// 使用核心模块之前,首先加载核心模块
let path = require('path');
// 或者
const path = require('path');

调用path模块中的方法,来处理相应的问题,下面列举path模块中的几个方法 :

方法作用
path.basename(path[, ext])返回 path 的最后一部分(文件名)
path.dirname(path)返回目录名
path.==extname==(path)返回路径中文件的扩展名(包含.)
path.format(pathObject)将一个对象格式化为一个路径字符串
path.==join==([...paths])拼接路径
path.parse(path)把路径字符串解析成对象的格式
path.resolve([...paths])基于当前工作目录拼接路径
```js
// readFile -- 异步读取文件
fs.readFile('./test.json', (err, data) => {
    if (err) {
        console.log('读取文件出错');
    } else {
        console.log(data); // 读取到的二进制数据
        console.log(data.toString()); // 得到原始数据
    }
});

fs.readFile('./test.json', 'utf-8', (err, data) => {
    if (err) {
        console.log('读取文件出错');
    } else {
        console.log(data); // 读取到的原始数据
    }
});
```

```js
// writeFile -- 异步写入文件
fs.writeFile('./abc.html', 'hello world', (err) => {
    if (err) {
        console.log('写入文件失败');
    } else {
        console.log('文件写入成功');
    }
});
```

 

 

本文标签: nodejs