首页 > 编程语言 >大前端一篇文章搞定什么是nodeJs它和NPM关系与应用

大前端一篇文章搞定什么是nodeJs它和NPM关系与应用

时间:2023-07-19 22:35:37浏览次数:51  
标签:NPM Node 搞定 nodeJs JavaScript js npm 模块 安装

现在前端的入门门槛越来越高了,不再是单纯 html+css+js,各种前端框架 层出不穷,各种ui组件库层出不穷。

模块化,打包化,各种工具库层出不穷,前端变成大前端 ,甚至前端可以搞定整个项目,通过node作为服务端api,

这里我们主角就是nodeJs

什么是nodejs

javaScript是一门脚本语言,通常被用来编写、执行本地源代码。脚本语言需要一个解析器才能运行,HTML文件中的JavaScript代码由浏览器解析执行。而自行执行JavaScript代码则需要Node.js解析器才能运行。

每个解析器都是一个运行环境,允许JavaScript定义各种数据结构和执行各种计算,同时也允许JavaScript调用运行环境提供的内置对象和方法。浏览器环境下,JavaScript常被用来操作DOM等功能,因此浏览器提供了document等内置对象;在Node.js环境下,JavaScript通常用来处理磁盘文件和搭建HTTP服务器,因此Node.js提供了fs、http等内置对象。

Node.js是一个基于V8引擎的JavaScript运行环境。V8引擎具有快速执行JavaScript代码的能力,并且性能非常优秀。Node.js专注于优化一些特殊用例,并提供了替代的API,在非浏览器环境下更好地运行V8引擎。

作为一种服务器端JavaScript平台,Node.js能够快速创建网络应用程序。同时,它也支持前后端JavaScript编程,为开发者提供了更高效的系统设计和一致性。

NodeJS特性

以下是一些使得Node.js成为软件架构师的首选的重要特征:

  1. 异步和事件驱动的Node.js库- 所有API都是异步非阻塞的,这意味着Node.js服务器不必等待API返回数据。它可以立即移动到下一个API调用,利用Node.js事件通知机制来获取从API调用获得的响应。这种异步的事件驱动机制,使得服务器可以高效地响应并快速处理大量请求。

  2. 非常快的Node.js代码执行- Node.js代码在谷歌Chrome的V8 JavaScript引擎上运行,速度非常快。

  3. 单线程但高度可扩展的Node.js - Node.js使用事件循环单线程模型,事件机制有助于服务器以非阻塞的方式响应请求,这使得服务器具备高度可扩展性。相比传统服务器使用创建线程等方式来处理请求,Node.js使用单线程和单一程序处理方式,能够更好地处理大量请求,并具备更高的可扩展性。例如,Node.js可以比传统的Apache HTTP服务器处理更多请求。

  4. 无缓冲的Node.js应用 - Node.js应用程序从来不需要缓冲任何数据。这些应用程序只需输出块中的数据,不需要在内存中缓冲大量数据。

总之,以上特点都让Node.js成为软件架构师的首选,因为它可以高效地响应请求并处理大量请求,从而提高系统的性能和可扩展性。

统一在Javascript浏览器之外的实现, CommonJS

自从Netscape浏览器问世以来,JavaScript就一直在探索本地编程的路。 不幸的是,当时服务端JavaScript的发展基本上是借鉴其他服务器端语言的实现,因此缺乏特色和实用价值。 随着JavaScript在前端应用的广泛应用以及服务端JavaScript的推进,JavaScript现有的规范变得非常弱,难以满足JavaScript在大规模应用方面的需求。在以JavaScript为宿主语言的环境中,只有基本的原生对象和类型,其他对象和API取决于宿主的提供,因此,JavaScript缺乏以下功能:

  1. 模块系统:没有原生支持的闭包作用域或依赖管理。
  2. 标准库:除了一些核心库外,没有文件系统API和IO流API等。
  3. 标准接口:缺乏像Web服务器或数据库这样的统一接口。
  4. 包管理系统:不能自动加载和安装依赖。

