学node 之前你要知道这些
初识nodejs
19年年底一个偶然的机会接到年会任务,有微信扫码登录、投票、弹幕等功能,于是决定用node 来写几个服务,结果也比较顺利。
当时用看了下koa2的官方文档,知道怎么连接数据库、怎么映射表实体,怎么处理http,怎么处理异常等,就可以直接写起来了。从应用层面上来说 nodejs 入门还是挺简单的,前几天在整理语雀时发现前几年整理的nodjs的文档,这里分享下,希望对于初学者有些帮助。

什么是服务器
服务器也是电脑,服务器是为电脑提供服务的电脑、设备,既然是电脑,那么它也一样是由CPU,主板,内存条,硬盘,机箱,电源等硬件组成。当然由于服务器的特殊性,根我们家用的电脑还是有区别,如大小,处理数据的快慢,温度等。
服务器也是计算机、电脑,只不过分工不同,如我们人类有医生、护士、律师等,在计算机的世界中也是如此,专门提供服务的计算机,我们叫服务器。
如在我们写了一个网站,我们想让其他人也能打开这个网址,这个时候我们可以把写好的代码发给他,让他跑起来,虽然这样也可以,但是这样非常不友好,第一是用户很多呢?第二并不是所有人都是程序员。所以这个时候如果把这个东西放到某台计算机A上,然后别人可以通过某种服务来访问(比如 http 服务),此时这个计算机A就叫服务器,当然现实生活中服务器不止这一种,还有如 数据服务器、文件服务器、应用服务器、WEB服务器等,根据计算机的服务请求,并进行相应的处理,具备承担服务和保障服务的能力。

