Node开发概述
- 服务器开发要实现的功能
- 实现网站的业务逻辑;
- 数据的增删改查;
- 为什么选择Node?
- 使用JavaScript语法开发后端应用;
- 一些公司要求前端工程师掌握node开发;
- 生态系统活跃,有大量开源库可以使用。
Node是一个基于Chrome V8引擎的js代码运行环境;
- 运行环境
- 浏览器(软件),能够运行JavaScript代码,就是js代码的运行环境;
- Node(软件),能够运行JavaScript代码,就是js代码的运行环境;
- 官网:点击跳转到官网
- 当前会使用的版本
- 10.13.0.LTS (long Term support)稳定版本
- 11.1.0 Current 实验室最新版
安装失败可能会出现问题的原因
- 错误代码2502、2503
失败原因:系统账号权限不足;
解决办法:1. 以管理员身份运行Powershell命令行工具;2.输入运行安装包命令‘ msiexec/package node + 安装包位置’。 - 执行命令报错
失败原因:Node安装目录写入环境变量失败;
解决方法:右键‘此电脑’,选择属性 -> 高级系统设置 -> 高级 -> 环境变量;点击"path"选择编辑,将Nodejs的路径保存后退出;重启powershell,输入“node -v”检查。
Path环境变量:指存储系统中的目录,在命令行中执行命令的时候系统会自动去这些目录中查找命令的位置。
Node.js 是由ECMAScript及Node环境提供的一些附加API组成。
使用node执行js文件的方法
- 第一种
- 点击win键,输入power shell,点击跳转,使用cd …\目录转到待执行的目录下;
- 输入node 01-hello.js 回车,就运行成功了。
- 第二种
- 打开待执行的js文件目录;
- 按住shift,右键单击文件夹内空白处;
- 选择 在此处打开power shell;
- 输入node 01-hello.js 回车,就运行成功了。
Node.js模块开发
- Node.js 规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数,默认情况下在外部是无法得到的;
- 模块内部可以使用exoprts对象进行成员导出,使用require方法导入其他模块。
模块成员的导入、导出
- 第一种
//a.js
let version = 1.0;
const sayHi = name =>`您好,${name}`;
exports.version = version;
exports.sayHi = sayHi;
//b.js
let a = require('./02-模块成员导出.js');
console.log(a);
console.log(a.version);
console.log(a.sayHi('和马'));
最后在power shell中 node b.js 即可。
- 第二种
//a.js
const greeting = (name) => `hello, ${name}`;
const x = 100;
module.exports.x = x;
module.exports.greeting = greeting;
// b.js
const a = require('./03-module exports.js');
console.log(a);
console.log(a.greeting('mika'));
最后在power shell中 node b.js 即可。
注意:
- exports 是 module.exports 的别名(地址引用关系),导出对象始终以 module.exports 为准;
- js开发弊端:存在文件依赖和命名冲突问题;
系统模块
- Node运行环境提供的API,因为这些API 都是以模块化的方式进行开发的,所以我们又称Node运行环境提供的API 为系统模块。
文件模块FS(file system)
主要分为读取文件、写入文件、创建文件夹三部分;
- 引入
const fs = require('fs');
- 读取文件内容
fs.readFile('文件路径(文件名)'[,'文件编码'],callback);
示例:
//通过模块的名字fs对模块进行引用
const fs = require('fs');
//读取文件内容
fs.readFile('./01-hello.js','utf-8',(err,doc)=>{
if(err == null){
console.log(doc);
}else{
console.log(err);
}
})
- 写入文件内容
fs.writeFile('文件路径(文件名)','数据',callback);
示例:
const fs = require('fs');
//写入内容
fs.writeFile('./06-demo.txt','使用fs写入的内容',err =>{
if(err != null){
console.log(err);
return;
}
console.log('文件内容写入成功');
})
路径拼接
- 不同操作系统的路径分隔符不统一;
- window是“ / ” 或 “ \ ”;
- lunix是“ / ”;
路径拼接语法
path.join(‘路径’,‘路径’,…)
相对路径VS绝对路径
- 大多数使用绝对路径,因为相对路径有时相对的是命令行根据的当前目录;
- 在读取文件或没有设置文件路径时,多选绝对路径;
- 使用__dirname获取当前所在文件的绝对路径;
第三方模块
- 别人写好的具有特定功能的,我们能直接使用的模块即第三方模块,由于通常由多个文件夹组成又称包。
- 存在形式
JS文件,提供实现项目具体功能的API接口
命令行工具形式,辅助项目开发 - 获取
网站:https://www.npmjs.com/
第三方管理工具:npm(node,package,manager)
下载:npm install 模块名称
卸载:npm uninstall 模块名称
本地:下载到本地,只有当前项目可以使用(命令行工具)
全局:下载到公共区域,供全局使用(库文件)
nodemon
- 是一个命令行工具,用以辅助项目开发;
- 作用:监控文件保存动作,执行文件;
- 使用步骤
npm install nodemon -g
在命令行工具中使用nodemon命令替代node命令执行文件
断开当前nodemon操作 ctrl+C
nrm
- 全称:npm registy manager
- 使用步骤
安装:npm install nrm -g
显示当前可下载地址:nrm ls
切换npm下载地址:nrm user 下载名称