美文网首页Web
Node.js的学习总结(一)

Node.js的学习总结(一)

作者: 追逐_chase | 来源:发表于2019-12-16 14:09 被阅读0次
    node.jpeg

    1.什么是Node.js

    Node.js 是一个基于"Chrome V8 引擎" 的JavaScript 运行环境

    Chrome V8 引擎是什么呢?

    V8引擎是一款专门解释和执行JS代码虚拟机, 任何程序只要集成了V8引擎都可以执行JS代码

    NodeJS不是一门编程语言, 只是一个运行环境, 就像windowsLinux,iOS等一样。由于集成了V8引擎,可以这个运行环境可以执行我们编写的JS代码。这个运行环境的最大特点是可以操作系统的底层API,通过这些API 我们可以编写出网页中无法实现的功能

    2.NodeJS的3种安装方式

    方式一
    • 官网现在安装包
    • 安装全程 下一步,直到完成
    • 在终端工具使用 node -v 查看安装版本
    方式二 手动安装
    1. 官网下载.zip安装包,根据自己的电脑选择下载
    image.png
    1. 解压下载好的安装包,把解压完成的文件 方在对应的盘符中,比如:windows电脑,放在D盘的node文件夹中

    3.配置环境变量
    鼠标右键我的电脑---->属性----->高级系统设置----->环境变量---->系统变量----->path路径----->新建一个node的path路径
    注意: 新建的path路径就是你 解压完成文件 放在对应D盘的路径

    4.在命令行工具中输入 node -v 查看安装完成的版本

    image.png image.png image.png
    方式三 安装多个版本

    在nodejs的官网上我们可以看到,nodejs有多个版本,我们想要安装多个版本要怎么做?
    就需要用到NVM

    1. 在github打开NVM的网址 如下图
    image.png image.png

    2.前期准备工作,下载二进制文件
    2.1.打开我的我的电脑

    2.2. 在D盘(可以是任意的盘符)

    2.3.创建一个文件夹develop

    2.4.在develop文件夹中创建2个子文件夹NVMNode

    2.5 把下载的二进制文件放在NVM中解压,用管理员身份运行install.cmd文件

    2.6 回车enter 生成一个seting.txt文件,把seting.txt文件另存到NVM文件夹中。

    2.7 在NVM文件夹中找到seting.txt,打开编辑 这个文件,配置路径,保存

    image.png

    3.配置环境变量

    3.1 鼠标右键我的电脑----> 属性

    3.2 找到 高级系统设置---->环境变量

    3.3 在系统变量中找到NVM_HOMENVM_SYMLINK
    -- 如果没有 这个2个名称,就自己点击新建创建2个这样的变量,
    --如果有这2个变量,但是没有值就编辑配置路径
    NVM_HOME---->对应的路径就是NVM文件夹路径 D:\develop\NVM
    NVM_SYMLINK--->对应的路径就是Node文件夹的路径 D:\develop\Node

    image.png

    3.4 找到path打开----->新建
    配置环境变量 %NVM_HOME% %NVM_SYMLINK%

    image.png

    3.5 查看 nvm version版本

    3.6 安装你想要安装的nodejs就行 比如: nvm install 10.6.3

    3. NVM常用命令
    • nvm list 查看当前安装的Node.js所有版本
    • nvm install 版本号 安装指定版本的Node.js
    • nvm uninstall 版本号 卸载指定版本的Node.js
    • nvm use 版本号 选择指定版本的Node.js

    4.Global全局变量

    • __dirname: 绝对路径的文件夹
      • 打印结果: /Users/cc/Desktop/web/Web2/10-Node
    • __filename:绝对路径的文件
      • 打印结果:/Users/cc/Desktop/web/Web2/10-Node/05-js.js
    • 延迟执行 setTimeout(callback, delay[, ...args])
    • 定时器setInterval(callback, delay[, ...args])

    5. NodeJS开发中的模块

    • NodeJS采用CommonJS规范实现了模块系统
    • 在 Node.js 模块系统中,每个文件都被视为一个独立的模块
    • CommonJS规范

    CommonJS规范规定了如何定义一个模块, 如何暴露(导出)模块中的变量函数, 以及如何使用定义好的模块

    • 在CommonJS规范中一个文件就是一个模块
    • 在CommonJS规范中每个文件中的变量函数都是 私有的,对其他文件不可见的
    • 在CommonJS规范中每个文件中的变量函数必须通过exports暴露(导出)之后其它文件才可以使用
    • 在CommonJS规范中想要使用其它文件暴露的变量函数必须通过require()导入模块才可以使用
    定义一个 07-a.js模块 内容如下
    let a = 10;
    
    function sum(c,b){
    
        return c + b;
    }
    
    // exports是一个对象
    //暴露出去 一个属性变量
    exports.a = a;
    exports.fn = sum;
    
    b.js文件中导入模块
     //导入a.js模块
     let obj = require("./07-a.js");
    //打印
    console.log(obj);
    
    let res = obj.fn(10,10);
    console.log(res);
    
    

    暴露模块内部变量的方式有多种
    1.通过exports.xxx = xxx导出

    1. 通过module.exports.xxx = xxx导出
      那么上述的a.js文件可以这样写
    let name = "CC";
    
    function sum(c,b) {
    
        return c +b;
    }
    
    //暴露给外面变量/函数
    module.exports.name = name;
    module.exports.fn = sum;
    

    3.通过全局变量global暴露(不建议使用这个)

    let name = "CC";
    
    function sum(c,b) {
    
        return c +b;
    }
    
    //暴露变量给外界
    global.str = name;
    global.fn = sum;
    
    注意点

    注意: exportsmodule.exports的区别

    1.在导入变量的时候,exports不能是直接将变量赋值,这样在打印的时候的{},只能给exports对象添加一个属性变量赋值 暴露

    let name = "cc";
    
    let obj = {age:18,height:"1.70"};
    //这样暴露变量是不可以的 
    exports = name;   //打印出是一个 {} 对象
    // 必须赋值exports对象的属性
    exports.name = name;  //这样才可以
    
    1. module.exports = name; 这样赋值是可以的
    let name = "cc";
    
    let obj = {age:18,height:"1.70"};
    
    let obj1 = {name:name,info:obj};
    
    module.exports = name;
    

    原因在这里查看

    导入模块require需要注意一下几点

    1.require导入模块时可以不添加导入模块的类型后缀文件名

    1. 如果没有指定导入模块的类型, 那么会依次查找.js .json .node文件
    1. 无论是三种类型中的哪一种, 导入之后都会转换成JS对象返回给我们
    1. require可以导入"自定义模块(文件模块)"、"系统模块(核心模块)"、"第三方模块"
    • 导入自定义模块时必须指定路径
    • 导入"系统模块"和"第三方模块"是不用添加路径
      • 如果是"系统模块"直接到环境变量配置的路径中查找
      • 如果是"第三方模块"会按照module.paths数组中的路径依次查找
    6.包和包管理工具
    • 所谓的包: 就是来维护多个模块之间的关系的

    • 模块前面说过就是一个单一功能的函数

    • 包管理工具 NPM(Node Package Manager)

      • NPM不需要单独安装,只要配置好Node.js环境,就会自动安装
    6.1 NPM的使用
    • 查看全局配置 npm config list

    NPM的安装一般分为2种,全局安装 和 本地安装

    1.全局安装 (一般用于安装全局使用的工具, 存储在全局node_modules中)

    • npm install -g 包名 安装包
    • npm uninstall -g 包名 卸载包
    • npm update -g 包名 更新包 (更新失败可以直接使用install)
    1. 本地安装 (一般用于安装当前项目使用的包, 存储在当前项目node_modules中)
    • npm install 包名
    • npm uninstall 包名
    • npm update 包名
    6.2 初始化本地文件

    npm init -> 初始化package.json文件
    npm init -y -> 初始化package.json文件

    npm install 包名 --save
    npm install 包名 --save-dev

    包描述文件 package.json, 定义了当前项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。
    npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境
    注意点:package.json文件中, 不能加入任何注释

    当安装好包的时候,比如Jquery的时候,在package.json 和 package-lock.json文件中会生成
    - dependencies:生产环境包的依赖,一个关联数组,由包的名称和版本号组成
    - devDependencies:开发环境包的依赖,一个关联数组,由包的名称和版本号组成

    1.将项目拷贝给其它人, 或者发布的时候, 我们不会将node_modules也给别人, 因为太大
    2.因为有的包可能只在开发阶段需要, 但是在上线阶段不需要, 所以需要分开指定

    npm i 所有的包都会被安装
    npm i --production 只会安装dependencies中的包
    npm i --development 只会安装devDependencies中的包

    关于 package.json文件的说明解释

     {
             //项目的名称
              "name": "11-npm",
              //当前的版本
              "version": "1.0.0",
              //描述
              "description": "",
              //入口文件
              "main": "index.js",
              //实现脚本语言
              "scripts": {
                "test": "echo \"Error: no test specified\" && exit 1"
              },
               //项目的关键字
              "keywords": [],
              //作者
              "author": "",
              //开元协议
              "license": "ISC"
            }
    

    相关文章

      网友评论

        本文标题:Node.js的学习总结(一)

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