美文网首页
NodeJS + npm/cnpm/nrm/yarn

NodeJS + npm/cnpm/nrm/yarn

作者: 瑟闻风倾 | 来源:发表于2021-05-25 16:39 被阅读0次

    1. NodeJS

    1.1 NodeJS为性能而生

    • 目的:实现高性能web服务器
    • 实现方案:Node创始人将V8移植到web服务器,从而满足高性能web服务器的想象
    • NodeJS:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境

    V8 引擎(JS解析引擎):chrome浏览器里面的JS解析引擎(解析js速度快)

    1.2 NodeJS下载安装

    • 安装验证:cmd中输入 node -v 命令后出现node版本

    1.3 服务器程序示例及运行步骤

    image.png
    • 文件存储在本地磁盘(如:c:/nodeprojects/test.js)
    • 打开cmd窗口定位到项目目录:cd c:/nodeprojects
    • node命令运行程序:node test.js
    • 浏览器访问程序:192.168.1.250.3800
    • 修改程序需中断后运行:crol + c 为中断命令
    • 关闭cmd程序,则服务器就关闭了

    1.4 NodeJS介绍

    • 属于后台语言
    • 不用建设在任何服务器软件之上:没有根目录
    • 路由设计(更安全):显示的是虚拟路由地址而非真实的物理地址

    (1) Nodejs是后台语言

    语言分类 定义 举例 特点
    前台语言 运行在浏览器上的语言 html、js、css等 源码用户可见
    后台语言 执行在服务器上的语言 3p(php/jsp/asp) + java/python/ruby等 源码用户不可见
    image.png

    (2) NodeJS不用建设在任何服务器之上—没有根目录


    image.png
    语言 构建所依赖的http服务器 特点 优点
    php php构建在Apache服务器之上 有根目录,通过文件地址作为http地址来在浏览器中直接访问(提供静态资源访问服务)
    jsp jsp构建在Nginx服务器之上
    nodejs nodejs不用建设在任何服务器之上 没有根目录,直接访问ip和端口即可(监听端口下的所有路径,加不加后缀地址,访问的文件都一样) 路由设计更安全
    image.png
    image.png

    (3) NodeJS顶层路由设计

    nodejs路由设计更安全:网页上显示的网址并不是该网页文件真实的存放路径。(nodejs路由和使用的文件没有任何关系,即显示的是虚拟的路由地址,而不是真实的物理文件地址,让黑客无从下手)

    • 路由设计(路由跳转)


      举例.png
      说明.png
    • 访问图片(页面插入图片)


      image.png
      image.png
    • 访问样式文件


      image.png

    1.5 NodeJS特点和适合的应用场景

    • 单线程(single thread):一个线程服务所有用户(一个服务员服务所有人)
    • 非阻塞I/O(No-bloking I/O):不等待,一空闲就转向服务他人(服务员自动找活干)
    • 事件驱动(Event-driven):


      NodeJS特点.png

    (1) NodeJS是单线程

    • 单线程的好处:操作系统不再有线程创建和销毁的时间开销。
    • NodeJS适合大量IO操作(多断点),但不适合计算操作,大量计算操作会造成程序阻塞。
    php相当于一个有多名服务员的餐厅.png
    NodeJS相当于一个只有一名服务员的餐厅.png
    • NodeJS适合多IO操作的项目


      举例.png
    • NodeJS对程序的鲁棒程度要求极高:因为如果一个用户比如触碰来地雷(比如输入错误的东西,正则也没有拦截成功),此时node线程就停了,整个服务器就down了。


      image.png
      image.png

    (2) NodeJS是非阻塞IO的


    image.png
    image.png
    • 阻塞模式下,一个线程只能处理一个任务,要想提高吞吐量必须通过多线程
    • 非阻塞模式下,一个线程永远在执行计算操作,这个线程的cpu核心利用率永远是100%。
    • 所以,nodejs是一种特别有哲学的解决方案:与其人多,但是好多人闲着;还不如一个人玩命,往死里干活。nodejs适合做 I/O 多的项目,速度快能够服务更多的人;不适合做计算重的业务,简单计算可以。

    (3) NodeJS是事件驱动的(仅了解)


    image.png

    (4) NodeJS适合的应用场景及局限(无法挑战老牌语言)


    NodeJS的生态丰富.png
    适合的应用场景.png
    局限.png

    1.6 NodeJS处理GET和POST请求

    GET和POST请求都是上行请求,都是把数据从浏览器带向服务器的方式:

    请求 说明 特点
    GET请求 通过URL的?querystring来传递参数 不安全、传递内容少;但方便分享网址
    POST请求 通过上行报文的报文体传递参数 安全、传递内容多;但不方便分享网址

    表单、Ajax都能发送GET和POST请求,那么如何用nodejs传递参数?具体实现请看下文详述。

    1.6.1 GET请求

    (1) 获取url中的参数(querystring类型)


    image.png

    (2) 获取url中的参数(json对象类型)

    • 直接获取json类型
    • 先获取querystring类型,再转为json类型(querystring转为json
      image.png
      (3) 将json转为querystring
      image.png
    1.6.2 POST请求
    image.png 表单传递的内容多就会被自动拆分为很多小包.png

    返回的结果是querystring类型,可通过querystring模块的parse()方法转为json对象(方便后续进行数据库操作)。

    req.on("end",function(){
      console.log(result.tostring());//字符串
      var obj = querystring.parse(result.tostring());//对象
      console.log(obj);
    })
    

    1.7 自定义模块

    模块:模块就是独立的逻辑体系,可以对我们的业务进行分割。

    (1) 模块引入— 使用require引入nodejs的内置模块或自定义模块

    image.png

    requireimport的区别:ES6标准发布后,module成为标准,标准使用是以import引入模块,以export指令导出接口。但是在我们一贯的node模块中,我们依然采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。

    (2) 作用域


    image.png

    (3) 向外暴露

    • 方法一:使用exports向外输出单个变量或函数
      image.png
    image.png
    • 方法二:module exports
      image.png
      image.png

    (4) 连续require

    • nodejs支持链式引用:A文件可以引用B,B文件也可以引用C文件
    • nodejs会阻止环式引用:A文件引用B,B文件又引用A文件,nodejs会自动阻止(不会报错但两者都引用不成功)

    (5) node_mudlues文件夹


    image.png
    image.png

    node_mudlues文件夹可多个项目公用


    image.png

    (6) 应用举例:路由表的设计


    image.png image.png

    2. 包管理工具

    2.1 npm的安装与使用

    (1) npm介绍:npm是Nodejs下的包管理器。

    介绍.png

    (2) npm安装

    • 下载安装nodejs
      windows下的NodeJS安装是比较方便的,只需要登陆官网nodejs直接下载,安装过程基本直接“NEXT”就可以了。
    • 测试安装Nodejs完成
      安装完成后可以使用cmd(win+r然后输入cmd进入)测试下是否安装成功。方法:在cmd下输入node -v,出现版本提示就是完成了NodeJS的安装。
    • npm的安装
      新版的NodeJS已经集成了npm,所以npm也一并安装好了。可以在cmd命令行输入"npm -v"来测试是否成功安装,出现版本提示便OK了。
      测试安装Nodejs和npm完成.png
      备注:常规NodeJS的搭建到现在为止已经完成。npm作为一个NodeJS的模块管理,后续可根据具体情况进行各项配置。

    (3) 使用npm下载安装第三方库并引用模块示例

    下载安装命令:npm install ***,下载后自动存放在node_modules文件夹下

    npm install serve-static
    
    引用.png
    运行.png

    eg3:下载uni-migration

    npm install -g uni-migration
    
    使用npm安装第三方库.png
    备注:在HBuilderX->菜单->工具->插件安装中可直接安装各种相关插件
    插件安装.png

    (4) 用package.json管理依赖

    • 初始化命令来创建package.json文件:npm init
      image.png

    若package.json想要采用默认配置,直接输入npm init -y 初始化命令即可

    image.png
    • 创建的package.json文件示例


      image.png
    • 手动添加依赖(包名+版本号)


      image.png
    • 自动添加依赖命令(-save):npm install -save ***npm install *** -save
      备注:save可放前也可放后;使用npm时,save可略写为s;使用cnpm时,save前需两个杠。

    • cnpm替代npm

    拓展:cnpm是npm淘宝镜像。npm下载太慢,淘宝做了一个npm的镜像来替代npm,速度极快,方便国人程序员;同步频率目前为 10分钟 一次以保证尽量与官方服务同步。安装命令为npm install -g cnpm --registry=https://registry.npm.taobao.org

    image.png
    • 总结


      总结.png

    (5) npm版本号和全局安装

    • 依赖包版本说明


      image.png
    • 全局安装


      image.png
    • 查看全局路径


      image.png

    在全局路径中安装项目的开发依赖,如:cnpm install -g grunt -save-dev

    image.png
    当然,webpack、grunt、gulp等开发所需的模块包 也可以直接安装在项目路径下:如 cnpm install webpack -save-dev
    • npm其他命令


      image.png

    2.2 yarn的安装与使用

    (1) yarn的简介
    Yarn是facebook发布的一款取代npm的包管理工具。
    (2) yarn的特点

    • 速度超快:Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
    • 超级安全:在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
    • 超级可靠:使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。

    (3) yarn安装

    • 下载node.js后使用npm安装
    npm install -g yarn
    
    • 查看版本
    yarn --version
    

    用Mac安装任何东西的时候只要前面开头报错为:npm WARN checkPermissions Missing write access to,即缺少对文件的写访问权限,那么只需要在命令前面加个sudo最高权限就可以了,如:sudo npm install -g yarn
    (4) yarn常用命令

    • 启动项目:yarn server

    相关文章

      网友评论

          本文标题:NodeJS + npm/cnpm/nrm/yarn

          本文链接:https://www.haomeiwen.com/subject/vrutzktx.html