Node.js 仙侠传(第一部)

  • 欢迎来到Node.js打通前后端链接的世界
  • Node.js 学习清单
    • 基础 Soft 安装准备
      • 傻瓜安装Node.js
      • Wins 安装 Vim 编辑器
      • 为你的Vim 配置Path环境变量
      • Vim 超简单语法
      • 安装 VS code 地址
    • Node.js 小试牛刀啦~
      • Node.js 基本语句
      • 使用Node.js 控制台实现实时测试输出
      • 使用Vim编辑器保存Node.js文件
      • 将你的第一个 Node.js应用 快速显示在Web网络上
    • npm 战无不胜军师~
      • Wins cmd下直接安装 npm
      • 通过 npm命令安装express模块
      • 在node_modules根目录下运行cmd检查是否安装成功
      • 增、删、搜Node.js模块
    • 使用 package.json 配置你的帅气应用~
      • 新建你的Node.js APP项目并简易使用 Package.json
      • package.json进阶使用
    • 调试JS 黑马 REPL
      • REPL 命令
      • 有趣的下划线(_)变量
    • 底层解析小星星
      • 阻塞代码栗子
      • 非阻塞代码栗子
      • Node.js 异步编程中的回调函数
      • 事件驱动模型
      • Node 事件循环 :读取 txt 文件内容
      • EventEmitter 类及监听栗子
      • Buffer 类 | 小尝试
  • Conclusion

欢迎来到Node.js打通前后端链接的世界

最近真的是在草稿箱攒了很多教程,但是没有时间发上来。好多事情做都做不完,一天睡不着,一天又困的不行不行的,终于抽时间把第一部仙侠传更新了,关于Node.js 大多数功能可能暂时都还用不太到,不过既然对前后端链接有帮助,就尽量多学一点,以备不时之需,嘿嘿~
普洱山镇楼!

Node.js 学习清单

Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境,目前开始入坑Node.js,它是2009由大神 Ryan Dahl 用C++开发的。为了达到对前端快速整合的效果,以便链接Vue框架,因为Vue开发需要Node.js的基础知识~

基础 Soft 安装准备

傻瓜安装Node.js

Download | Node.js 下载Node.js在这里~

Wins 安装 Vim 编辑器

download : vim | Vim 编辑器下载在这里~
Vim编辑器 是Linux系统自带的,是一个极其简易的文本编辑器,可以直接在cmd中通过 vim 命令来调用~ 要特别注意:Vim需要使用管理员权限打开~

为你的Vim 配置Path环境变量

Vim 超简单语法

i 编辑 q 退出
:q!不保存退出
:wq保存并退出

安装 VS code 地址

Download VS Code | VS Code 下载在这里~

最好用的多语言编辑器,我用来代替Typora使用,可以把VS code设置为默认打开~

小贴士:在setting 里开启按住 ctrl 鼠标滚轮调整字体大小模式~

Node.js 小试牛刀啦~

Node.js 基本语句
//查询版本号
node -v//打印句
console.log("I love you!");
使用Node.js 控制台实现实时测试输出

使用Vim编辑器保存Node.js文件

将你的第一个 Node.js应用 快速显示在Web网络上

在VS code或其他编辑器中引入required模块并创建服务器

var http = require("http");http.createServer(function(request, response){//发送HTTP头部//HTTP状态值:200:OK//内容类型:text/plainresponse.writeHead(200,{'Content-Type':'text/plain'});//发送响应数据 “Hello Chino”response.end('Hello Chino\n');
}).listen(8888);//终端打印如下信息
console.log('Server running at Lovea Chino http://127.0.0.1:8888');


npm 战无不胜军师~

npm 是 Node Package Manager 的缩写,意思是 Node 的包管理系统。

Wins cmd下直接安装 npm

NPM是NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题~

//下载npm
npm install npm -g//或者淘宝镜像
npm install -g cnpm --registry=https://registry.npmmirror.com//查询版本号
npm -v

通过 npm命令安装express模块
//npm命令格式
npm install <Module Name>//npm命令安装常用web框架 express
npm install express

express 包就放在了工程目录下的 node_modules 目录中储存~

在node_modules根目录下运行cmd检查是否安装成功
//全局模式下载命令工具
npm install -g express-generator//验证是否成功
express --version//查看全局安装的模块
npm list -g

