node开发概述
node是什么
Node是一个基于Chrome V8引擎的JavaScript代码运行环境
运行环境
- 浏览器(软件)能够运行JavaScript代码,浏览器就是JavaScript代码的运行环境
- Node(软件)能够运行JavaScript代码,Node就是JavaScript代码的运行环境
为什么选择node
node.js运行环境安装
node官网:https://nodejs.org/en/
安装node
-
进入之后:
目前稳定版更新到12.18.3,实验班14.6.0(推荐大家使用稳定版)
-
第二步,选择上面选项DOWNLOADS
根据自己的系统以及位数下载相应的.msi安装包,我这里是Windows 64位操作系统,所以我选这个
-
第三步,下载获得.msi安装包打开之后
一路next,在选择安装目录时,尽量不要选择带中文的目录,最后进入install确认安装页面
-
安装完成之后,通过命令行node -v来看看是否安装成功
运行PowerShell,输入node -v,只要出现版本号代表安装成功
几种安装失败的情况
1. 权限不足2502、2503
-
第一步,以管理员身份运行power shell
-
第二步,输入msiexec /package +安装包位置,输入完回车,会弹出node安装流程,此时就是以管理员身份运行的安装包
2. 执行命令出错
- 解决方法:将node安装目录添加到环境变量中
-
第一步,找到本地node.js的安装目录
-
第二步,配置环境变量(按顺序图示)
然后一路点击确定,重新打开power shell,输入node -v就ok显示出来了
Node快速入门
1. node.js组成
- JavaScript由三部分组成:ECMAScript,DOM,BOM
- Node.js是由ECMAScript及Node环境提供的一些附加API组成的,包括文件,网络,路径等等一些更加强大的API。
graph LR
B((ECMAScipt)) --> A[JavaScript]
C((DOM)) --> A
D((BOM)) --> A
graph LR
B((ECMAScipt)) --> A[Node.js]
C((Node模块API)) --> A
2. node基础hello world
var first = 'hello world';
console.log(first);
function fn() {
console.log('fn函数被调用了');
}
fn();
for (var i = 0; i < 5; i++){
console.log(i);
}
if (true) {
console.log('123');
}
node.js在没有html文件引入js的情况下,是用命令行来执行js文件
注意:执行node命令前要先切换到编写js文件目录下
node.js全局对象global
在浏览器中全局对象是window,在Node中全局对象是global
Node中全局对象下有以下方法,可以在任何地方使用,global可以省略。
- console.log() 在控制台中输出
- setTimeout() 设置超时定时器
- clearTimeout() 清除超时时定时器
- setInterval() 设置间歇定时器
- clearInterval() 清除间歇定时器
Node.js模块化开发
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行
-
如下图就是模块化开发的例子
1. 模块化开发规范
- Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
-
模块内部可以使用exports对象进行成员导出, 使用require方法导入其他模块。
用exports.xxx模块成员导出
代码实例:
//a模块
const add = (n1, n2) => n1 + n2;
exports.add = add;
//b模块
//const a = require('./03_module-a.js');
//后缀可以省略
//引入a模块
const a = require('./03_module-a');
console.log(a.add(10, 20));
用module.exports.xxx模块成员导出
exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准
代码示例:
//模块a
const greeting = name => `hello ${name}`;
module.exports.greeting = greeting;
const a = require('./04_module.exports');
console.log(a.greeting('zhangsan'));
注意:
- 当exports和module.exports指向同一个对象时,这两个等同
//模块a
const greeting = name => `hello ${name}`;
const x = 100;
exports.x = x;
module.exports.greeting = greeting;
const a = require('./04_module.exports');
console.log(a);
//命令行输出{x:100,greeting:[Function:greeting]},里面有x,说明指向同一个对象
如果不指向同一个对象,那么以module.exports为准
const greeting = name => `hello ${name}`;
const x = 100;
exports.x = x;
module.exports.greeting = greeting;
//module.exports和exports现在指向的不是同一个对象
module.exports = {
name:'张三'
}
exports ={
name:'李四'
}
const a = require('./04_module.exports');
console.log(a);
//最后命令行输出{name:"张三"},最终以module.exports为准,所以说exports等于对象这种写法是错误写法
系统模块
概念
Node运行环境提供的API,因为这些API都是以模块化的方式进行开发的
,所以我们又称Node运行环境提供的API为系统模块
graph LR
A[ 文件模块fs ] --> B[读取文件]
A --> C[写入文件]
A --> D[创建文件夹]
系统模块fs文件操作
读取文件
//1.通过模块的名字fs对模块进行引用
const fs = require('fs');
//2.通过模块内部的readFlie读取文件内容
fs.readFile('./01_helloword.js', 'utf8', (err,doc) => {
//如果文件读取出错 , err就是一个对象 包含错误信息
//如果文件读取正确 , err就是null
//doc 是文件读取结果
console.log(err);
console.log(doc);
});
命令行输出
写入文件
路径path操作
基本语法:
path.join("路径1","路径2",...);
代码实例:
//public/uploads/avatar
const path = require('path');
const finalPath = path.join('public', 'uploads', 'avatar');
console.log(finalPath);
//命令行输出 public/uploads/avatar
注:windows系统path模块拼接的是/(反斜杠);Linux系统则是 \ (斜杠);
绝对路径
- 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录
- 在读取文件或者设置文件路径时都会选择绝对路径
- 使用__dirname获取当前文件所在的绝对路径
const fs = require('fs');
const path = require('path');
console.log(__dirname);
console.log(path.join(__dirname, '01_helloword.js'))
fs.readFile(path.join(__dirname, '01_helloword.js'), 'utf8', (err, doc) => {
console.log(err);
console.log(doc);
});
相关推荐:wantLG的《普歌-码上鸿鹄团队:配合node+MongoDB后台+vue-cli用API接口获取数据库数据》
- 作者:wantLG
- 本文源自:wantLG的《普歌-码上鸿鹄团队复习总结:node.js快速入门(环境安装、模块化等)》
- 本文版权归作者和CSDN共有,欢迎转载,且在文章页面明显位置给出原文链接,未经作者同意必须保留此段声明,否则保留追究法律责任的权利。