Node.js 基础
1.1 为什么学习Node.js ?
- 最简单最直接的一点,岗位需要这种技能
- 能够和后端程序员更加紧密的配合
- 网站业务逻辑前置,学习前端技术需要后端技术支撑
- 扩宽知识视野,能够站在更高的角度审视整个项目
1.2 服务器端需要做的事
- 实现网站的业务逻辑
- 实现数据的增删改查
1.3 Node的好处
使用JavaScript语法开发后端应用
一些公司要求前端工程师掌握Node开发
生态系统活跃,有大量开源库可以使用
前端开发工具大多基于Node开发
1.4 Node是什么?
Node是一个基于Chrome V8引擎的JavaScript代码运行环境。
2. Node下载安装
官网下载:链接
将Node安装目录添加到环境变量中
3. Node基础
在Node环境下执行代码,使用Node命令执行后缀为.js的文件即可
3.1 Node.js全局对象global
在浏览器中全局对象是window,在Node中全局对象是global。与js的全局对象名字作用一致
- console.log() 在控制台中输出
- setTimeout() 设置超时定时器
- clearTimeout() 清除超时时定时器
- setInterval() 设置间歇定时器
- clearInterval() 清除间歇定时器
4. Node.js 的模块化开发
4.1 JavaScript 开发弊端
JavaScript在使用时存在两大问题,文件依赖和命名冲突。
4.2 软件中的模块化开发
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。
))
4.3 Node.js的模块化开发
- Node.js规定,一个js文件就是一个模块,模块内部的函数、变量默认情况下在外部是无法得到的,被隔离的。
- 模块内部可以使用exports对象导出成员,使用require 导入其他模块。
模块成员导出:
1 | // a.js |
模块成员导入:
1 | // b.js |
其中,导入模块时,后缀名可以省略 (省略.js)
4.4模块成员的另一种导出方式
1 | module.exports.version = version; |
exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准,module.exports才是老大哥了。
5. 系统模块
Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以称Node运行环境提供的API为系统模块
5.1 系统模块fs 文件操作
读取内容
1 | //导入系统模块 |
写入内容
1 | //需要写入的内容 |
5.2 路径操作path
路径拼接:从url解析出来的路径不一定是服务器中实际上的物理路径,这里往往需要进行路径拼接才能得到实际地址,获取正确的内容。
1 | const path = require('path'); |
在读取文件或者设置文件路径时都会选择绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录
6. 第三方模块
别人写好的、具有特定f功能的、我们能直接使用的模块即第三方模块,又名包。
第三方模块的两种存在方式:
- 以js文件的形式存在,提供实现项目具体功能的API接口。
- 以命令行工具形式存在,辅助项目开发
npmjs.com
:第三方模块的存储和分发仓库
6.1 获取第三方模块
npm (node package manager)
: node的第三方模块管理工具
安装:npm install 模块名
卸载:npm uninstall 模块名
全局安装和本地安装:
- 命令行工具:全局安装 后面加
-g
- 库文件:本地安装
6.2 Gulp模块
它是基于node平台开发的前端构建工具
它可以:
- 项目上线,HTML、CSS、JS文件压缩合并
- 语法转换(es6、less …)
- 公共文件抽离
- 修改文件浏览器自动刷新
gulp的使用
- 使用
npm install gulp
下载gulp库文件 - 在项目根目录下建立
gulpfile.js
文件 - 重构项目的文件夹结构
src
目录放置源代码文件,dist
目录放置构建后的文件 - 在
gulpfile.js
文件中编写任务 - 在命令行工具中执行gulp任务
gulp插件:
1 | gulp-htmlmin :html文件压缩 |
使用:
1 | //引入gulp模块 |
7. package.json文件
node_modules文件夹问题
文件夹以及文件过多过碎,当我们将项目整体拷贝给别人的时候,,传输速度会很慢很慢.
当别人下载模块时版本不一致也可能导致运行失败。
package.json 存储了包的名称,package-lock.json 存储了包的关系,包括版本号,二者方便了人们,可以直接在package.json目录下使用命令npm install
就可以下载项目所需要的包了。
作用:
项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。
使用npm init -y命令生成。
项目依赖
在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
使用npm install 包名
命令下载的文件会默认被添加到 package.json 文件的 dependencies 字段中
1 | "dependencies": { |
开发依赖
在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖
使用npm install 包名 --save-dev
命令将包添加到package.json文件的devDependencies字段中
1 | "devDependencies": { |
8. package-lock.json
作用:
锁定包的版本,确保再次下载时不会因为包版本不同而产生问题,可以加快下载速度