Zervan的小站 Zervan的小站
首页
  • 测评

    • 蓝牙耳机测评
  • 渗透

    • 网络渗透学习指南
  • 前端

    • 学习web开发
  • 版本控制与管理

    • Github入门与实践
  • 博客开发指南

    • 利用GitHub建立博客
  • 网文梗概-序
  • 我们的文学之路
  • 《世界观体系》
  • 《人物设定集》
  • 《诗集》
  • 《素材》
  • universe

    • 新冠疫情与外星人
  • human

    • 人的自由意志论
  • social

    • 科技的未来
  • school

    • 我们的大学
  • philosophy

    • 关于虚无主义
  • 日志
  • 支持我们
  • 友情链接
about
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Zervan

天下最普通的人之一
首页
  • 测评

    • 蓝牙耳机测评
  • 渗透

    • 网络渗透学习指南
  • 前端

    • 学习web开发
  • 版本控制与管理

    • Github入门与实践
  • 博客开发指南

    • 利用GitHub建立博客
  • 网文梗概-序
  • 我们的文学之路
  • 《世界观体系》
  • 《人物设定集》
  • 《诗集》
  • 《素材》
  • universe

    • 新冠疫情与外星人
  • human

    • 人的自由意志论
  • social

    • 科技的未来
  • school

    • 我们的大学
  • philosophy

    • 关于虚无主义
  • 日志
  • 支持我们
  • 友情链接
about
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 测评

  • 渗透

  • 工具

  • 前端

  • 英语考试攻略

  • 区块链投资

  • 版本控制与管理

    • 博客开发指南

      • 部署博客-GitHub Pages
      • Nginx安装配置-Ubuntu2004
      • MySQL的安装及使用-Ubuntu2004
      • 服务器上的Git-配置服务器
      • 静态Blog的theme开发
      • 发布dll
      • 修改nginx_conf部分配置
      • 关于 Nodejs
        • 关于Node.js
        • 安装
        • 环境配置
          • 配置npm缓存路径
          • 安装vue3.0
          • 配置环境变量
        • 测试
    • Github入门与实践
    • GitHub资源使用指南
    • Git初学指南
    • license相关
    • Git实际操作
  • code
  • 版本控制与管理
  • 博客开发指南
Zervan
2021-08-25

关于 Nodejs

# 关于Node.js

简单的说 Node.js 就是运行在服务端的 JavaScript,是一种通过JavaScript语言开发web服务端的东西。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

node.js有非阻塞,事件驱动I/O等特性,从而让高并发(high concurrency)在的轮询(Polling)和comet构建的应用中成为可能。

当浏览器向网站发送请求,服务器接收到了请求,并开始搜寻被请求的资源,同时还会查询一下数据库,最后将响应结果传回浏览器。

在传统的web服务器(如Apache)中,每一个请求都会使服务器创建一个新的进程来处理这个请求。

在Ajax中,我们可以不需要每次都请求一个完整的新页面。取而代之的是,每次只请求需要的部分页面信息就可以了。

但如果你要搭建一个类微博的社交网站,你的好友会随时的推送新的状态。要达成这个需求,我们需要让用户一直与服务器保持一个有效连接。目前最简单的实现方法,就是让用户和服务器之间保持长轮询(long polling)。

http是无状态协议,HTTP请求不是持续的连接,每请求一次,服务器响应一次。

而长轮询是一种利用HTTP模拟持续连接的技巧。具体来说,只要页面载入了,不管你需不需要服务器给你响应信息,你都会给服务器发一个Ajax请求。ajax是用给http加参数的方式,让他模拟有状态,这样可以让浏览器始终保持等待响应的状态。

虽然以上过程依然只有非持续的Http参与,但是我们模拟出了一个看似持续的连接状态

我们再看传统的服务器(如Apache)。每当一个新用户连到你的网站上,你的服务器就得开一个连接。

每个连接都需要占一个进程,这些进程大部分时间都是闲着的。虽然这些进程闲着,但是照样占用内存。

这意味着,如果用户连接数的增长到一定规模,你服务器没准就要耗光内存直接瘫了。

这种情况的解决方法就是:非阻塞和事件驱动。

非阻塞的服务器就是一个loop循环,这个loop会持续进行。当新请求被提出,loop接收请求,并把这个请求传给其他的进程(比如传给一个搞数据库查询的进程),然后响应一个回调(callback),把结果传回用户的浏览器。完成后loop就接着跑,接其他的请求。

