Node基础 1(入门了解)
Node.js基础-终端基本使用
配置环境变量(可执行文件路径)之后,就可以在终端快捷执行命令;
终端文件操作常用命令:
md:创建目录;
rmdir(rd):删除目录,目录内没有文档
rd /s/q abc:删除子目录(所有的 无提示)
del:删除文件
rm 文件名:删除文件
cat 文件名:查看文件内容
cat > 文件名:向文件中写入内容
echo on a.txt:创建文件
echo on > a.txt:创建文件
Node.js基础-环境安装配置
使用的Mac系统,安装包下载地址:https://nodejs.org/
(base)$ node -v
v12.16.3
使用nvm可以进行多版本安装包的管理:
- 为了开发方便,提前调试新版本;
- window下多版本安装方式:
- 卸载已有的Node.js
- 下载nvm(nvm-windows)
- 在dev目录中创建两个子目录nvm和nodejs
- 并且把nvm包解压进nvm目录中
- 在install.cmd文件上面右键选择“以管理员身份运行”
- 打开cmd窗口直接回车生成settings.txt文件,修改配置信息为两个子目录nvm和nodejs两个子目录路径
- 配置nvm和Node.js环境变量:
- NVM_HOME: C:\dev\nvm
- NVM_SYMLINK: C:\dev\nodejs
- 把配置好的两个环境变量加到Path中;
常用nvm命令:
- nvm list //查看已下载的nodejs包
- nvm install latest //安装最新版本nodejs
- nvm install 10.0.2 //安装多版本 指定版本
- nvm use 10.0.2 //切换指定版本的nodejs
- node -v //查看当前使用的nodejs版本
Node.js基础-全局成员概述
hello world
与浏览器提供的node环境使用类似:
(base) flowers-MacBook-Pro:~ huaqiang$ node
Welcome to Node.js v12.16.3.
Type ".help" for more information.
> console.log('hello world')
hello world
命令行方式REPL:read-eval-print-loop(读取 执行 打印 循环)
终端特有的:
_
:表示最后一次执行语句的结果;.exit
:执行该命令,可以退出REPL系统;
执行js文件
将代码写到js文件中,执行相应的js文件;
// 01.js
console.log('hello flower')
// node 执行
(base) flowers-MacBook-Pro:~ huaqiang$ node 01.js
Node.js基础-初识模块化
感兴趣的可以移步阅读Node.js API文档
与浏览器node环境不同不同,本地的node环境不存在window对象,但是有一个类似的对象,叫global;
全局对象global的成员:
//包含文件名的全路径
console.log(__filename);
//文件目录的全路径(不包含文件名)
console.log(__dirname);
//定时函数
var timer = setTimeout(function(){
console.log(123);
// clearTimeout(timer)//执行之后 清空
},1000);
clearTimeout(timer)//紧接着清空 延时调用的方法是不会执行的
// Buffer
// console
global.console.log('')//global可以省略
// process //进程对象
//* REPL执行
> console.log(process.argv)
[ '/usr/local/bin/node' ]
//* JS文件node执行
$ node 01.js
[ '/usr/local/bin/node', '/Users/huaqiang/Desktop/node/01.js' ]
//* JS文件node执行 带参数
(base) flowers-MacBook-Pro:node huaqiang$ node 01.js para1
[
'/usr/local/bin/node',
'/Users/huaqiang/Desktop/node/01.js',
'para1'
]
// exports
// module
// require()
exports module require() 这三者是与模块化相关的
Node.js基础-模块成员导出详解
1.模块化开发相关成员属性:
- exports
- module
- require()
2.模块化开发:
- 解决命名冲突
- 优化文件依赖
3.前端:模块化规范/标准
- AMD 对应的实现是 requirejs
- CMD 对应的实现是 seajs(阿里的)
4.服务端:模块化规范/标准
- CommonJS 对应的实现是 Node.js(也是我们正在学的)
5.模块化相关的规则:
- 如何定义模块:1个js文件就是一个模块,模块内部的成员都是相互独立的;
- 模块成员的导出和引入;
// 当前目录下定义的03.js
var sum = function(a,b){
return parseInt(a) + parseInt(b);
}
// 导出方式1:exports 导出模块成员
exports.sum = sum;
// 导出方式2:module 导出
module.exports = sum;
// 导出方式1 对应的引入方式:引入模块
var module1 = require('./03.js')
var ret = module1.sum(12,13)
console.log(ret)
// 导出方式2 对应的引入方式:引入模块
var module2 = require('./03.js')
var res = module2(12,13)
console.log(res)
Node.js基础-模块化细节补充
1.模块导出方式3:
// 使用global:将要导出的对象添加到全局对象中
var flag = 123
global.flag = flag
require('./04.js')
console.log(global.flag)
模块文件的加载会被缓存:多次require加载模块,会使用缓存;
导入模块的时候,js后缀可以省略
2.模块文件的后缀:
- .js
- .json:一般就是用于提供数据
- .node:一般是C语言编译的
var m = require('./data.json');
console.log(m); //会打印引入json模块对应的对象
var m = require('./add.node');
var ret = m.hello();
console.log(ret);
3.模块加载的顺序:
- 如果引入的模块 不写后缀,会按照 js json node的顺序进行查找;
4.模块分类:
- 自定义模块
- 系统核心模块
- fs 文件操作
- http 网络操作
- path 路径操作
- querystring 查询参数解析
- url url解析
- 等等
相关系统的核心模块可以参考Node.js API文档
const fs = require('fs')//引入核心模块 通过引入固定的特征字符串