◆ 能够知道什么是 Node.js
◆ 能够知道 Node.js 可以做什么
◆ 能够说出 Node.js 中的 JavaScript 的组成部分
◆ 能够使用 fs 模块读写操作文件
◆ 能够使用 path 模块处理路径
◆ 能够使用 fs 模块操作文件
浏览器中的JavaScript
浏览器中的JavaScript的组成部分
浏览器中的JS
ECMAScript(核心语法)ES3 --> ES4 --> ES5 --> ES6(2015) --> ES2016 -->ES2017 .....
变量、常量
数据类型
函数
流程控制(if、switch、for、while、for...in、continue、break)
运算符
JS内置对象(Array、String、RegExp、Date、Math....)
WebAPI (浏览器提供的API)
DOM(文档对象模型,document)
BOM(浏览器对象模型,location、history、....)
XMLHttpRequest
Canvas
...
浏览器内核
浏览器内核 包括 CSS解析引擎,包括 JS解析引擎
目前,JS解析引擎基本上从内核中独立出来了
所以,平时所说的浏览器内核一般和CSS有关系
不同的浏览器使用不同的 JavaScript 解析引擎:
Chrome 浏览器 => V8
Firefox 浏览器=> OdinMonkey(奥丁猴)
Safri 浏览器=> JSCore
IE 浏览器=> Chakra(查克拉)
etc...
其中,Chrome 浏览器的 V8 解析引擎性能最好!
Node.js简介
JavaScript 能否做后端开发
Node.js 的出现,使得JavaScript有了做后端开发的能力。
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 接口项目
读写和操作数据库、创建实用的命令行工具辅助前端开发
etc...
总之,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.js的版本号
打开终端(黑窗口,或者蓝窗口),在终端输入命令 node –v
后,按下回车键,即可查看已安装的 Node.js 的版本号。
如果你能够看到版本号,说明你已经安装成功了。
在Node.js环境中运行JavaScript
终端窗口运行(了解)
此种方式,类似于浏览器调试工具的“Console”面板,只适合运行少量的测试代码,所以了解即可。
操作步骤:
打开任意终端,直接输入 node 命令并回车
执行你的JS代码,按回车表示执行
按两次“Ctrl+C”退出。
使用node命令执行JS文件(掌握)
此种方式,比较常用。可以运行写到 “xx.js
” 里面的JS代码,可以运行JS文件中的代码。
操作步骤:
打开终端
输入 “
node 要执行的js文件
”
vscode自带终端:
xxx.js
文件上,鼠标右键 --> 在终端中打开 --> 出现一个终端窗口 -->node xxx.js
注意终端的路径,注意在此路径中,是否能找到你的js文件。
常见问题
如果在vscode终端中,运行node命令报错,重启vscode。
执行node的路径一定要对(vscode中,文件上右键,在终端中打开,这样的路径肯定是对的)
执行文件的时候,需要保证
node xxx.js
这种格式node只能运行JS代码(也就是不要 node xxx.html)
注意,最好不要使用多个终端
终端命令
// 用 node命令 执行 js 文件 ( 文件的路径相对或者绝对路径都可以) node ./index.js 使用 ↑ 键,可以快速定位到上一次执行的命令 使用 tab 键,能够快速补全路径 使用 esc 键,能够快速清空当前已输入的命令 输入 cls 命令,可以清空终端
系统存在问题解决
window7 的 powershell 问题: win7 右键增加打开 powershell选项_微电子学与固体电子学-俞驰的博客-CSDN博客_win7右键打开powershell
node 和 nodemon 问题: https://www.jianshu.com/p/321003445e13
vscode中无法使用node命令:用管理员权限打开 vscode
模块化
什么是模块化
模块化,就是把一个大的文件拆分成若干小文件,而且还能把小文件通过特定的语法组合到一起的实现过程。
比如手机、电脑....等等几乎所有,都是模块化的设计,拿电脑来说,可以把电脑拆分成显示器、键盘、硬盘、内存等一个一个的小模块,当然也能够组装到一起。
优点
模块化的优势:
更利于维护(比如电脑屏幕坏了,只换屏幕就可以了;比如想升级显卡,只换显卡就行了);
更好的复用性(比如有一块移动硬盘或U盘,大家都能用)
Node中,规定每个JS文件都是一个小模块。一个项目由许许多多的小模块(JS文件)组合而成。
Node中模块化的优势:
更利于维护(比如,项目需要对登录模块升级,则不会影响其他模块)
更好的复用性(比如有一个公共的函数,封装起来。其他所有JS文件都能使用这个函数)
了解几种模块化规范
AMD
CMD
CommonJS(Node中的模块化,使用的是这种方案)
ES6
Node使用的是CommonJS规范。
模块的分类
自定义模块
NodeJS中,创建的JS文件都是自定义模块。(也就是处处皆模块)
内置模块(核心模块)
安装Node之后,自带了很多内置模块。我们可以直接加载使用他们。
第三方模块
其他人编写的模块,发布到 npm 网站 上,我们可以下载使用。
自定义模块
我们创建的每个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');
加载自定义模块,必须加路径,即使是
./
也必须加。但是可以省略后缀。