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基础一的更多相关文章

  1. [转]Nodejs基础中间件Connect

    Nodejs基础中间件Connect 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的J ...

  2. Nodejs基础中间件

    Nodejs基础中间件Connect   http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript ...

  3. Nodejs第一天-{Nodejs基础 深刻理解浏览器 环境变量 基础语法}

    Nodejs第一天 1.什么是Nodejs ​ Nodejs是一个可以运行(解析)ECMAScript的环境; ​ ECMAScript是规定了一些列的语法 ,这些语法想要解析的执行就需要放在某个环境 ...

  4. nodejs 基础篇整合

    nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了.如果你正好喜欢前端,想走的更高,走的更远.no ...

  5. 前端知识体系-NodeJS相关】NodeJS基础知识全面总结

    NodeJS基础知识 1. Node的全局对象和全局变量 1.1 全局对象:所有模块都可以调用的 global:表示Node所在的全局环境,类似于浏览器的window对象. process:该对象表示 ...

  6. Nodejs基础中间件Connect

    http://www.tuicool.com/articles/emeuie 关于作者 张丹(Conan), 程序员Java,R,PHP,Javascript weibo:@Conan_Z blog: ...

  7. 02 nodejs命令参数(NodeJS基础入门)

    声明:本文章可供有一定js基础的朋友参考nodejs入门,本文未讲解nodejs的安装,如有需要的同学可以加QQ3382260752找我,进行交流学习. 建议使用开发软件:webstorm或hbuil ...

  8. nodejs基础教程回顾01

    最近在复习nodejs,因为框架太多隔一段时间不用就会忘了,所以没办法必须时常拿出来练练,就像家里有好几辆车,要时不常的轮流开一圈.我就从最基础的开始写,怎么下载安装就不说了,首先是nodejs的三类 ...

  9. NodeJS基础总结(一)

    NodeJS官网网址:https://nodejs.org/en/ 使用require方法加载fs核心模块 var fs = require('fs'); 一.读取文件//   第一个参数就是尧读取的 ...

  10. NodeJS基础教程

    关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版. ...

随机推荐

  1. Min swaps to sort array

    Given an array with distinct numbers, return an integer indicating the minimum number of swap operat ...

  2. django 路由层 伪静态网页 虚拟环境 视图层

    路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页 虚拟环境 视图层 JsonResponse FBV与CBV 文件上传 项目urls.py下面 from app01 import ...

  3. 菜单ACTION控制栏位字段编辑,点击菜单ACTION才能编辑指定的栏位

    范例(axmt500): 目的,控制新增的栏位(价格清单2),需点击菜单栏“修改价格清单2”才能对相应的栏位进行编辑修改,并记录修改人.日期: 1)在规格上增加新ACTION——action_modi ...

  4. 并不对劲的复健训练-CF1205B Shortest Cycle

    题目大意 有\(n\)(\(n\leq 10^5\))个数\(a_1,...,a_n\)(\(a\leq 10^{18}\)).有一个图用这个方法生成:若\(a_i\)按位与\(a_j\)不为0,则在 ...

  5. How to enable remote connections to SQL Server

    <img src="https://miro.medium.com/max/1400/1*18lrHvJ8YtADJDT7hxIThA.jpeg" class="g ...

  6. O057、Delete Volume 操作

    参考https://www.cnblogs.com/CloudMan6/p/5648665.html   状态为Available 的volume 才能够被delete,如果volume当前已经被at ...

  7. Hive SQL查询效率提升之Analyze方案的实施

    0.简介 Analyze,分析表(也称为计算统计信息)是一种内置的Hive操作,可以执行该操作来收集表上的元数据信息.这可以极大的改善表上的查询时间,因为它收集构成表中数据的行计数,文件计数和文件大小 ...

  8. 解决Eclipse中springBoot中文乱码问题

    除了常见的application.properties文件中设置#设置spring-boot 编码格式banner.charset=UTF-8server.tomcat.uri-encoding=UT ...

  9. 文本分析:初识Gensim

    作者:doze_worm来源:https://www.douban.com/note/620615113/ gensim 起步:本节介绍理解和使用 gensim 所必须的基础概念和术语,并提供一个简单 ...

  10. StringUtils类API及使用方法详解

    StringUtils类API及使用方法详解 StringUtils方法概览 判空函数 1)StringUtils.isEmpty(String str) 2)StringUtils.isNotEmp ...