物联网服务nodejs-5天学习第一天篇①——第一次认识nodejs(代码片段)

单片机菜鸟哥 单片机菜鸟哥     2023-03-13     466

关键词:

【NodeJs-5天学习】第一天篇① —— 初步认识NodeJs

面向读者群体

  • ❤️ 电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识 ❤️
  • ❤️ 业余爱好物联网开发者,有简单技术基础,想针对硬件功能构造简单的服务器❤️
  • ❤️ 本篇创建记录 2023-03-12 ❤️
  • ❤️ 本篇更新记录 2023-03-12 ❤️

技术要求

  • HTMLCSSJavaScript基础更好,当然也没事,就直接运行实例代码学习

专栏介绍

  • 通过简短5天时间的渐进式学习NodeJs,可以了解到基本的服务开发概念,同时可以学习到npm、内置核心API(FS文件系统操作、HTTP服务器、Express框架等等),最终能够完成基本的物联网web开发,而且能够部署到公网访问。

🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝

1、浏览器背后的JavaScript

以百度为例,
我们在浏览器上输入 https://www.baidu.com/

点击一下键盘上的F12按键,看看会发生什么事情?。
可以看到,右边出现了一些代码相关的信息。这也是浏览器页面核心组成部分:

  • html标签。控制整个页面显示什么信息,包括输入框、图标等等
  • css样式。控制整个页面信息应该怎么展示,包括摆放位置,字体大小,颜色等等
  • JavaScript代码。控制一些动态效果,比如跳转到其他页面,定时更新信息,操作UI页面显示等等。在浏览器中,JavaScript包括了DOM操作、BOM操作、基于XMLHttpRequest的Ajax等等的WebAPI

这里我们重点关注一下浏览器上的JS,方便和NodeJs上的JS对比。

1.1 JavaScript如何可以在浏览器中运行?

JavaScript之所以可以在浏览器中执行,因为浏览器中都有JavaScript解析引擎。而且不同的浏览器使用不同的JavaScript解析引擎。

其中,Google的Chrome浏览器的V8引擎性能体验业界最好!

1.2 JavaScript如何在浏览器中操作DOM和BOM?


每个浏览器都内置了很多API函数。在待执行的JavaScript代码中,调用浏览器提供的内置WebAPI(DOM、BOM、Ajax),然后把代码交给解析引擎执行。

1.3 浏览器中的JavaScript可运行环境

可运行环境指的是代码正常运行所需要的必要条件。

  • V8引擎负责解析执行JavaScript代码。
  • 内置API是由运行环境提供的特殊接口,只能在所属的运行环境中被调用。脱离了运行环境(浏览器)就无法正常使用。

以上JavaScript代码主要运行在浏览器中,也就是我们常说的前端开发,那么运行在什么环境下我们可以当做是后端服务开发?

1.4 常见后端开发,引出NodeJs

常见后端开发包括:

  • Java,目前最火

  • Python,爬虫相关比较多

  • PHP,相对较少

  • GO,目前慢慢兴起

  • .NET

后端开发技术非常多,一般也非常专业。但对于物联网初学者来说,这些都显得太重以及学习成本过高,那么有没有可能用JavaScript来做后端开发并且学习成本还低呢?当然有,那就是我们重点要学习的 NodeJs

2、Node.Js 简介

2.1 Node.Js 是什么?

Node.js 是一个基于Chrome V8引擎的JavaScript运行环境,适合于前端开发人员去开发后端服务(听起来有点像全栈,至少提供了这样的可行性技术。)。
官网地址:


我们打开一下API文档。

随意挑选一个版本点击看看,比如这里博主选择了 Node.js 17.x

这些模块会是我们后期学习的重点内容。这里暂且了解即可。并且这个文档我们会经常性翻阅

2.2 Node.js 中的JavaScript运行环境

在上面我们讲述了浏览器下的JavaScript运行环境,类比学习前提下,我们也需要知道Node.js中的JavaScript运行环境。

  • 浏览器是JavaScript的前端页面运行环境
  • NodeJs是JavaScript的后端服务运行环境
    既然Node.js 用于服务开发,那么我们可以想象到的是它肯定会剔除很多跟UI页面操作相关,转而更偏向于服务器技术相关的内容,包括搭建服务器环境操作数据库处理网络请求等等。

  • NodeJs和浏览器结构上一样,也提供了一系列自己的内置API(具体API查阅上面提及到的API文档),没有类似DOM、BOM等浏览器内置API。

2.3 我们会用NodeJs做什么?

