Node.JS 是一个基于 Chrome V8 引擎的 JavaScript 运行.
JS 的运行环境
运行 JS 有两种:
.JS 文件方式
交互 (REPL):
node 回车进入交互模式
.exit 退出交互模式
模块化: 作用 复用 解决命名冲突
module
一个 JS 文件就是一个模块 模块之间互不影响
global 是 Node.JS 里面的全局对象
例如: global.a=a;
引入模块 var a = require(模块的路径)
导出模块 module.exports =a;
导出多个变量的时候可以写成对象的模式
exports 默认指向 module.exports
如果 exports 指向了新的对象, 那么就没有了导出的效果
浅拷贝
- var obj ={
- ...obj
- } // 浅拷贝 (es6)
- var obj2 = Object.assign({
- },obj); // 浅拷贝 (es5)
浅拷贝解决了对象引用时候互相影响的问题
补充:
node.JS 采用 commonjs 规范
.JSON 也是一个单独的模块
\t 相当于四个空格
\n 换行
引入模块如果省略扩展名 是按照 .JS .JSON .node 的顺序引入的
模块的分类:
1. 自定义模块
2. 内置模块:(类比手机自带的软件不用下载)
- 1http,https(面试题: http 和 https 的区别)
- // 引入内置的 http 模块
- const http = require("http");
- // 引入第三方模块 第三方下载 NPM install 卸载 uninstall / yarn add 卸载 remove
- const chalk = require("chalk");
- // 创建一个 http 服务器
- var ser = http.createServer((req,res)=>{
- // 响应头里写入编码问题 响应的 writeHead 的方法响应头
- res.writeHead(200,{'Content-type':'text/html;charset=utf-8'})
- res.end("hello,dd 冬冬");
- //end 方法返回一个消息
- })
- // 这个服务器监听到 3000 端口
- console.log(chalk)
- ser.listen(3000,()=>{
- console.log(chalk.green("listen 3000...."))
- })
2fs 文件操作模块 (内置模块)
同步 sync 读写文件 :fs.readFileSync("文件的路径","utf-8") fs.writeFileSync("文件的路径","内容",utf-8") fs.appendFileSync(" 文件的路径 "," 追加的内容 ",utf-8")
异步 async 读写文件: fs.readFile("文件的路径","utf-8",(err,data)=>{if(!err){ data 就是读出的内容}}) fs.writeFile("文件的路径","utf-8",callback)
流 stream: 拷贝 (copy)pipe 管道 fs.createReadStream fs.createWriteStream
3. 第三方模块:(类比手机里要下载后再使用的软件)
NPM 看文档说明
NPM init -y 会产生 package.JSON 包管理文件 里面的 script 标签对象 , NPM run +key 值运行, 可以用来自定义命令.
NPM i 或者 yarn 命令会根据 package.JSON 重新下载 node_modules 文件
来源: http://www.bubuko.com/infodetail-3346175.html