写在前面:
————————————————————————————————————
博主是一个前端小白,之前学过node但是当时学的比较浅吧,现在回头来把node入门的相关知识学习一下。然后10篇博客将会讲解node入门相关知识,最后会写一个node + vue 前后端分离的项目。
希望大家有什么建议可以提出,有错误也希望大家指出!
————————————————————————————————————
1.什么是nodeJS?
- NodeJs是一个基于chrome V8引擎的JavaScript 运行环境,NodeJS使用了一个事件驱动,非阻塞的IO模型,使其
轻量又高效。 - NodeJS的包管理器npm是全球最大的开源生态系统。
- NodeJS是一个可以让JavaScript脱离浏览器还能执行的平台。
2.NodeJS和JavaScript的区别?
-
NodeJS是一个可以运行JavaScript的平台,基于chrome V8引擎,并且对JavaScript语言进行了增强,使JavaScript具有
服务器语言开发的能力。 -
JavaScript是一门编程语言。
3.为什么要学习nodeJS
- 1.前后端语言统一 (JavaScript理想状态) firefox
- 2.前后端分离
- 3.前端很多开发工具都是基于NodeJS,只有会使用NodeJS,使用起来才能得心应手
- 4.社区活跃,上千个成熟模块供我们使用
4.nodeJS下载
- 网址:http://www.nodejs.cn 中文文档
可以直接选择msi 不用去配置一些环境 - 安装完成后 在cmd 运行命令 node -v 检查node版本。 如果有v12.14.1
5.DOS基本命令
- (a,b,c,d,e):切换盘符
- dir : 显示文件及其文件夹列表
- cd : 进入文件夹
cd 文件夹 -->进入指定文件夹
cd …/ -->但会上一文件夹
cd / -->返回根文件夹
exit : 退出命令行
6.nodeJs运行
- REPI 模式 Ctrl + C 退出
- node + js文件名
7.JS模块化规范
- 1.JS的模块居于共性,模块的代码都是在一个函数中。
- 2.模块定义在函数,也是局部的。
- 3.模块中包含一个模块对象。包含module(模块名),exports(导出对象)。
- 4.如果模块中需要暴露方法给外部使用,那么就执行往exports对象上面添加。
- 5.使用一个模块require()引进另外一个模块。
8.CommonJS
- commonJs是诞生比较早的,nodeJS就是使用CommonJS规范来定义模块。
9.NodeJS 模块基础
- NodeJS使用模块方式,管理和组织代码,NodeJS的所有功能都存在每个模块之中。
1.什么是模块?
- 在node.js中所有的功能都是以模块方式存在的,每一个文件就是一个模块。所有用户编写的代码都会自动封装在一个模块中。
- 如果要在一个模块中引用另外一个模块,另外一个模块就要将自己的内容暴露出来。
- node引用模块图示
- 代码演示
//require.js
//这里演示引用模块
var obj = require('./exports.js')
console.log(obj);
//exports.js
//这里演示暴露模块
var obj = {
name:'康家豪',
age:'永远18'
}
exports.obj = obj;
//运行node require
{ obj: { name: '康家豪', age: '永远18' } }
2.主模块
- 在node.js中会有一个主模块,也就是node项目的入口文件,我们通常将主模块命名为main.js/app.js/index.js。
10.NodeJS模块进阶(*)
1.nodejs的模块组成
我们应该会好奇,require,exports都是哪里来的呢?
这时候我们执行以下代码:
console.log(arguments.callee.roString());
可以得到以下结果:
function (exports, require, module, __filename, __dirname) {
console.log(arguments.callee.toString());
}
所以我们可以看到用户编写的代码都放在模块中,模块就是一个文件,u偶有用户编写的代码都自动封装在一个函数中,这个函数有五个参数:
分别是 exports, require, module, __filename, __dirname;
2.介绍nodejs的模块组成
- exports 暴露对象:可以将模块中的数据暴露给引入的文件
- require 引入模块的函数,用于在一个模块中引入另外一个模块,并且将子模块暴露的数据赋值给变量
- module 模块对象:包含了当前模块的所有信息
- __filename : 当前模块的文件名
- __dirname : 当前模块所在的路径(目录路径)
11.NodeJS模块组成细讲(*)
11.1 require函数
-
作用:在当前模块加载另外一个模块
-
模块分类:
(1)自定义模块(我们自己写的文件就是一个自定义模块) 引入自定义模块 myModule require('./myModule.js'); 注意: a:子模块没有暴露数据时,返回空对象 b: 自定义模块必须加./,因为nodeJS默认在node_modules中寻找模块。 (2)第三方模块 第三方程序员或者公司开发的模块,先安装再使用 安装可以使用npm包管理工具 npm install <模块包> 下载后项目里面直接回多有一个node_modules文件夹 引入第三方模块: const jquery = require('jquery') (3)系统模块 node.js已经开发好的功能模块,直接引入即可,不需要安装也不需要自己写。 fs http url path 引入系统模块 const fs = require('fs');
11.2使用require函数引用fs模块读取一个文件。
//新建test.txt文件
演示fs读取test文件!!!
//新建fsRead.js文件
//引入fs模块
const fs = require('fs');
fs.readFile('./test.txt',(err,data) => {
console.log(data.toString());
})
//执行node fsRead
输出:演示fs读取test文件!!!
11.3 使用require函数的注意事项
- 1.当引入的模块有语法错误时,会报错。
- 2.当引入的模块路径有问题的时候,会报路径错误。
- 3.当一个模块多次引入时,模块只执行一次。
exports将暴露的对象在第一次被引用的时候发给require引用处一次,然后再发给缓存区一次,require函数引用文件先去寻找缓存区有没有文件,如果有直接就拿到,所以多次引入一个模块,这个模块指挥执行一次。
11.4 exports函数 (ez)
- 作用: 将模块中选哟共享给其他模块的数据暴露到引用处。
- 语法:
exports.属性名 = 属性值
exports.方法名 = 函数
11.5 exports函数的注意事项(ez)
- exports是module.exports函数的引用
module.exports === exports; // true
- exports 只是module.exports的引用,不能改变指向,只能添加属性和方法。
- 之后我们暴露数据都使用module.exports
- 代码使用:
//在这里暴露数据
module.exports = {
name:'康家豪',
age:'永远18',
detail:'聪明帅气'
}
//引用模块数据
var personObj = require('./kanged');
console.log(personObj);
//执行
{ name: '康家豪', age: '永远18', detail: '聪明帅气' }
11.6 module 模块对象(ez)
- module.exports : 正真的暴露对象,exports只是对它的引用
- 查看module中的所有参数
Module {
id: '.', //模块id
path: 'C:\\Users\\86156\\Desktop\\node\\node01', //模块路径
exports: {}, //暴露对象
parent: null, //模块的父级
filename: 'C:\\Users\\86156\\Desktop\\node\\node01\\kang.js', // 模块文件名和路径
loaded: false,
children: [],
paths: [
'C:\\Users\\86156\\Desktop\\node\\node01\\node_modules',
'C:\\Users\\86156\\Desktop\\node\\node_modules',
'C:\\Users\\86156\\Desktop\\node_modules',
'C:\\Users\\86156\\node_modules',
'C:\\Users\\node_modules',
'C:\\node_modules'
]
//模块查找路径
},
12.NPM包管理工具(*)
- Npm(Node Package Manager):Node包(模块)管理工具,借助NPM,可以帮助用户管理和使用全球Node开发者提供的包了。
13.package.json(*)
-
Package.json NodeJS项目的包描述文件。
以JSON格式的形式来描述node项目默认包中的入口文件为index.js,也可以在包中新建一个package.json包描述文件,设置main属性值为模块的入口。 -
Package.json 属性说明:
+ name - 包名
+ version - 包的版本号
+ description - 包的描述
+ homepage - 包的官网
+ author - 包的作者姓名
+ contributors - 包的其他贡献者姓名
+ dependencies - 依赖包列表 -
如何创建package.json
执行命令: npm init
命令2: npm init -y 全部以yes的形式生成package.json文件
完成后项目会出现一个package.json文件,详情如下:
{
"name": "node01",
"version": "1.0.0",
"description": "package.json",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "kang",
"license": "ISC"
}
————————————————————————————————————
写在后面
- 隔壁孩子10篇博客node入门而且写了一个前后端分离项目,你怎么还在睡觉!!!(二)
+ node回调函数相关实现(promise)
+ buffer缓存区
+ fs文件模块的使用
+ path url http 模块
——————————————————————————————————