Node基础
Node开发概述
为什么要学习服务器端开发基础
- 能够和后端程序员更加紧密的配合。
- 网站业务逻辑前置,学习前端技术需要后端技术支撑(Ajax)。
- 扩展知识视野,能够站在更高的角度审视整个项目。
服务器端开发要做的事情
- 实现网站的业务逻辑。
- 数据的增删改查。
为什么选择Node
- 使用 JavaScript 语法开发后端应用。
- 一些公司要求前端工程师掌握 Node。
- 生态系统活跃,有大量开源库可以使用。
- 前端开发工具大多基于 Node 开发。
Node是什么
- Node 是一个基于 Chrome V8引擎的 JavaScript 代码运行环境。
- 运行环境:
- 浏览器(软件)能够运行 JavaScript 代码,浏览器就是 JavaScript 代码的运行环境。
- Node(软件)能够运行 JavaScript 代码,Node 就是 JavaScript 代码的运行环境。
Node运行环境搭建
- 环境安装:
Node官网
Node.js快速入门
Node.js组成
- JavaScript 由三部分组成,ECMAScript、DOM、BOM。
- Node.js 是由
ECMAScript
及Node环境
提供的一些附加App
组成的,包括文件、网络、路径等等一些更加强大的API。
Node.js的基础语法
所有 ECMAScript 语法在 Node 环境中都可以使用。
Node.js模块化开发
JavaScript 开发弊端
- JavaScript 在使用时存在两大问题:
文件依赖
和命名冲突
。-
文件依赖
-
命名冲突:这种情况下,后面的值会覆盖掉前面的值。
-
软件中的模块化开发
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。
Node.js模块化开发规范
-
Node.js规定一个
JavaScript文件
就是一个模块,模块内部定义的变量和函数
默认情况下在外部无法得到
。 -
模块内部可以使用
exports对象进行成员导出
,使用require方法
导入其他模块。
-
导入模块时,后缀可以省略。
模块成员导出的另一种方式
module.exports.version = version
module.exports.sayHi = sayHi
exports
是module.exports
的别名(地址引用关系),导出对象最终以module.exports为准
。- 当 exports 对象和 moudle.exports对象指向的不是同一个对象时,以module.exports为准。
系统模块
什么是系统模块
Node 运行环境提供的 API都是以模块化的方式进行开发的,所以我们又称 Node 运行环境提供的 API 为系统模块。
系统模块fs文件操作
f:file 文件;s:sysstem 系统,文件操作系统。
const fs = require('fs');
- 读取文件内容
fs.readFile('文件路径/文件名称'[,'文件编码'],callback);
- 读取文件语法示例
// 读取上一级 css 目录下的 base.css
fs.readFile('../css/base.css','utf-8'(err,doc) => {
// 如果文件读取发生错误,参数 err 的值为错误对象,否则 err 的值为 null。
// doc 参数为文件内容
if(err == null){
// 在控制台输出文件内容
console.log(doc)
}
})
文件写入内容
fs.writeFile('文件路径/文件名称','数据',callback)
const content = '<h3>正在使用 fs.writeFile 写入文件内容</h3>'
fs.writeFile('../index.html',content,err ==> {
if(err != null){
console.log(err)
return
}
console.log('文件写入成功')
})
如果写入的文件不在选择的文件路径下,系统会自动创建这个文件,
系统模块 path 路径操作
为什么要进行路径拼接?
- 不同操作系统的路径分割符不统一。
- /public/upload/avatar
- Windows 上是 \ /
- Linux 上是 /
路径拼接语法
path.join('路径','路径'...)
// 导入 path 模块
const path = require('path')
// 路径拼接
let finialPath = path.join('itcast','a','b','c.css')
// 输出结果 itcast\a\b\c.css
相对路径 VS 绝对路径
- 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录。
- 在读取文件或者设置文件路径时都会选择绝对路径。
- 使用
__dirname
获取当前文件所在的绝对路径。
第三方模块
什么是第三方模块
别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名包。
第三方模块有两种存在形式
- 以 js 文件的形式存在,提供实现项目具体功能的 API 接口。
- 以命令行工具形式存在,辅助项目开发。
获取第三方模块
第三方模块的存储和分发
npm(node package manager ):node 的第三方模块管理工具。
- 下载:npm install 模块名称
- 卸载:npm uninstall 模块名称
- 本地安装:将模块下载到当前项目中,供当前的项目使用。
- 全局安装:将模块下载到一个公共的目录中,所以项目都可以使用。
- 命令行工具:全局安装。
- 库文件:本地安装。
第三方模块 nodemon
- nodemon 是一个命令行工具,用以辅助项目开发。
- 在 Node.js 中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐。
- 使用步骤
- 使用
npm install nodemon -g
下载它。 - 在命令行工具中用 nodemon 命令代替 node 命令执行文件。
- 使用
第三方模块 nrm
- nrm(npm registry manager):npm 下载地址切换工具。
- npm 默认的下载地址在国外,国内下载速度慢。
- 使用步骤
- 使用 npm install nrm -g 下载它。
- 查询可用下载地址列表 nrm ls。
- 切换 npm 下载地址 nrm use 下载地址名称。