Javascript

Node.js-学习笔记

本文主要是介绍Node.js-学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Node概述

Node是一个基于Chrome V8引擎的JavaScript代码运行环境

Node.js 的组成:
Node.js 是由ECMAScript 以及 Node环境提供的一些附加API组成的,包括网络、路径、文件等一些更加强大的API

Node.js 基础语法

ECMAScript的所有语法在Node环境中都适用
在node环境下执行js代码: 在命令行中用[node js文件名] 即可
注意,打开js文件所在的目录,按住shift键,点击鼠标右键,选择“在此处打开powershell窗口”,可以在当前目录下打开命令行工具。

浏览器中的全局对象是window
Node环境中的全局对象是global

node.js 模块化开发

一个模块就是一个js文件,模块内部的变量、函数等外部无法访问。
模块成员导出,供其他模块使用:用exports对象
模块引入其他模块的成员:用require()方法

例:
导出a.js模块中的成员,给exports对象添加属性,或者module.exports,通常二者是同一个对象,但如果二者指向不同对象时,以module.exports为准

// a.js 
var obj = {
    name: 'zhang'
}

function add(x, y) {
    return x+y;
}
// 给exports对象添加add属性,为加法函数,供其他模块使用
exports.add = add;
// 或者使用 module.exports
module.exports.obj = obj

在b.js模块中通过require方法导入a,并使用a中的成员

var a = require('./a.js'); // 参数为a.js的文件路径,require方法返回a.js中的exports对象
var r = a.add(1,2);
console.log(r);
console.log(a.obj.name);

系统模块

系统模块就是node运行环境所提供的API,比如用于文件相关操作的fs模块,处理路径的path模块

fs模块
  • 导入fs模块:const fs = require(‘fs’);
  • 文件读取:fs.readFile(‘文件路径’[,文件编码方式],function(err, doc) {})
  • 写入文件:fs.writeFile(‘文件路径’ , ‘写入的内容’ , function(err) {});
path模块
  • 导入path模块:const path = require(‘path’);
  • 路径拼接方法:path.join(‘路径’,‘路径’,…)
    用join拼接路径是因为不同操作系统文件路径的分隔符不一样,windows系统有\ / ,linux 是/
  • 绝对路径和相对路径
    注意,相对路径是相对于命令行当前的路径
    所以,一般使用绝对路径,可以使用_dirname获取当前文件所在目录的绝对路径
var path = require("path");
console.log(__dirname);
path.join(__dirname, "文件名");

第三方模块

别人写好的,具有特定功能的,可供我们直接使用的模块。
由多个文件组成的文件夹称为包

第三方模块有两种形式:

  • js库文件形式,提供实现具体功能的API
  • 以命令行工具形式存在,辅助项目开发

第三方模块的安装与卸载:

  • npm:node package manager node的第三方模块管理工具
  • npm install 模块名 [-g] 加上-g表示全局安装
  • npm uninstall 模块名 卸载模块
  • 第三方模块的存储和分发仓库:npmjs.com
  • 一般命令行工具用全局安装,库文件用本地安装

nrm模块

是npm下载地址切换工具,npm默认下载地址是国外的,国内下载速度慢。
nrm的使用:

  • npm install nrm -g 进行全局安装
  • nrm ls 查询可用下载地址列表
  • nrm use 下载地址名 切换下载地址

nodemon模块

nodemon是一个命令行工具,辅助项目开发。
用npm install nodemon -g 下载安装,用nodemon命令代替node执行js文件,可以在文件修改时不必重新执行。

Gulp

Gulp是基于node开发的前端构建工具,将机械化的操作编写成任务,只需要在命令行中输入命令执行相应的任务就可以代替复杂的手工操作。
比如:html,js,css文件压缩,公共文件抽离,CS6,less等语法转换,修改文件浏览器自动刷新等。

gulp的使用:

  • npm install gulp 下载gulp库文件,本地下载
  • 重构项目文件,src文件夹放源代码,dist文件夹放处理后的文件,项目根目录下新建gulpfile.js文件
  • 在gulpfile.js文件中编写任务
  • 安装执行gulp任务的命令行工具:npm install gulp-cli -g
  • 命令行工具中执行gulp任务

gulp任务编写:
在这里插入图片描述
gulp插件:
在这里插入图片描述
gulp插件的使用:

  • npm下载插件
  • 在gulpfile.js中引入插件
  • 调用插件
    在这里插入图片描述
    在gulpfile.js文件最后构建一个default任务,执行这个任务可以让编写的所有任务依次执行:
gulp.task('default', ['task1','task2',....]);

package.json文件

在项目中安装gulp会生成一个node_modules文件夹,存在文件过多过碎,项目拷贝的时候速度会很慢,
复杂的依赖关系需要被记录,确保模块版本和当前一致,否则项目可能无法运行。
解决方法:传输项目时不传输node_modules文件夹,用package.json文件记录项目的描述信息,只传递该文件即可,拿到项目文件夹时,在项目根目录下打开命令行,输入npm install命令,就会根据package.json文件中的dependencies中的依赖库下载需要的库。

在项目根目录下打开命令行,用npm init -y命令可以快速生成package.json文件。

项目依赖和开发依赖:
在package.json文件中记录了两种依赖:

  1. 项目依赖dependencies:项目在线上运行时所需要的第三方模块,即通过npm install 模块名 安装的模块
  2. 开发依赖devDependencies:项目在线下开发时依赖的第三方模块,线上运行不需要,即通过npm install 模块名 --save–dev 安装的模块

在拿到项目时,在根目录下打开命令行,输入npm install命令可以安装全部的依赖;输入npm install --production命令,可以仅下载项目依赖
命令别名
在package.json文件中有scripts属性,记录了命令的别名。
比如:给nodemon index.js 命令 起一个别名build
在这里插入图片描述
则执行index.js 只需输入 npm run build即可

package-lock.json文件作用

在这里插入图片描述

node模块加载机制

  • require(’./find.js’) 如果进入模块的路径完整,后缀完整,直接根据路径可以准确找到find.js文件
  • require(’./find’) 引入模块时路径完整,后缀省略,这时根据一定的查找规则去查找要引入的模块:
  1. 查找当前目录下有没有find.js文件,有就引入
  2. 若没有,查找当前目录下有没有find文件夹,查找find文件夹有没有index.js文件,有就引入
  3. 若没有,查看find文件夹的package.json文件中的main选项中的入口文件,找到就引入
  4. 若没有找到,模块引入失败,报错
  • require(‘find’) 引入模块时既没有路径也没有后缀,模块查找规则如下:
  1. 将find先当成是系统模块,如果是则引入
  2. 如果不是系统模块,则查找node_modules文件夹,看有没有find.js文件,有就引入
  3. 若没有,查找有没有find文件夹,查看find文件夹有没有index.js文件,有就引入
  4. 若没有,查找find文件夹的package.json文件的main中的入口文件,找到main就引入
  5. 否则,模块引入失败,报错
这篇关于Node.js-学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!