从而在理论上说,同一时刻的数据库查询数量,以及用户的请求数量就没有限制了。服务器只在用户那边有事件发生的时候才响应,这就是事件驱动。

FriendFeed是用基于Python的非阻塞框架Tornado 来实现此功能的。

Node.js的应用是通过javascript开发的,然后直接在Google的V8引擎上运行。使用Node.js就不用担心用户端的请求会在服务器里运行造成阻塞的代码,因为javascript本身就是事件驱动的脚本语言。

你回想一下,在给前端写javascript的时候,更多时候你都是在搞事件处理和回调函数。因此javascript本身就是给事件处理量身定制的语言。

Node.js还是处于初期阶段。如果你想开发一个基于Node.js的应用,你应该会需要写一些很底层代码。但是下一代浏览器很快就要采用WebSocket技术了,从而长轮询也会消失。

在Web开发里,Node.js这种类型的技术只会变得越来越重要。

# 安装

进入官网 https://nodejs.org/zh-cn/ (opens new window),可以安装 Stable 版本。

linux安装,安装非常直接。运行下面的命令更新软件包索引,并且安装 Node.js 和 npm:

sudo apt update
sudo apt install nodejs npm

打开终端,分别输入 node -v 和 npm -v,返回版本号,说明安装成功。

# 环境配置

# 配置npm缓存路径

配置 npm 安装的全局模块所在的路径,以及缓存 cache 的路径,防止以后将安装的模块放在 C 盘。

这里我选择将模块所在路径和缓存路径放在我 node.js 安装的文件夹中,如下图所示,创建 node_global 和 node_cache 文件夹:

创建完成,打开 cmd 窗口:

输入以下语句,注意路径是你的路径:

npm config set prefix "C:\Program Files\nodejs\node_global"
npm config set cache "C:\Program Files\nodejs\node_cache"

该步骤可以选择跳过,则路径如下:

C:\Users\zervan\AppData\Roaming\npm
C:\Users\zervan\AppData\Roaming\npm-cache

# 安装vue3.0

安装vue3.0指令如下:

npm install -g vue

安装vue3.0的过程中如遇到

npm ERR! code EPERM
npm ERR! syscall mkdir
npm ERR! path C:\Program Files\nodejs\node_modules\.staging
npm ERR! errno -4048
npm ERR! Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\.staging'
npm ERR!  [OperationalError: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\.staging'] {
npm ERR!   cause: [Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\.staging'] {
npm ERR!     errno: -4048,
npm ERR!     code: 'EPERM',
npm ERR!     syscall: 'mkdir',
npm ERR!     path: 'C:\\Program Files\\nodejs\\node_modules\\.staging'
npm ERR!   },
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: 'C:\\Program Files\\nodejs\\node_modules\\.staging',
npm ERR!   parent: '@babel/helper-compilation-targets'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

则在用户文件夹中删掉.npmrc这个文件夹就解决了。

以上两步都可以选择性忽略,下面才是重点

# 配置环境变量

进入系统高级属性,选择环境变量:

在 系统变量下新建 NODE_PATH,填写变量名及你的路径。

变量名为:NODE_PATH
变量值为:C:\Users\zervan\AppData\Roaming\npm\node_modules

在 系统变量下编辑 PATH,填写 Nodejs 安装路径。

C:\Program Files\nodejs
%NODE_PATH%

在 用户变量 下修改 Path 路径为你的新路径,修改为 node_global (npm)的路径。

C:\Program Files\nodejs
C:\Users\zervan\AppData\Roaming\npm

# 测试

配置完后,安装个 module 测试下,我们就安装最常用的 express 模块,打开cmd窗口,输入如下命令进行模块的全局安装。

打开 cmd 窗口,输入如下命令:

npm install express -g     # -g是全局安装的意思

安装完成

编辑 (opens new window)
上次更新: 2023/2/21 22:14:43
修改nginx_conf部分配置
Github入门与实践

← 修改nginx_conf部分配置 Github入门与实践→

最近更新
01
修改nginx_conf部分配置
02-22
02
高学历宗教人士
12-04
03
理性思维
12-04
更多文章>
Zervan的小站 · VERSION: 1.0.128 · 基于vilivala构建 | pv と uv | Copyright © 2021-2023 | 鲁ICP备2021036977号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式