这是博主从网上看到的一些有意思的回答:

  • node.js就是一个前端觉得写个功能还要等后端捣鼓半天,然后干脆就自己用javascript把后端搞定的一个东西。
  • 我纯粹就是想用里面NPM功能。
  • 我想多学习一门技能。

Node.js采用了Google公司的V8引擎。Node.js允许通过JavaScript和一系列模块来编写服务器端应用和网络相关的应用。内置核心模块包括文件系统I/O、网络(HTTPTCPUDPDNSTLS/SSL等)、二进制数据流、加密算法、数据流等等。Node模块的API形式简单,降低了编程的复杂度。

同时一般情况下,我们会基于这些内置核心模块的前提下,进一步封装出更加强大的工具和框架(这里先引出 NPM,类比于物联网开发中的各种第三方库。)

最常用的几个框架:

  • web开发框架Express,可以帮助我们迅速建立web站点,学习曲线低,非常适合小型网站。这个会是我们学习的重点。
  • restify 基于Nodejs的REST应用框架,支持服务器端和客户端。restify比起express更专注于REST服务,去掉了express中的template, render等功能,同时强化了REST协议使用,版本化支持,HTTP的异常处理。
  • Hexo,一个简单地、轻量地、基于Node的一个静态博客框架。通过Hexo我们可以快速创建自己的博客,仅需要几条命令就可以完成。

2.4 我们为什么要用NodeJs?优劣势是什么?

Node有几大优势:

  • 基于Javascript语言,对于前端开发来说不需要再单独新学一门陌生的语言,从而减低了学习的门槛。对于有c语言基础同学来说,入门学习JavaScript门槛也非常低,基本上可以说一两天即可了解基本语法使用。而且本地开发环境配置也异常简单,可以说是小白福音。
  • 选择了目前最快的浏览器内核V8做为执行引擎,保证了Nodejs的性能稳定性。
  • 采用事件驱动(现在很多技术都有这样的设计)、异步编程,为网络服务而设计。而Nodejs的另一个特点异步编程,不用担心线程的问题,让Nodejs处理IO密集型应用有了明显的优势。
  • Nodejs的社区壮大,不仅包的数量在快速增加,而且包的质量也要明显好于其他语言的。很多明星级的包,都是简单而灵巧的,为了开发者的使用习惯而设计。小白同学比较看重这个。

有优势就肯定有劣势。对于Nodejs来说最不擅长的领域在于CPU和内存的编程操作。

  • 计算密集型应用,让Javascript和C去拼计算性能,估计是不可能赢的。nodejs单线程,不能做cpu密集型操作。要使用多cpu核的功能,需要借助使用cluster或者部署多个实例,比较麻烦。
  • 大内存的应用,由于V8引擎有内存设计的限制,32位环境中最大堆是1G,64位环境中最大堆也不到2G,如果要一次读入10G数据,对于Nodejs来说也无法实现。
  • 最重要一点,一般很少直接找NodeJs服务开发工程师,多数是前端转NodeJs,或者其他服务开发转NodeJs。

说了那么多,对于物联网专业同学来说,我们更加关注的是如何快速高效实现一些web开发,NodeJs便是首选。

2.5 如何学习NodeJs?

目前博主给到的建议:

JavaScript基本语法 -> 内置API模块(fs、http等等)-> 第三方框架(Express等)

  • 在学习JavaScript(快速入门学习 JavaScript)的基础上,先学习一些内置的API模块,然后进一步学习第三方框架,来完成我们一整个入门学习流程。
  • 学习周期预计在5天以内,通过完成一些案例来达到入门级别的学习。

而且,必须要动手去写写代码或者直接复制代码运行,感受一下运行效果,切勿眼高手低。

2.5.1 入门书籍推荐

Node in action和了不起的Node.js是入门的绝好书籍。各位同学可以自行网上下载或者找博主问。

2.5.2 进阶书籍推荐

当你练习一段时间之后,感觉没有啥上升空间的时候,就可以去看看Node.js的运行机制。这时候去读朴大的《深入浅出Node.js》一书就能够解惑。原因很简单,九浅一深一书是偏向底层实现原理的书,从操作系统,并发原理,node源码层层解读。如果是新手读,难免会比较郁闷。

3、总结

篇①我们主要初步了解了浏览器背后的JavaScript,借此来引入NodeJs —— 一个用JavaScript来开发后端服务的运行环境。

并且了解到NodeJs的优缺点以及我们能基于它来做些什么东西。

同时博主也推荐一些书籍,建议自行快速翻阅。

