继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第1天 Node.js工程师学习笔记

萧萧啊
关注TA
已关注
手记 21
粉丝 1
获赞 0

课程章节: Node 原生开发基础入门

课程讲师: 北瑶

课程内容:

1. Node.js 是什么?

  • Node.js 不是一种独立的编程语言
  • Node.js 不是 JavaScript 框架
  • Node.js 是一个除了浏览器之外, 可以让 JavaScript 运行的环境

为什么浏览器和 Node.js 都可以运行 JavaScript 代码?

因为浏览器和 Node.js 都内置了 JavaScript V8 Engine (引擎). 它可以将 JavaScript 代码编译为计算机能够识别的机器码
JavaScript Code ==> JavaScript Engine (v8) ==> Machine Code

浏览器中运行的 JavaScript 和 Node.js 中运行的 JavaScript 有区别吗?

在浏览器中, 需要操作浏览器窗口以及 HTML 文档, 所以在 JavaScript V8 Engine 中添加了控制它们的 API, 就是 DOM 和 BOM. 所以 JavaScript 在浏览器中运行时是可以控制浏览器窗口对象和DOM文档对象的。
在 Node.js 中, 是没有 DOM 和 BOM 的, 这是浏览器环境中特有的, 在 Node.js 中添加了很多系统级别的 API,比如对操作系统中的文件和文件夹进行操作。获取操作系统信息,比如系统内存总量是多少,系统临时目录在哪,对系统的进程进行操作等等。

Node.js 能做什么?

  • 后端 Web 服务器开发与网络爬虫开发
  • 脚手架命令行工具
  • 图形界面应用程序开发

2. 本地开发环境搭建

安装成功后, 打开命令行, 输入: node -v, 则会显示 node 的版本号, 表示安装成功. 如果命令行显示'node' 不是内部或外部命令…… 的提示,则表示 node 没有加入到系统环境变量中,我们需要找到 node 的安装路径,将路径添加到系统环境变量之后,重新开启命令行就可以了

3. 文件操作与模块化编程的概念

文件操作

Node.js 是可以操作系统级别的运行环境, 而一个操作系统最基本的能力就是对文件的管理, 那么如何使用 Node.js 调用系统提供的 api 完成对文件的一些操作呢? 比如将一个字符串写入到一个文件, 查看这个文件内容并追加 .
在浏览器中,使用 JS 操作 DOM 节点,需要使用浏览器提供的 Document API , 而在 Node 操作文件也是同理,Node 一定给我们提供了相关的 API 文档地址: https://nodejs.org/dist/latest-v16.x/docs/api/fs.html
Node.js 提供了 fs 这个 api, 里面有操作文件的几乎所有操作

  • 文件读写
// 引入模块
var fs = require('fs');
// 向 a.txt 文件中写入内容
fs.writeFile('./a.txt', '赟赟', function (err) {
  console.log(err);
})

// 向 a.txt 文件中读取内容
fs.readFile('./a.txt', 'utf8', function (err, data){
  console.log(err);
  // 回调函数 读取成功执行
  console.log(data)
})
  • 追加内容
// 引入模块
var fs = require('fs');

fs.readFile('a.txt', 'utf8', function(err, data) {
	let txt = data + '赟赟';
	fs.writeFile('a.txt', txt, function(e) {
		if(!e){
			console.log('追加成功')
        }
    })
})

require('fs') 到底什么意思?

4. 内置模块与模块化编程

fs 是一个 node 的内置模块, node 都是以模块的形式给我们提供的, 而要使用这些模块, 首先就是需要使用 require('模块名'); 的方式引入。

模块化方案

  • CommonJS
  • AMD
  • ECMAScript Module 简称 ESM 规范

ESM 规范

模块导出操作(exports)

命名导出, 导出一个具体的值

var val = '导出的内容';
export { val };
// 可重命名
export { val as value }
// 可立即导出
export var val = '导出内容'

默认导出(Default Export)

导出一个值作为源模块的默认导出:

export default  val;

当该文件只有一个导出时, 建议用此方法

导入(Imports)

命名导入

import  { val } from './a';
console.log(val)
// 可重命名
import  { val as value } from './a';

但是,上面的代码执行,会出现如下的报错信息:
(node:6044) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
意思就是 node 想要加载 ESM 模块化的代码,需要修改文件后缀名为.mjs 来支持或者在 \package.json 中添加 type选项,值为 module 。

{
	"type": "module"
}

为什么呢? package.json文件有什么作用呢?

CommonJS 规范

一个 JavaScript 文件就是一个模块, 在模块文件中定义的变量和函数默认只能在模块文件内部使用, 如果需要在其他文件中使用, 必须显式声明将其进行导出
在每一个模块文件中,都会存在一个 module 对象,即模块对象。在模块对象中保存了和当前模块相关信息。
在模块对象中有一个属性 exports,它的值是一个对象,模块内部需要被导出的成员都应该存储在到这个对象中。

console.log(module)

== shell ==
Module {
  id: '.',
  path: 'D:\\CodeR9000P\\fe-base-study\\node-base',
  exports: {},
  filename: 'D:\\CodeR9000P\\fe-base-study\\node-base\\m1.js',
  loaded: false,
  children: [],
  paths: [
    'D:\\CodeR9000P\\fe-base-study\\node-base\\node_modules', 
    'D:\\CodeR9000P\\fe-base-study\\node_modules',
    'D:\\CodeR9000P\\node_modules',
    'D:\\node_modules'
  ]
}

模块导出

// 模块的导出就是向 `module.exports` 对象中添加元素
var val = '赟赟'
module.exports.val = val;

模块导入

// 导入的就是 module.exports 对象
var m1 = require('./m1')
console.log(m1.a)

包管理 npm 基础命令的使用

还记得package.json 文件又有什么作用的问题吗?现在我们就来解决这个它

要搞清楚 package.json 文件的作用,我们需要先了解 Node 开发下的一个强大的配套工具 npm 。
npm 就是 node 中自带的包管理工具;
执行命令: npm init ,对项目进行初始化,此时 package.json 文件就出现了。

项目管理的元数据配置文件 package.json

"name": "usenpm", // 项目名
"version": "1.0.0", // 版本号
"description": "这是我们第一次使用npm",  // 描述信息
"main": "index.js", // 入口文件
"scripts": { // npm 设置的一些指令
    "test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [ // 关键字
    "第一次"
],
"author": "xiling", // 作者
"license": "ISC" // 当前项目的协议

其中 scripts 选项中,可以配置自定义执行脚本命令,而在前面我们配置的,Node 加载 ESM 代码,也是在这里进行的配置。
安装第三方包: npm install 包名
项目下载依赖: npm install

学习心得

通过这章的学习, 明白了浏览器 和 Node.js运行环境的区别, 对模块化编程的概念, 元数据配置文件有更深的了解

课程截图

模块化编程的三种概念
图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP