隔壁孩子10篇博客node入门而且写了一个前后端分离项目,你怎么还在睡觉!!!(一)

写在前面:
————————————————————————————————————
博主是一个前端小白,之前学过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

    扫描二维码关注公众号,回复: 10309220 查看本文章
执行命令:     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 模块
    ——————————————————————————————————
发布了85 篇原创文章 · 获赞 16 · 访问量 6082

猜你喜欢

转载自blog.csdn.net/qq_43955202/article/details/105124746