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