nodejs基础一
Node.js是一个基于Chrome V8引擎的JavaScript运行。
js的运行环境
运行js有两种:
.js文件方式
交互(REPL):
node 回车进入交互模式
.exit 退出交互模式
模块化: 作用 复用 解决命名冲突
module
一个js文件就是一个模块 模块之间互不影响
global是nodejs里面的全局对象
例如: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 的顺序引入的
npm 看文档说明
npm init -y 会产生package.json包管理文件 里面的script标签对象 , npm run +key值运行,可以用来自定义命令。
npm i 或者 yarn命令会根据package.json重新下载node_modules文件
模块的分类:
1.自定义模块
2.内置模块:(类比手机自带的软件不用下载)
①http、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...."))
})
②fs文件操作模块(内置模块)
同步sync 读写文件 :fs.readFileSync("文件的路径","utf-8") fs.writeFileSync("文件的路径","内容","utf-8") fs.appendFileSync("文件的路径","追加的内容",utf-8")
//同步读文件
// var str =fs.readFileSync("./a.txt","utf-8");
// console.log(str); // 异步读取文件
// fs.readFile("a.txt","utf-8",(err,data)=>{
// if(!err){
// console.log(data)
// }
// }) // 流的方法读取文件
var rs =fs.createReadStream("./a.txt");
var str ="";
rs.on("data",(thunk)=>{//读取一块内容的时候,就发送data事件
str += thunk;
})
rs.on("end",()=>{//当读取完所有数据的时候,就发生end事件
console.log(str);
})
异步async读写文件:fs.readFile("文件的路径","utf-8",(err,data)=>{if(!err){ data就是读出的内容}}) fs.writeFile("文件的路径","写入的内容" ,"utf-8",callback) fs.appendFile ("文件的路径","写入的内容" ,"utf-8",callback)
const fs =require("fs");
//同步写入文件
// fs.writeFileSync("./a.txt","冬冬","utf-8");
// 异步写入文件
// fs.writeFile("./a.txt","篮球","utf-8",(err)=>{
// if (!err) {
// console.log("write ok");
// }
// })
//流的方式写入文件
var ws =fs.createWriteStream("./a.txt");
ws.write("你好呀","utf-8");
const fs =require("fs");
// 同步追加写入
// fs.appendFileSync("./a.txt","啊哈哈","utf-8");
// 异步追加写入
fs.appendFile("./a.txt","章冬冬","utf-8",(err)=>{
if(!err){
console.log("write ok");
}
});
流stream:
fs.createReadStream:
fs.createReadStream
fs.on("data",(thunk)=>{}) fs.on("end",()=>{})
fs.createWriteStream:
fs.createWriteStream
ws.write("文件的内容","utf-8")
拷贝(copy)pipe 管道
rs.pipe(ws) 文件的拷贝
const fs =require("fs");
var rs =fs.createReadStream("./a.txt");
var ws =fs.createWriteStream("./acopy.txt")
rs.pipe(ws);//rs通过管道传输给ws
fs.renameSync 重命名
3.第三方模块:(类比手机里要下载后再使用的软件)
nodejs基础一的更多相关文章
- [转]Nodejs基础中间件Connect
Nodejs基础中间件Connect 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的J ...
- Nodejs基础中间件
Nodejs基础中间件Connect http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript ...
- Nodejs第一天-{Nodejs基础 深刻理解浏览器 环境变量 基础语法}
Nodejs第一天 1.什么是Nodejs Nodejs是一个可以运行(解析)ECMAScript的环境; ECMAScript是规定了一些列的语法 ,这些语法想要解析的执行就需要放在某个环境 ...
- nodejs 基础篇整合
nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了.如果你正好喜欢前端,想走的更高,走的更远.no ...
- 前端知识体系-NodeJS相关】NodeJS基础知识全面总结
NodeJS基础知识 1. Node的全局对象和全局变量 1.1 全局对象:所有模块都可以调用的 global:表示Node所在的全局环境,类似于浏览器的window对象. process:该对象表示 ...
- Nodejs基础中间件Connect
http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript weibo:@Conan_Z blog: ...
- 02 nodejs命令参数(NodeJS基础入门)
声明:本文章可供有一定js基础的朋友参考nodejs入门,本文未讲解nodejs的安装,如有需要的同学可以加QQ3382260752找我,进行交流学习. 建议使用开发软件:webstorm或hbuil ...
- nodejs基础教程回顾01
最近在复习nodejs,因为框架太多隔一段时间不用就会忘了,所以没办法必须时常拿出来练练,就像家里有好几辆车,要时不常的轮流开一圈.我就从最基础的开始写,怎么下载安装就不说了,首先是nodejs的三类 ...
- NodeJS基础总结(一)
NodeJS官网网址:https://nodejs.org/en/ 使用require方法加载fs核心模块 var fs = require('fs'); 一.读取文件// 第一个参数就是尧读取的 ...
- NodeJS基础教程
关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版. ...
随机推荐
- Min swaps to sort array
Given an array with distinct numbers, return an integer indicating the minimum number of swap operat ...
- django 路由层 伪静态网页 虚拟环境 视图层
路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页 虚拟环境 视图层 JsonResponse FBV与CBV 文件上传 项目urls.py下面 from app01 import ...
- 菜单ACTION控制栏位字段编辑,点击菜单ACTION才能编辑指定的栏位
范例(axmt500): 目的,控制新增的栏位(价格清单2),需点击菜单栏“修改价格清单2”才能对相应的栏位进行编辑修改,并记录修改人.日期: 1)在规格上增加新ACTION——action_modi ...
- 并不对劲的复健训练-CF1205B Shortest Cycle
题目大意 有\(n\)(\(n\leq 10^5\))个数\(a_1,...,a_n\)(\(a\leq 10^{18}\)).有一个图用这个方法生成:若\(a_i\)按位与\(a_j\)不为0,则在 ...
- How to enable remote connections to SQL Server
<img src="https://miro.medium.com/max/1400/1*18lrHvJ8YtADJDT7hxIThA.jpeg" class="g ...
- O057、Delete Volume 操作
参考https://www.cnblogs.com/CloudMan6/p/5648665.html 状态为Available 的volume 才能够被delete,如果volume当前已经被at ...
- Hive SQL查询效率提升之Analyze方案的实施
0.简介 Analyze,分析表(也称为计算统计信息)是一种内置的Hive操作,可以执行该操作来收集表上的元数据信息.这可以极大的改善表上的查询时间,因为它收集构成表中数据的行计数,文件计数和文件大小 ...
- 解决Eclipse中springBoot中文乱码问题
除了常见的application.properties文件中设置#设置spring-boot 编码格式banner.charset=UTF-8server.tomcat.uri-encoding=UT ...
- 文本分析:初识Gensim
作者:doze_worm来源:https://www.douban.com/note/620615113/ gensim 起步:本节介绍理解和使用 gensim 所必须的基础概念和术语,并提供一个简单 ...
- StringUtils类API及使用方法详解
StringUtils类API及使用方法详解 StringUtils方法概览 判空函数 1)StringUtils.isEmpty(String str) 2)StringUtils.isNotEmp ...