🤪🤪初学node.js(转行前端)一

78 阅读5分钟

一、Node.js简介

1. 关于JavaScript js

​ 什么是JavaScript?

  • JavaScript是一门脚本语言 应对js有初步了解
  • 一般运行在浏览器中,用来做客户端的页面交互

​ JavaScript的运行环境?

  • 一般我们说在浏览器中运行JavaScript

  • 浏览器是很复杂的一个东西

  • 只有几个大公司有能力开发

  • 准确的说,是由浏览器内核中的JS引擎运行JavaScript

  • 浏览器的功能 作用,主要有两个:

    a.请求一个HTTP地址:将一个URL地址封装成一个请求报文

    b.解析服务器返回的响应报文:渲染HTML(渲染引擎)、渲染CSS、渲染IMAGE、执行JavaScript(JS引擎)

​ 浏览器中的JavaScript可以做什么?

  • DOM操作(DOM元素的获取和更新、注册事件等)document.
  • BOM操作(页面跳转、历史记录、弹窗等)
  • ECMAScript
  • AJAX/跨域

​ 浏览器中的JavaScript不可以做什么?

  • 文件操作
  • 数据库操作
  • 获取操作系统信息

​ JavaScript只能运行在浏览器中吗?

  • 不是,只要有JS引擎就可以运行JavaScript
  • Node.js中就包含了一个JS引擎,可以运行JavaScript

2. 关于Node.js

​ Node.js(简称为Node)不是一门语言,也不是一个JavaScript框架,也没有一个叫node.js的文件(很难理解)

​ Node.js 是一个可以让JavaScript在服务器端运行的系统环境,即运行JavaScript不再依赖于浏览器(类似虚拟机)

​ Node.js 是一个基于Chrome的JS引擎(V8)所开发的软件程序,可以执行ECMAScript,但不支持DOM和BOM操作

​ Node 提供大量API工具库,使JavaScript可以完成更多功能,如IO操作、数据库操作、获取系统资源等。

3. Node.js作用

​ 开发Web应用程序

  • 开发动态网站
  • 开发提供数据的服务端API

​ 前端开发工具的基础

  • 许多前端开发工具都是基于Node平台

二、Node环境搭建

1. 安装Node

​ node官网:nodejs.org

​ node中文网:nodejs.cn

​ 直接执行软件包进行安装即可,安装完成后打开控制台(cmd),执行命令 node -v 查看安装版本即可

2. REPL环境

​ Node.js提供了一个交互式运行环境,即REPL ,在命令行窗口中,输入node命令并按下回车键,即可进入REPL运行环境

​ 在REPL运行环境中,我们可以完成:JavaScript代码的输入、解释、执行、结果输出等操作。

​ 退出REPL环境:连续按两下ctrl+c

3. 基本使用

​ 在命令行中执行.js文件: node js文件路径

​ 示例:

  • 处理HTTP请求并响应:
  var http = require('http');
  //respose 表示答应,返回给客户端
  var server =http.createServer(function(request,response){
      
  })

  • 用户登陆

三、模块化

1. 简介

​ 模块化是指将一个复杂的项目按照一定的规则拆分成一个个模块,进行组合使用,完成项目的开发

  • 模块的内部对使用者来说是透明的,在模块内部会进行成员的导出,向外暴露接口
  • 使用者在使用时加载对应的模块,并调用模块提供的功能即可
  • 方便代码的分层开发,保证每个功能模块的职能单一
  • 项目开发时会使用到许多模块,模块间可能会存在依赖关系

​ Node使用模块化的方式组织代码结构:

  • 一个模块可以是一个独立文件,也可以是一个文件夹,但都需要符合特定的要求
  • 模块中提供的数据和功能,需要进行导出才能被外部所使用

2. 定义模块并导出

2.1 文件模块

​ 独立文件模块有三种形式:

  • .js文件模块,使用js语法方式进行定义,并通过 module.exports 或者 exports 进行模块功能导出

  • .json文件模块,使用json对象定义数据,当通过require导入模块时,会自动导出定义的json数据

  • .node文件模块,使用node.js编译后的二进制文件,不能自行定义

​ 在Node.js环境中使用module.exportsexports进行模块的导出:

  • module 与 exports 都是Node.js中的全局对象

  • module对象

    Node内部提供一个Module构造函数,属性如下:

    Module {
      id: '.',  // 模块的标识符,主模块的id属性值为“.”,其他模块的id属性值为该模块文件的绝对路径
      exports: {}, // 模块的导出对象,为require加载时提供返回结果
      parent: null, // 当前模块的父模块
      filename: '', // 当前模块的文件名称和存储路径
      loaded: false, // 表示模块是否加载完成
      children: [], // 当前模块的子模块
      paths:[] // 加载模块文件的路径顺序
    }
    

    所有模块都是Module的实例,载入一个模块就是构建一个Module实例

  • exports对象

    该对象实际上就是 module.exports 对象,用来简单模块导出操作

2.2 文件夹模块

​ 文件夹模块,要求根目录下必须存在index.jspackage.json文件,即必须有入口文件

​ 关于package.json文件,格式如下:

{
  "name": "模块名",
  "version": "模块版本",
  "description": "模块描述",
  "main": "模块的入口文件",
  "scripts": {
    "命令名": "模块的执行命令"
  },
  "keywords": ["模块的关键字"],
  "author": "模块的作者",
  "license": "模块的开源协议,如:ISC、"
}

​ 在Node.js环境中,存在package.json文件的文件夹,其实是一个独立的Node项目,该文件用于定义项目的相关信息

  • 可以使用npm( node package manager ) 命令,自动生成package.json文件

    语法: npm initnpm init --yes

3. 导入模块并使用

​ 在Node.js环境中使用 require(模块路径|模块名) 进行模块的加载导入:

  • 省略后缀名时模块的查找顺序: .js ——> .json ——> .node
  • 加载模块时的查找顺序:核心模块——>第三方模块——>用户定义模块

​ 模块的分类:

  • 核心模块,在安装完Node环境后,Node环境自带的模块,可直接导入使用
  • 第三方模块,使用npm命令从外网下载并安装的模块
  • 用户定义模块,开发者通过模块定义语法自定义的模块