这里主要是先有个概念,后面我们再深入学习。

物联网服务nodejs-5天学习第一天篇②——安装nodejs环境以及vscode开发工具(代码片段)

【NodeJs-5天学习】第一天篇②——安装环境以及开发工具1、Node.js环境安装1.1下载安装文件1.2安装步骤1.3常规配置,主要是NPM1.3.1查看配置1.3.2配置国内下载镜像1.3.3尝试下载安装包1.4NPM使用介绍1.4.1查看当前npm版本——npm-v、np... 查看详情

物联网服务nodejs-5天学习第一天篇③——vscode上运行第一个nodejs程序,配置自动重启插件nodemon(代码片段)

...,验证自动重启效果4、总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

基于物联网的nodejs-5天学习入门指引

...一天第二天第三天第四天第五天面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第三天实战篇①——10行代码给她造个熬夜提醒睡觉机器人(代码片段)

...任务模块2.3.3编写10行代码3.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第二天篇①——fs文件系统(代码片段)

...2.8读取目录2.9删除目录3、总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能构... 查看详情

物联网服务nodejs-5天学习第四天存储篇①——安装使用mysql8.0(代码片段)

...odeJs数据库2.4.5运行sql语句3.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第三天实战篇②——基于物联网的wifi自动打卡考勤系统(代码片段)

【NodeJs-5天学习】第三天实战篇②——基于物联网的WiFi自动打卡考勤系统1.前言2.实现思路2.1NodeJs服务器代码2.1.1对接Express服务器2.1.2对接Mac地址处理2.1.3对接飞书群处理2.2ESP8266代码2.3测试效果2.3.1串口打印日志2.3.2NodeJs服务器打... 查看详情

物联网服务nodejs-5天学习第三天实战篇③——基于mqtt的环境温度检测(代码片段)

...c;这里以#1为例2.3测试效果4.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第四天存储篇②——nodejs连接操作mysql8.0(代码片段)

...表——CREATETABLE3.总结参考资料面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能构... 查看详情

物联网服务nodejs-5天学习第三天实战篇④——qq机器人,实现自动回复重要提醒(代码片段)

....2.3群聊匹配词2.3测试效果3.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第四天存储篇③——基于物联网的wifi自动打卡考勤系统,升级存储为mysql,提醒功能改为qq(代码片段)

【NodeJs-5天学习】第四天存储篇③——基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ1.前言2.服务器代码2.1配置MySQL服务器2.2NodeJs服务器开发2.2.1对接Express服务器2.2.2对接Mac地址处理2.2.3对接QQ群处理3... 查看详情

物联网服务nodejs-5天学习第二天篇③——expressweb框架和中间件(代码片段)

【NodeJs-5天学习】第二天篇③——ExpressWeb框架和中间件1.前言1.1Express简介1.2Express能做什么2.Express快速入门2.1①安装`express`、`body-parser`、`moment`模块2.2②导入`express`、`body-parser`模块2.3③创建web服务器... 查看详情

物联网服务nodejs-5天学习第二天篇④——项目模块化(代码片段)

...器入口模块——app_server.js5.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第四天存储篇④——基于mqtt的环境温度检测,升级存储为mysql(代码片段)

...outer3.ESP8266代码4.测试效果4.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网nodejs-5天学习第四天存储篇⑤——pm2,node.js应用进程管理器(代码片段)

...方式接入(可选)7.总结面向读者群体❤️电子物联网专业同学,想针对硬件功能构造简单的服务器,不需要学习专业的服务器开发知识❤️❤️业余爱好物联网开发者,有简单技术基础,想针对硬件功能... 查看详情

物联网服务nodejs-5天学习第二天篇②——网络编程(tcphttpweb应用服务)(代码片段)

【NodeJs-5天学习】第二天篇②——网络编程1、client/server结构2.服务器相关概念2.1IP地址和端口号2.2DNS域名服务3.构建TCP3.1TCP3.2创建TCP服务器端3.2.1导入`net`模块3.2.2创建`TCP服务器实例`,监听socket事件3.2.2.1connect事件3... 查看详情

学习linux第一天-了解iaaspaassaas

...信,SDK,API,视频会议,融合通信,云呼叫中心,电话机器人,物联网、物联网卡、物联网平台、流量分发平台,隐 查看详情

第一天学习笔记

1foriinrange(3):2name=input("请输入你的名字:")3namepass=input("请输入你的密码:")4if(name=="chenhao"andnamepass=="123123"):5print("输入正确!")6break7ifi==2:8print("输入超过三次! ")9break用户名登录  查看详情