增、删、搜Node.js模块
卸载具体某个模块
npm uninstall express//查看文件是否还在
npm ls//更新具体某个模块
npm update express//搜索具体某个模块
npm search express

使用 package.json 配置你的帅气应用~

新建你的Node.js APP项目并简易使用 Package.json

package.json 位于模块的目录下,用于定义包的属性。

//cmd中新建你的app
mkdir myapp//进入你的app
cd myapp//为你的app创建package.json
npm init//输入参数 entry point:(index.js) 直接输入你的文件名。
//比如server.js,其他统一回车默认操作
index.js//在你的项目下安装Express并保存入依赖列表
npm install express --save//临时安装Express并不添加入依赖列表
npm install express --no-save
package.json进阶使用
name: (node_modules) chinoApp      # 模块名
version: (1.0.0)
description: Node.js 测试模块(www.XXX.com)  # 描述
entry point: (index.js)      #入口程序名
test command: make test
git repository: 你的gitee地址  # Gitee/Github 地址
keywords:   #关键词
author: Lovea Chino  #作者名称
license: (ISC)  #产品遵循的开源协议
About to write to ……/node_modules/package.json:      # 生成地址

调试JS 黑马 REPL

REPL 命令
ctrl + c - 退出当前终端。ctrl + c 按下两次 - 退出 Node REPL。ctrl + d - 退出 Node REPL.向上/向下 键 - 查看输入的历史命令tab 键 - 列出当前命令.help - 列出使用命令.break - 退出多行表达式.clear - 退出多行表达式.save filename - 保存当前的 Node REPL 会话到指定文件.load filename - 载入当前 Node REPL 会话的文件内容。
有趣的下划线(_)变量

其他操作和JavaScript类似,就这个很有意思~

var x = 10
var y = 20
x + y
30
var sum = _
console.log(sum)
30

底层解析小星星

阻塞代码栗子

阻塞是按顺序执行的,而非阻塞是不需要按顺序的~

  1. 新建一个 input.txt 填入任意语句
  2. 新建 main.js 的入口程序
//main.js文件的代码内容
var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());
console.log("Game Over!");

非阻塞代码栗子


Node.js 异步编程中的回调函数

我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。回调函数一般作为函数的最后一个参数出现~

function foo1(name, age, callback) { }
function foo2(value, callback1, callback2) { }
事件驱动模型

非阻塞式IO或者事件驱动IO模型~

在main.js创建事件驱动模式的实例~

//引入 events 模块
var events = require('events');//创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();//创建事件处理程序
var connectHandler = function connected(){console.log('链接成功。');//触发data_received事件eventEmitter.emit('data_received');
}//绑定 connection 事件处理程序
eventEmitter.on('connection',connectHandler);//使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received',function(){console.log('数据接收成功。');
});//触发 connection 事件
eventEmitter.emit('connection');console.log("程序执行完毕。");

Node 事件循环 :读取 txt 文件内容


如果我删除txt文件,会显示报错~

EventEmitter 类及监听栗子

EventEmitter 的核心就是事件触发与事件监听器功能的封装~
on 函数用于绑定事件函数,emit 属性用于触发一个事件。

var events = require('events');
const { EventEmitter } = require('stream');
var eventEmitter = new events.EventEmitter();//监听器 #1
var listener1 = function listener1(){console.log('监听器1 Action!');
}//监听器 #2
var listener2 = function listener2(){console.log('监听器2 Action!');
}//绑定connection事件,处理函数为listener1
eventEmitter.addListener('connection',listener1);//绑定connection事件,处理函数为listener1
eventEmitter.on('connection',listener2);var eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners + "个监听器监听事件!");//处理connection 事件
eventEmitter.emit('connection');//移除监听绑定的listener1函数
eventEmitter.removeListener('connection',listener1);
console.log("listener1不再受监听。");//触发连接事件
eventEmitter.emit('connection');eventListeners = eventEmitter.listenerCount('connection');
console.log(eventListeners+"个监听器监听连接事件。");console.log("Game Over!");

Buffer 类 | 小尝试

Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。


Conclusion

鲤鱼宝宝变身本尊祝福自己2023年代码红红火火~
敬请期待 Node.js 仙侠传(第二部)~

