Node.js轻松入门(一)
目录
一.介绍
1.简介
2.Nodejs简史
3.Nodejs优点
二.安装
1.Nodejs
2.VSCode
三.全局对象
四.回调函数
五.模块(Commonjs规范)
六.事件
七.文件读写
1.设置vscode中nodejs代码提示
2.同步读写操作
3.异步读写操作
(1)异步读
(2)异步写
前言:Nodejs做服务器端的开发,而前端学习node,可以设计一个服务器,进行一些前端请求参数的测试。
一.介绍
1.简介
2.Nodejs简史
3.Nodejs优点
- 运⾏在V8JavaScript引擎上(⾼性能)
- 事件驱动
- ⾮阻塞的IO模型
- 丰富的⽣态圈(npm下载资源)
二.安装
1.Nodejs
简单粗暴,直接官网下载无脑安装(最后的那个勾选框那个不要选,选了自动安装很多东西到你的系统盘!),左边那个是稳定版,右边那个是包含新特性的版本。
输入node -v显示node.js的版本说明已安装成功
输入npm-v显示npm版本说明自带的npm也己经安装成功
npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西。
我参考了这篇文章
2.VSCode
无脑安装
VSCode快捷键:
使用VSCode创建工程
三.全局对象
这里只是举例讲解一下,更多请自己看在线api(戳下面)
nodejs官方api戳这里
在终端中使用node命令运行JS脚本:
,即node+文件名(.js可加可不加)
console.log("hello world!");
console.info("信息");
console.error("报错");
输出:
//延迟执行,3s之后执行函数
setTimeout(function(){console.log("timer");
},3000)//间隔执行,每隔1s执行一次函数
// var i=0;
// setInterval(function(){
// i+=1;
// console.log(i);
// },1000)var time=0;
var timer=setInterval(function(){time+=2;console.log("timer="+time);if(time>6){clearInterval(timer);}
},1000)console.log(__dirname);//打印出来当前的路径
console.log(__filename);//打印出来当前路径(包含文件名)
输出:
输入命令行命令时,可用tab键补全。
四.回调函数
//两个比较传统的函数声明方式
function sayHi(){console.log("hi");
}var sayBye= function(name){console.log(name+":bye");
}
//调用执行
// sayHi();
// sayBye();//回调函数
function callFunction(callback,name){callback(name);
}
//调用执行,在回调函数中传入函数名,进而调用函数
//callFunction(sayBye,"kd")//回调函数的另一种方式
callFunction(function(name){console.log(name+":bye");
},"frank");
五.模块(Commonjs规范)
//加和函数
var adder=function(a,b){//注意这里不是的单引号,而是键盘左上角的那个顿号,这样才能使用ES6新特性$return `this num of the numbers is ${a+b}`;
}//计算数组长度函数
/*
var counter=function(arr){return "there are "+arr.length+" elements in the array";
}
*///导出(方式一)
//module.exports=counter//导出方式二(下面的写法默认是导出了一个对象{counter,adder})
/*
module.exports.counter=counter
module.exports.adder=adder
*/
//像下面写更为简洁
/*
module.exports={counter:counter,adder:adder
}
*/
//ES6新特性:前后一致的话可以只写一个,于是又有下面
module.exports={//也可以在导出时定义函数counter:function(arr){return "there are "+arr.length+" elements in the array";},adder
}
//导入文件(方式一)
//const counter=require("./util.js");//导入(方式二)
const utils=require("./util.js");
//ES6导入方式
//import utils from "./util.js"console.log(utils.counter([10,20,30]));
console.log(utils.adder(100,200));
there are 3 elements in the array
this num of the numbers is 300
六.事件
//Nodejs中的事件和ES5中的时间不太一样,Nodejs中是代码触发,而ES5是手动触发//导入事件模块
var events=require("events");//创建事件对象
var myEmitter=new events.EventEmitter();//设置事件监听器,someEvent等价与ES5中的事件,比如click事件
//但这里的someEvent不是已有事件的名字,而是自己自定义的名字
myEmitter.on("someEvent",function(message){console.log(message);
});//出发事件
myEmitter.emit("someEvent","the event was emitted");
类继承事件,使对象监听
//导入模块
var events=require("events");
var util=require("util");//ES5创建类的方式
var Person=function(name){this.name=name;
}//使Person类继承事件
util.inherits(Person,events.EventEmitter);var xiaoming=new Person("xiaoming");
var lilei=new Person("lilei");var person=[xiaoming,lilei];//循环为每个对象设置事件监听器
person.forEach(function(item){item.on("speak",function(message){console.log(item.name+" say:"+message);})
})xiaoming.emit("speak","hi");
lilei.emit("speak","my name is lilei");
上面的代码ES6的写法:
const EventEmitter=require('events');class Person extends EventEmitter{constructor(name){super();this.name=name;}
}var xiaoming=new Person("xiaoming");
var jack=new Person("jack");var person=[xiaoming,jack];person.forEach(function(item){item.on("speak",function(message){console.log(item.name+" say:"+message);})
});xiaoming.emit("speak","hi");
jack.emit("speak","my name is jack");
输出:
xiaoming say:hi
jack say:my name is jack
七.文件读写
1.设置vscode中nodejs代码提示
参考这篇文章
注意一定要在当前项目路径下安装,否则无效!
设置成功后会在当前目录下自动生成一个json文件 以及一个node_modules文件夹。
2.同步读写操作
//导入文件模块
var fs=require("fs");
//同步读取(readFileSync是同步读取函数,Sync代表同步)
var readMe =fs.readFileSync("./readMe.txt","utf-8");//将readMe文件中的内容同步写到wirteMe中,如果没有就创建一个writeMe文件
fs.writeFileSync("writeMe.txt",readMe);
//查看是否同步,因为读写耗时,所以如果是同步进行读写操作,那么finished会在最后输出
console.log(readMe);
console.log("finished");
3.异步读写操作
(1)异步读
var fs=require("fs");
//readFile是异步读取操作,不加Sync即是异步
//第三个参数是回调函数
var readMe=fs.readFile("./readMe.txt","utf-8",function(err,data){console.log(data);
})//等待4s
var waitTill=new Date(new Date().getTime+4*1000);
while(waitTill>new Date()){}console.log("finished");
输出:
finished
Hello FileSystem!
(2)异步写
var fs=require("fs");var readMe=fs.readFile("./readMe.txt","utf-8",function(err,data){fs.writeFile("./writeMe.txt",data,function(){console.log("写入数据完成!");})
})console.log("finished");
输出:
finished
写入数据完成!
Node.js轻松入门(一)相关推荐
- 54 Node.js快速入门
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.Node开发概述 1.1 为什么要学习服务器端开发基础 能够与后端程序员更加紧密的配合 ...
- Node.js核心入门(二)
目录: Node.js核心入门(一) 全局对象 常用工具 事件机制 Node.js核心入门(二) 文件系统访问 HTTP服务器与客户端 文件系统 fs fs 模块是文件操作的封装,它提供了文件的读取. ...
- Node.js:入门资料
<快速搭建 Node.js 开发环境以及加速 npm> http://fengmk2.com/blog/2014/03/node-env-and-faster-npm.html <N ...
- Node.js开发入门—使用jade模板引擎
在"Node.js开发入门--Express安装与使用"里,我们曾经使用express generator创建了一个HelloExpress网站,express工具为我们生成了基本 ...
- Node.js开发入门—Express安装与使用
之前我们在安装完Node.js后直接写了个HelloWorld网站,这次呢,我们使用Node.js的Web框架Express来重写一下HelloWorld,看看有什么不同.同时我们还会重写之前的文件服 ...
- Node.js开发入门—语音合成示例
出于项目需要,搞了一个语音合成(TTS)的小示例,使用的是OKVoice. 我想在PC上测试,OKVoice的快速接入API可以实现我的目的,文档在这里:http://dev.okvoice.com/ ...
- Node.js 新手入门
Node.js 新手入门 Node.js是运行在服务端的JavaScript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性 ...
- node.js 爬虫入门总结
node.js爬虫 前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 php , python 等.当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript ...
- Node.js开发入门(一)——安装Node.js及编辑器配置
Node.js是一个轻松构建快速,可扩展的网络应用平台建立在Chrome的JavaScript运行.Node.js使用事件驱动,非阻塞I/O模型,使得它重量轻,高效,完美的数据密集型实时应用程序运行在 ...
最新文章
- Windows 10 Visual Studio 2017 安装配置 Apache Thrift (C++)
- python数据分析准备_使用Python进行数据分析I 环境准备
- kindeditor用法简单介绍(转)
- 如何向女朋友解释什么是HTTP协议
- 大事件,Java被超越了,2021年5月TIOBE编程语言排行榜出炉
- Curvy Little Bottles——ACM icpc 2012 word final problem B
- cpu和接口之间数据传送控制方式
- 【word论文排版教程2】论文章节安排及分节
- matlab编程求卫星轨道长度,GPS卫星轨道计算及其MATLAB仿真.pdf
- python 操作excel 的包 函数
- 一款面世较早的音乐播放器-酷狗音乐播放器下载
- ts找不到primeng/primeng
- 服务器如何从安全模式增加用户名,win10安全模式里怎么添加账户_win10 安全模式如何添加用户-win7之家...
- EasyExcel解析动态表头及导出
- 淘宝开放平台API族
- 第一章: 微型计算机组成结构
- VIM 中使用 Ctrl-A 和 Ctrl-X 控制数字增减
- 微信公众号开发之自动消息回复
- 人工智能导论实验2——野人渡河黑白棋问题
- Manjaro 20 KDE 配置心得
热门文章
- 大数据课堂笔记 day5
- 微商该怎么去实体店铺货,成功率会更大呢?
- 中文代码示例之冒泡算法, 后感
- Systemverilog 枚举类型 enum
- virtualbox安装windows系统,开机时出现fatal:No bootable medium found, System halted的错误。
- 【尝鲜版】驱动级网站防护软件-浪潮云戟
- 川农在线期末机考答案2020计算机,《计算机辅助设计》期末机考川农网院20年6月...
- Linux查容器编码,自己动手写docker笔记(4)构造简单实现run命令版本的容器
- 吃鸡战歌用计算机,绝地求生刺激战场日常用语 吃鸡打野都是什么意思
- 李嘉诚发家秘笈 实现买房梦谨记98个理财忠告