因此,CommonJS(http://www.commonjs.org)规范应运而生,目的是为了构建JavaScript在包括Web服务器、桌面、命令行工具以及浏览器中的生态系统。

CommonJS试图定义一套可供普通应用程序使用的API,以填补JavaScript标准库过于简单的不足。 其终极目标是制定类似于C ++标准库的规范,使基于CommonJS API的应用程序可以在不同的环境下运行,就像使用C ++编写的应用程序可以使用不同的编译器和运行时函数库一样。例如:模块、包、系统、二进制、控制台、编码、文件系统、套接字、单元测试等等。

Node.js是CommonJS规范最流行的实现之一。Node.js实现了require方法作为其模块引入的方法,同时,NPM则基于CommonJS规范定义的模块规范,实现了依赖管理、模块自动安装等功能。

常用框架

  1. express:完善、出现早、文档全、社区大
  2. koa:超前,完善中
  3. hapi:复杂,适合大型项目

NodeJS下载安装

NodeJS提供了一些安装程序可以从nodejs.org下载安装。

管理Nodejs版本

n

n是一位鼎鼎大名的TJ Holowaychuk所写的Node.js模块,(鼎鼎大名的Express框架作者)旨在提供一个简单、直观的方式来管理Node.js版本。正如其名字所示,它追求的理念就是简洁——无需使用子Shell、配置文件或臃肿的API,仅提供简单易用的功能。

n模块的主要功能是让用户可以轻松地安装、使用和管理不同版本的Node.js。如果您想要安装n模块,可以按照以下步骤进行操作:

npm install n -g

安装完成之后,直接输入n后输出当前已经安装的node版本以及正在使用的版本(前面有一个o),你可以通过移动上下方向键来选择要使用的版本,最后按回车生效。

安装最新的版本

n latest

安装稳定版本

n stable

n后面也可以跟随版本号比如:

n v0.10.26

n 0.10.26

删除某个版本

$ n rm 0.10.1

以指定的版本来执行脚本

$ n use 0.10.21 some.js

常用命令

n          # 显示所有已下载版本
n 10.16.0  # 下载指定版本
n lts      # 查看远程所有 LTS Node.js 版本
n run 10.16.0 # 运行指定的 Node.js 版本
  n                              Display downloaded Node.js versions and install selection
  n latest                       Install the latest Node.js release (downloading if necessary)
  n lts                          Install the latest LTS Node.js release (downloading if necessary)
  n <version>                    Install Node.js <version> (downloading if necessary)
  n install <version>            Install Node.js <version> (downloading if necessary)
  n run <version> [args ...]     Execute downloaded Node.js <version> with [args ...]
  n which <version>              Output path for downloaded node <version>
  n exec <vers> <cmd> [args...]  Execute command with modified PATH, so downloaded node <version> and npm first
  n rm <version ...>             Remove the given downloaded version(s)
  n prune                        Remove all downloaded versions except the installed version
  n --latest                     Output the latest Node.js version available
  n --lts                        Output the latest LTS Node.js version available
  n ls                           Output downloaded versions
  n ls-remote [version]          Output matching versions available for download
  n uninstall                    Remove the installed Node.js

n 只适用于 macOS 和 Linux ,不适用于 Windows。

nvm

nvm是一款流行的Node.js版本管理工具,可以通过命令行界面实现快速、简便的Node.js版本安装、切换和管理。使用nvm,您可以轻松地安装和切换不同版本的Node.js,以适应不同的开发需求和应用场景。同时,nvm还具备方便的命令行接口和完善的文档支持,让用户能够快速上手并进行高效的开发工作。

nvm 只适用于 macOS 和 Linux 用户的项目,如果是 Windows 用户,可以使用 nvm-windows 、nodist 或 nvs 替换。

# 方式1 浏览器打开下面链接下载
https://github.com/nvm-sh/nvm/blob/v0.39.1/install.sh
# 下载完成后,通过命令安装
sh install.sh

# 方式2 推荐
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

# 方式3
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

安装过程中如果遇到一些奇怪的问题,可以查看下 nvm 补充说明。

常用命令

nvm ls                # 查看版本安装所有版本
nvm ls-remote         # 查看远程所有的 Node.js 版本
nvm install 17.0.0    # 安装指定的 Node.js 版本
nvm use 17.0.0        # 使用指定的 Node.js 版本
nvm alias default 17.0.0  # 设置默认 Node.js 版本
nvm alias dev 17.0.0  # 设置指定版本的别名,如将 17.0.0 版本别名设置为 dev

fnm


fnm 是一款快速简单

标签:NPM,Node,搞定,nodeJs,JavaScript,js,npm,模块,安装
From: https://www.cnblogs.com/Leo_wl/p/17566947.html

相关文章

  • 浅析npm init、create、exec,npx。
    npm-execnpmexecnpmexec<pkg>npmxnpmx<pkg>npm官方文档中指出x,其实就是exec的别名,通俗来讲意思就是npmexec、npmx,两个命令是完全等价的。npmexec<pkg>的执行流程-在本地查找是否有<pkg>对应的npm包-若找到,则运行这个包的package.json中bin字段对应的可执......
  • 一步一步来,带你轻松搞定磁盘分区
    新买的本本只有一个系统盘怎么办?别慌,今天手把手教你磁盘分区,自己动手也能解决!第一步点击【开始】-【搜索】,搜索硬盘分区,搜索出结果后,点击创建并格式化硬盘分区。第二步鼠标右键点击“OS(C)”,弹出菜单后,点击压缩卷。第三步因为系统和软件安装默认安装在C盘中,为了稳定性建议用......
  • 无需学习Python,一个公式搞定领导想看的大屏
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。不要让“做不了”成为数字化转型的障碍随着数字化的脚步加快,越来越多的企业开始注重数据的展示和报告。原有数据的整合,清洗,二次加工变得......
  • npm安装教程 搭建vue
    一、相关概念npm:Nodejs下的包管理器。webpack:它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包。vue-cli:用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要npminstall......
  • npm install xxx 后加上-s、-d、-g之间的区别?
    1、npminstallxxx-snpminstallxxx-s、npminstallxxx-S是npminstallxxx--save的简写形式局部安装,记录在package.js文件中dependencies对象中dependencies:生产环境的依赖包例如:vue、jquery、element-ui、echarts等。 2、npminstallxxx-dnpminstallxxx-d、n......
  • 手撸一个js 的npm 包
    手撸一个js的npm包打包后的格式commonjsvsesmodulevsAMDvsIIFEvsUMDcommonjs早期社区js模块化的一种方式,适用于nodejs端,为了能够在浏览器中运行,可以借助Browserify,将commonjs风格的js代码转换成可以在浏览器中运行的代码.它的代码风格如下:varsome=require('mo......
  • SpringBoot 服务接口限流,搞定!
    来源:blog.csdn.net/qq_34217386/article/details/122100904  在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。限流可以认为服务降级的一种,限流通过限制请求的流量以达到保护系统的目的。  一般来说,系统的吞吐量是可以计算出一个阈值的,为了保证系统的稳定运......
  • 一文帮你搞定H5、小程序、Taro长列表曝光埋点
    对于很多前端同学来说,“埋点”常常是一个不愿面对却又无法逃避的话题。为什么这么说呢,相信很多前端同学都深有体会:首先埋点这个事基本是前端“独享”的,服务端基本不太涉及;其次添加埋点,往往看起来很简单但实际做起来很麻烦,很多时候为了获取一些埋点需要的信息甚至要对已经写好的代......
  • nodejs中jwt的使用
    前言在浏览器和服务端的交互中,http请求是无状态的,那在web项目中准确无误的保存用户的登录状态是前后端交互中必须要解决的问题。目前在web端解决登录认证的问题分为三种base64session/cookietoken下面介绍下token中jwt实现登录验证的方式。基本概念了解下几种不同的认证方式base......
  • yarn : 无法加载文件 E:\nodejs\yarn.ps1,因为在此系统上禁止运行脚本。问题解决
    1.在电脑的开始菜单中,搜索PowerShell ,然后以管理员身份运行,如下所示:2.以管理员身份运行后,会出现命令窗口,接下来,输入命令get-ExecutionPolicy 查看权限,会看到它的返回值是 Restricted ,意思是当前是禁用的。3.执行命令:set-ExecutionPolicyRemoteSigned,没有报错就......