Node.js 不是一门语言,而是一个基于 V8 引擎的运行时环境,下图是一张架构图。

  

  由图可知,Node.js 底层除了 JavaScript 代码之外,还有大量的 C/C++ 代码。

  常说 Node.js 是单线程的,但这个单线程是指处理 JavaScript 的主线程是单的,像 I/O 任务都是多线程处理的。

一、准备

  要开发 Node.js 应用,首先需要下载安装 Node.js,点击下一步下一步就可完成。

  

  值得一提的是,在官网中,还配套了一份 50 多篇的入门教程,每篇都不长,蛮通俗易懂的,可以阅读一下。

  然后需要一个编辑器,IDE编辑器(例如 VS CodeWebStream),或者是带语言着色的文本编辑器(例如 CotEditor)都可以,看个人喜好。

  写完一个简单的脚本文件后,触发命令 node xx.js 就能运行了。

  Node.js 在国内有个著名论坛 CNode,其中有许多优秀的 Node.js 资料可供参考。

  目前的前端开发肯定会涉及到工程化,所以或多或少需要 Node.js 环境,用 npm 命令下载或管理包。

  但是如果要开发实际应用,那么就得需要了解 Node.js 的模块。

二、模块

  Node.js 赋予了 JavaScript 很多没有的能力,例如读写文件、发起跨域的网络请求、连接数据库等。

  前端边界因 Node.js 变得很广,一个前端也可以做后端的工作,俗称全栈工程师。

  在阅读 Node.js 的官方文档时,就会发现内容很详尽,很多细节都会讲到。

  只是没有上下文语境,缺乏代入感,有时候文档读起来就比较晦涩。

  进入到官方文档后,在左边的菜单栏中有 60 多个选项,直接读的话,会让人睡着。

  一般的话,可以配合其他教程,然后将官方文档作为参考资料,当遇到不太明白的地方,再有针对性的浏览,效果会更佳。

  本文推荐几个常用的模块,包括 fs文件模块http协议模块path路径模块global全局变量module模块化

  日常项目开发中肯定会涉及到上述一个或多个模块。

三、框架

  真正项目开发时,很少需要从零开始,选择成熟的框架主要就是为了提升工作效率。

  市面上的框架有很多,例如 ExpressKOAegg.jsNext.jsNuxt.js 等,这些框架都有对应的中文文档。

  以我公司为例,选择的是 KOA 框架,这是一个短小精悍的框架,源码只有 4 个文件。

  虽然简单,但扩展性很高,可以通过中间件的形式加载进来,例如路由、日志、权限验证、JWT认证等。

  在将开发环境搭建好后,还得布置单元测试,框架都能集成单元测试,只要简单的配置即可。

  在 Node.js 中,有很多单测框架可供选择,例如 MochaJest 等,断言库包括 Chaiassert 断言模块等。

  接口测试有 SuperTest,测试替身库有 Sinon,可以模拟数据库读记录。

四、数据库

  开发 Node.js 的项目,离不开数据库的处理。常用的数据库有 MySQLMongoDB

  MySQL 官方给出的可视化操作工具是 Workbench,MongoDB 官方给出的可视化操作工具是 Compass

  直接用 Node.js 作为项目持久层的并不多,很多时候都是作为数据中间层的角色存在。

  因此,对数据库的处理并不是很复杂,常用的也就是增删改查,其中删除很少是物理删除,基本都是改个状态。

  以 MySQL 为例,常用的就是下面三类 SQL 语句。

select * from table where id = 1;
update table set name = 'strick' where id = 1;
insert into table(name) values ('strick');

  当然,在日常开发中不需要手写拼接 SQL 语句,既为了安全,也是为了可维护。

  所以就需要常用的 ORM(对象关系映射),例如 MySQL 的 Sequelize,MongoDB 的 mongoose

  至此,开发一个常规 Node.js 应用所需的知识储备,已全部涉及到,接下来就是熟能生巧的过程了。

