Web

Node.js的学习总结(一)

2019-12-16  本文已影响0人  追逐_chase
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种安装方式

方式一
方式二 手动安装
  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常用命令

4.Global全局变量

5. NodeJS开发中的模块

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.包和包管理工具
6.1 NPM的使用

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

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

  1. 本地安装 (一般用于安装当前项目使用的包, 存储在当前项目node_modules中)
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"
        }
上一篇 下一篇

猜你喜欢

热点阅读