【Lovea Chino】Node.js 仙侠传(第一部)相关推荐

  1. node将当前文件上传到服务器,以编程方式将文件从node.js上传到另一个Web服务器...

    我需要将文件从node.js应用程序推送到其他地方运行的Web服务器,该服务器通过典型的上载机制接受文件.例如,假设接收服务器有一个网页,这样的形式:以编程方式将文件从node.js上传到另一个Web ...

  2. Cannot find module -----Node.js编程的第一个问题

    因为手头上的东西需要用到Node.js,而且还是要在Linux下编程,所以我就去装ubuntu虚拟机(因为我是校园网,用ubuntu上不了网),这个过程也是折腾得我要死,所以我要在这里和那些要装在wi ...

  3. Node.js 上传文件(multiparty包) (基于express)

    文件上传.js: //文件上传插件的使用 multiparty包 /* body-parser包只能处理post请求,不能上传图片. multiparty包post请求和文件都可以处理 1.cnpm ...

  4. 关于node.js和npm 和nvm_byKL

    关于node.js和npm 和nvm Node 是一个服务器端 JavaScript 解释器,Node 本身运行 V8 JavaScript.V8 JavaScript 引擎是 Google 用于其 ...

  5. Node.js「一」—— Node.js 简介 / Node.js 模块 / 包 与 NPM

    本文为 Node.js 系列笔记第一篇.文章参考:nodejs 教程 -- 大地:<深入浅出 Node.js>:阮一峰 nodejs 博客 文章目录 一.Node 简介 1. 简单介绍 2 ...

  6. node.js - 收藏集

    如何部署 Node.js 应用 - 后端 - 掘金 当你熟悉 Node.js 之后很可能会自己写些小东西放在 VPS 上跑,比如说一个个人的 API 服务,或者是你的网站.这篇文章分享的内容不管你的 ...

  7. Ubuntu安装Node.js(亲测,最新,详细)

    Ubunt 安装Node.js 打开终端 第一步:查看自己应该安装什么版本的Node uname -a 第二步:根据需求官网下载匹配自己系统的文件: 英文网址:https://nodejs.org/e ...

  8. 用node.js 搭建的博客程序心得(node.js实战读书笔记1)

    学习node已经有一段时间了,之前把了不起的node.js看完了,基本算了解了一些node的基本的用法还有一些概念了,然后就开始看第二本node.js实战,第一章就是搭建一个博客程序.但是不得不吐槽一 ...

  9. 【Node.js】面试常考问题

    Node问题梳理总结 1.koa和express有哪些不同? 2.两个Node.js进程如何通信? 3.浏览器与Node中的事件循环有什么区别? 4.如何实现JWT鉴权机制?说说思路 5.Node性能 ...

最新文章

  1. 【考试认证专场】大牛带你全面掌握学习技巧,攻克考试难题(8.2-8.6精品课程限时特惠)...
  2. ruby(wrong number of arguments (1 for 2) )
  3. 1.18 Java直接插入排序法
  4. 记一次Spring boot 和Vue前后端分离的入门培训
  5. 面试lua笔试题各种坑
  6. 记录mysql的配置表误删
  7. 【基础】有关T-SQL的10个好习惯
  8. Webkit之Frame
  9. 2021-0409梦笔记2
  10. 简单实用:浏览器嗅探扩展抓取下载音乐和视频
  11. KD树(网易游戏笔试)
  12. 分手后如何忘掉你的前任1
  13. 计算机总线控制驱动,什么是sm总线控制器,总线控制器驱动怎么安装?
  14. 详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)
  15. ubuntu 18.04.2 server基本安装配置
  16. 物联网培训预示着我们将进入智能时代
  17. App 崩溃(闪退)原因
  18. php个人博客项目实训报告,PHP个人博客项目------切切歆语博客
  19. 手把手教你写个微信小程序
  20. ctfshow 反序列化篇(下)

热门文章

  1. 各种软件官网下载地址
  2. 开源JSON库Rapidjson与cJSON对比
  3. hdu 1408 盐水的故事
  4. 【JZOJ A组】游行
  5. 2021年9月_IEEE Transactions on Image Processing_科技前言热点调查表
  6. 分享112个JS菜单导航,总有一款适合您
  7. U盘打不开了如何恢复数据
  8. 车载软件架构——AUTOSAR的江湖夜雨十年灯
  9. 现代化基础设施赋能智能制造
  10. Twilio短信发送 twilio.base.exceptions.TwilioRestException:?[49mhttps://www.twilio.com/docs/errors/21408