通俗理解:服务器是提供计算机服务的设备。
常用linux命令
| pwd | 显示当前的目录路径 | |
| ls | 显示当前目录下的内容 | |
| ls -R | 列出子目录中的所有文件 | |
| ls -a | 显示隐藏的文件 | |
| cd | 改变当前工作目录 | cd .. 打开上一级,cd / 打开跟目录 |
| cls | 清除屏幕信息 | |
| mkdir | 创建目录 | |
| rm | 删除文件或者空目录 | |
| rmdir | 删除空目录 | |
| rm -rf dir | 删除非空目录 | |
| ps | 列出系统中当前正在运行的那些进程 | |
| ps -ef | grep ssh | 查找特定进程信息 | ps -ef | grep mysql |
| kill -9 pid | 终止某进程 |
同步、异步
同步就是指一个进程在执行某个动作、请求时,如果这个动作需要一段时间才有结果,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去,反之异步,类似的概念还有 io 阻塞与非阻塞。如ui 界面中点击一个按钮给服务端发出一个请求,如果这个过程涉及成同步的,那么ui 会一直等待这个接口,在这个接口未返回时整个ui界面都是不可用的状态。
网络端口
通俗的理解,把计算机想成一个大的菜市场,菜市场中的各个档口就是安装在电脑上的各个应用程序,而档口的编号就是类似我们说的端口。ip 只是知道菜市场的地址,并不知道具体根哪个档口通信,这就是端口的作用。
在看看比较专业的定义,端口号的主要作用是表示一台计算机中的特定进程所提供的服务。网络中的计算机是通过IP地址来代表其身份的,它只能表示某台特定的计算机,但是一台计算机上可以同时提供很多个服务,如数据库服务、FTP服务、Web服务等,我们就通过端口号来区别相同计算机所提供的这些不同的服务,如常见的端口号21表示的是FTP服务,端口号23表示的是Telnet服务,端口号25指的是SMTP服务等。
url 格式
URL的全称是Uniform Resource Locator(统一资源定位符),它是因特网的万维网服务程序上用于指定信息位置的表示方法。
通俗理解就是 URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL,通过1个URL,能找到互联网上唯一的1个资源。
URL的一般语法格式为:protocol :// hostname[:port] / path / [:parameters][?query]#anchor其中带方括号的为可选项
- protocol:代表的是访问的协议,一般为http或者https以及ftp等。
- hostname:主机名,域名,比如www.baidu.com。
- port:端口号。当你访问一个网站的时候,浏览器默认使用80端口。
- path:查找路径。比如:www.jianshu.com/trending/now,后面的trending/now就是path。
- parameters: 资源文件名,有时候统一叫path
- query:查询字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查询字符串。
- anchor:锚点,后台一般不用管,前端用来做页面定位的。
常见的协议:
- http:超文本传输协议,访问的是远程的网络资源,格式是http://
- https:协议相当于是http协议的安全版
- file:访问的是本地计算机上的资源,格式是file://(不用加主机地址)
- mailto:访问的是电子邮件地址,格式是mailto:
- ftp:访问的是共享主机的文件资源,格式是 ftp://
- thunder:通过支持thunder(专用下载链接)协议的P2P软件访问该资源(代表软件:迅雷),格式是thunder://
http 协议
http在网络架构中属于应用层协议,通过浏览器发起http 协议可以跟服务器进行通信。
HTTP(hypertext transport protocol)协议,中文叫超文本传输协议 是一种基于TCP/IP的应用层通信协议
这个协议详细规定了 浏览器 和万维网 服务器 之间互相通信的规则,协议中主要规定了两个方面的内容
- 客户端:用来向服务器发送数据,可以被称之为请求报文
- 服务端:向客户端返回数据,可以被称之为响应报文
请求报文
- 请求行
- 请求头
- 空行
- 请求体
响应报文
- 响应行
- 响应头
- 空行
- 响应体
数据库
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。简单理解就是存储数据的仓库,我们可以通过我们的代码根这个仓库建立连接,这样可以操作、查询这些数据。
数据库通常分为关系型数据库、非关系型数据库。
关系型数据库
关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
常见关系型数据库: Oracle,SQLServer,DB2,Mysql
非关系型数据库
NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库。
随着近些年技术方向的不断拓展,大量的NoSql数据库如MongoDB、Redis、Memcache出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。对于非结构化数据的处理更合适,如文章、评论等
SQL
SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。
通俗理解就是可以用来操作我们存储在数据库中的数据的语言,如查询、删除等
SELECT product_name, product_type
FROM Product;
WHERE 1 = 1
AND product_type = 'xx';
// 多表联查
SELECT product_name, product_type
FROM Product1 t1,Product2 t2
WHERE 1 = 1
AND t1.id = t2.id;
// 同理
left join,
right join
其他分组、统计、排序等也很简单
nginx 基本概念
高性能的HTTP服务器和反向代理web服务器。在前端中我们知道一些基本的知识即可,通常我们用它来做静态资源服务器、接口反向代理。start nginx #启动nginx
nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx
nginx -s stop #强制停止Nginx服务
nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)
nginx -h #打开帮助信息
nginx -v #显示版本信息并退出
nginx -V #显示版本和配置选项信息,然后退出
nginx -t #检测配置文件是否有语法错误,然后退出
nginx -T #检测配置文件是否有语法错误,转储并退出
nginx -q #在检测配置文件期间屏蔽非错误信息
nginx -p prefix #设置前缀路径(默认是:/usr/share/nginx/)
nginx -c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)
nginx -g directives #设置配置文件外的全局指令
killall nginx #杀死所有nginx进程
配置注意事项
- 注意配置时 root与alias 区别,特别是我们前端打包时加了虚拟目录,如果配置了 publicPath,那么我们需要配置alias,而不是root
- 注意匹配规则、顺序,通常匹配了就不会继续匹配下,所以如果多个类似的接口前缀,需要反向代理到不同的服务时要注意配置的顺序
- 接口反向代理时加 / 与不加的区别
学node 之前你要知道这些的更多相关文章
- 从零开始学node(一): nodejs开发环境的配置
从零开始学node系列(一): nodejs环境安装 一.安装node.js 1. node官网,node安装十分方便快捷,所以这一步还是很顺利的. 2. webstorm是一款强大的前端开发IDE, ...
- 打算写一个《重学Node.js》系列,希望大家多多支持
先放上链接吧,项目已经开始2周了:https://github.com/hellozhangran/happy-egg-server 想法 现在是2019年11月24日,还有人要开始学习Node.js ...
- 一起来学node.js吧 node school简介
node.js这几年火爆的简直丧心病狂,去lagou.com查查node.js的职位,那叫一个多. 要说火爆到什么程度,竟然有一个网站专门去教大家学习node.js, Node School. 进去逛 ...
- 让我们一起学Node.js-文章列表
新浪的博客最近不给力,只好在博客园落个窝.至此之后,技术随笔会在博客园以及新浪的博客上同时更新,如果新浪给力的话~~~ 如果你想看先前新浪博客上分享的技术,请点击此处 忘尘子新浪博客! 我是拜读了朴灵 ...
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- 为什么 2020 还要学 Node.js
更佳阅读体验 https://www.yuque.com/sunluyong/node 前言 前些日子刷知乎看到个 2019 年初的问题 2019年nodejs凉了吗?凉到什么程度了?才看到问题的时候 ...
- 趁热打铁学node
前言 不废话直接官网下载安装. windows安装很简单,双击ok. 完成后命令行输入node -v. 会提示版本号,说明安装成功(Node.js 还自动附带安装了 npm,类似ruby的gem). ...
- 手把手教你学node.js 之使用 eventproxy 控制并发
使用 eventproxy 控制并发 目标 建立一个 lesson4 项目,在其中编写代码. 代码的入口是 app.js,当调用 node app.js 时,它会输出 CNode(https://cn ...
- 手把手教你学node.js之使用 superagent 与 cheerio 完成简单爬虫
使用 superagent 与 cheerio 完成简单爬虫 目标 建立一个 lesson 3 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/ 时,输出 CNo ...
- 手把手教你学node.js之学习使用外部模块
学习使用外部模块 目标 建立一个 lesson2 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/?q=alsotang 时,输出 alsotang 的 md5 ...
随机推荐
- vue+iview 表格行选中修改背景色
<Table :columns="columns" :no-data-text="L('NoDatas')" border :data="lis ...
- pycharm配置gitlab
一.安装Git 下载地址: https://git-scm.com/downloads 安装说明: https://git-scm.com/downloads 二.pycharm配置gitlab: 1 ...
- scrapy.Request callback不执行
1.在scrapy.Request方法里边加上参数dont_filter=True(去重) 2.增加是不是allowed_domains范围内的url 3.yield Request 改为yield ...
- 解决com.alibaba.excel.exception.ExcelGenerateException: Can not close IO.
我在使用easycel导出到zip包中时,出现了这个问题.各种文件输出时产生的问题其实大同小异 查看了一些网上的文章,还有github上关于此bug的issue,总算是理清并解决了. 解决方法一 主要 ...
- 搬运工 - Appium Python API 中文版
Appium_Python_Api文档 1.contextscontexts(self): Returns the contexts within the current session. 返回当前会 ...
- Conda简单教程 - 搬运
Conda简单教程 转自:https://www.cnblogs.com/nuccch/p/15046969.html 目录 什么是Conda 安装Conda 虚拟环境管理 模块管理 何时使用Cond ...
- pytest用例管理框架实战(基础篇)
先安装pip install pytest pytest用例管理框架 默认规则: 1.py文件必须以test_开头或者_test结尾 2.类名必须以test开头 3.测试用例必须以test_开头 ge ...
- day02-容器功能
容器功能 1.Spring注入组件的注解 Spring中的传统注解@Component.@Controller.@Service.@Repository,在SpringBoot中仍然有效. 2.@Co ...
- Salesforce Javascript(四) 展开语法 ...
本篇参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax Sale ...
- 最新版本 Stable Diffusion 开源AI绘画工具之部署篇
目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...