Node.js躬行记(21)——花10分钟入门Node.js的更多相关文章

  1. Node.js躬行记(5)——定时任务的调试

    最近做一个活动,需要用到定时任务,于是使用了 node-schedule 库. 用法很简单,就是可配置开始.结束时间,以及重复执行的时间点,如下所示,从2020-12-23T09:00:00Z开始,每 ...

  2. Node.js躬行记(10)——接口日志查询

    当运营向我们上报BUG时,我们第一时间是捕获相关的接口.从监控系统中,就可以查到用户使用时接口的请求和响应数据. 若接口的请求正常,那么就需要深入到接口代码中,查看相关的日志,通常会先浏览数据库查询语 ...

  3. Node.js躬行记(13)——MySQL归档

    当前我们组管理着一套审核系统,除了数据源是服务端提供的,其余后台管理都是由我们组在维护. 这个系统就是将APP中的各类社交信息送到后台,然后有专门的审核人员来判断信息是否合规,当然在送到后台之前已经让 ...

  4. Node.js躬行记(14)——压力测试

    公司有个匿名聊天的常规H5界面,运营向做一次 50W 的推送,为了能配合她的计划,需要对该界面做一次压力测试. 一.JMeter 压测工具选择了JMeter,这是Apache的一个项目,它是用Java ...

  5. Node.js躬行记(1)——Buffer、流和EventEmitter

    一.Buffer Buffer是一种Node的内置类型,不需要通过require()函数额外引入.它能读取和写入二进制数据,常用于解析网络数据流.文件等. 1)创建 通过new关键字初始化Buffer ...

  6. Node.js躬行记(3)——命令行工具

    一.自定义 创建一个空目录,然后通过npm init命令初始化package.json文件,并按提示输入相关信息或直接回车使用默认信息,生成的内容如下所示. { "name": & ...

  7. Node.js躬行记(4)——自建前端监控系统

    这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2.将性能和错误量化.因为自己平时喜欢吃菠萝,所以就取名叫菠萝系统.其实在很早以前就有这个想法,当时已经实现了前端的参 ...

  8. Node.js躬行记(6)——自制短链系统

    短链顾名思义是一种很短的地址,应用广泛,例如页面中有一张二维码图片,包含的是一个原始地址(如下所示),如果二维码中的链接需要修改,那么就得发代码替换掉. 原始地址:https://github.com ...

  9. Node.js躬行记(24)——低代码

    低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台.让具有不同经验水平的开发人员可以通过图形化的用户界面,通过拖拽组件和模型驱动的逻辑来创建网页和移动应用程序 ...

随机推荐

  1. CCF201509-2日期计算

    问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2) 年份是400的整数倍. ...

  2. pip导出项目依赖包名称及版本,再安装命令

    A导出依赖 pip freeze >requirements.txt B导入安装依赖 pip install -r requirements.txt 使用下面的命令安装依赖能自动跳过安装错误的依 ...

  3. redis从0-1学习记录(完结)

    1. NoSQL(not only sql):不仅仅是数据库,非关系型数据库,关系型数据库是以表格的行列进行存储的,而非关系型数据库是以键值对进行存储,不需要固定的格式.非关系型数据库的特点,方便扩展 ...

  4. 性能优化之html、css、js三者的加载顺序

    前言 我们知道一个页面通常由,html,css,js三部分组成,一般我们会把css文件放在head头部加载,而js文件则放在页面的最底部加载,想要知道为什么大家都会不约而同的按照这个标准进行构建页面, ...

  5. 虚拟机安装linux

    https://blog.csdn.net/wujiele/article/details/92803655https://www.cnblogs.com/yunwangjun-python-520/ ...

  6. 7.Jenkins进阶之流水线pipeline语法入门学习(2)

    目录一览: (2) Declarative Pipeline Syntax 2.1) Sections - 章节 2.2) Directives - 指令 2.3) Sequential Stages ...

  7. 1s 创建100G文件,最快的方法是?

    在我们日常工作中,为了验证开发的功能,比如:文件上传功能或者算法的处理效率等,经常需要一些大文件进行测试,有时在四处找了一顿之后,发现竟然没有一个合适的,虽然 Linux 中也有一些命令比如:vim. ...

  8. JAVA语言学习day16--7月22日

    ###15用户选择功能 * A: 用户选择功能 * a: 案例代码 import java.util.ArrayList; import java.util.Scanner; /* * 超市管理系统主 ...

  9. 解决go-micro与其它gRPC框架之间的通信问题

    在之前的文章中分别介绍了使用gRPC官方插件和go-micro插件开发gRPC应用程序的方式,都能正常走通.不过当两者混合使用的时候,互相访问就成了问题.比如使用go-micro插件生成的gRPC客户 ...

  10. asp.net core MVC 添加静态文件

    ASP.net Core 中添加插件需要 1.将文件放在wwwroot文件夹下(根目录文件夹,没有的话需要创建) 2.需要在project.json中的dependencies添加如下依赖 " ...