• NODE


    NODE

    node定义

    • Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

    • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

    • 这个是 node 官网的解释

      • 其实 node 就是用 javascript 语言写 后端

      • 也就是说,我们的 javascript 有了 node 以后,不光是一个前端语言,也是一个后端语言

      • node其实一个是一个软件(解析js) :独立安装的 v8解释引擎

    • 前端 javascript

      • 三大核心

        • ECMAScript

        • DOM

        • BOM

      • 操作内容

        • 浏览器

        • 解决兼容问题

    • 后端 javascript (node)

      • 核心

        • ECMAScript

      • 操作内容

        • 后端代码

        • 数据库

    • 也就是说,node 我们不需要解决兼容问题,不需要 DOM 和 BOM,只关注业务逻辑就可以了

    下载 node 安装包

    • 我们的电脑是没有自带 node 环境的

    • 需要我们手动下载一个 node 安装包,安装 node 环境

    • 有了 node 环境以后,我们就可以运行 node 了

    • 下载方式

      • 直接到 node官网 或者 node中文网

      • 点击下载就可以,默认装在c盘就行,一直点击下一步就好

    检测安装环境

    • 检测安装是否成功

    • 我们打开运行窗口 (win + r)

      • 就是我们键盘下面那个 windows 的窗口键 + r 键

    • 写入 cmd 然后按下回车,来到我们的命令行

    • 然后在命令行写入一个指令

      $ node -v  // mac用$ 
    • 然后按下回车,会得到一个 node 的版本号

    • 能看到版本号表示 node 环境安装成功

    • 至此,我们的 node 环境就有了

    • 我们就可以再电脑里面运行我们的 node 了

    直接在终端中书写 js 代码

    • 打开命令行

    • 书写指令

      $ node  //mac  用$
    • 直接按下回车,会看到 光标在闪烁,我们就进入了 node 代码编写环境

    • 直接书写代码就可以了

    在命令行运行一个 js 文件

    • 先新建一个文件夹

    • 在里面写一个 js 文件

      • 我这里默认在 桌面/demo文件夹/idnex.js

    • 在文件里面写一些 js 代码

      // index.js
      console.log('hello node')
    • 打开命令行,要让命令行的路径和你存放这个要执行的 js 文件的目录一致

       

    • 切换好以后,我们直接使用指令来运行我们准备好的 js 文件

       $ node index.js // mac $ 
    • 然后就会在命令行把我们刚才写的 js 文件运行了

    • 就会在控制台输出 hello node

       

    • 现在我们就已经运行了一段 js 代码在命令行了

    • 这也就解释了一下最开始官网说的那句话

      • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

        • 我们的 node 安装完毕以后,就在命令行提供了一个基于 Chrome V8 引擎的运行环境

        • 在这个环境中运行 javascript 代码

        • 这个就是 node.js

    常用的命令操作

    • cd.. 返回上一层

    • d: 切换盘符

    • mkdir 目录名 创建目录

    • cls 清屏

    • ctrl+c 退出程序

    • exit 退出窗口

    NODE 的导入导出

    • node 的开发是模块化开发

    • 每一个 js 文件都是一个独立的模块

    • 都有自己独立的作用域

    • 我们可以通过 导入导出 的方式把多个 js 文件合并在一起;可以将 不同的 代码 放到不同的 js文件中,在需要 使用js文件中引入

    导入
            提供 接口(提供给 其他文件  可以引入 接口)
           提供多个接口
           a.js
               exports.a= 10;
               exports.b=function(){};
               exports.c = {}
       引入:
           var m1 = require("./a")
           var { a,b } = require("./a")  //解构赋值
           提供一个接口 (一个文件只能有一个module.exports)
           a.js
               module.exports = function(){
                   console.log(111)
              }

     

    • 在 node 里面,我们使用 require 来导入一个文件

    • // 我是 index.js 文件
      require('./a.js')

      console.log('我是 index.js 文件')
    • 当我在命令行运行 index.js 文件的时候

      • 首先会把 a.js 文件运行一遍

      • 然后再继续执行我自己文件内部的代码

    • 也可以在导入的时候接受另一个文件导出的内容

      // a 接受到的内容就是 a.js 这个文件导出的内容
      // 如果 a.js 文件中什么都没有导出,那么接受到的就是一个 空对象
      const a = require('./a.js')
    导出
    • 我们在写一个 js 文件的时候,可以向外导出一些内容

    • 将来在这个文件被导入的时候,就可以接受到一些内容

      // 我是 a.js

      // 每一个 js 文件都会有一个对象叫做 module
      // 在 module 里面有一个成员,叫做 exports
      // 每一个 js 文件会默认把 module.exports 导出
      // 也就是说,我们向 module.exports 中添加什么内容
      // 那么就会导出什么内容

      module.exports.name = 'Jack'
      module.exports.age = 18
    • 将来这个文件被导入的时候,接受到的内容就是一个对象,里面有两个成员

      // 我是 index.js

      const a = require('./a.js')

      console.log(a) // { name: 'Jack', age: 18 }

    模块化

    引入文件 在某个js中引入这个模块 被引入文件 (定义模块)

    • 在 node 的开发过程中

    • 我们是把每一个功能独立做成一个模块

    • 然后在使用 导入导出 的方式把他们关联在一起

      • 利于维护

      • 准确定位

    模块分类
    • 我们一般把模块分为三种

      1. 内置模块 (node 天生就带有的模块,系统模块)

      2. 第三方模块 (从网上下载的别人写好的模块,npm安装)

        以上两种模块,可以不写目录名 直接写模块名

      3. 自定义模块 (我们自己写的文件,即使在同一目录也要加路径 ./ 否则会解析为 系统模块或者 第三方模块)

    NODE 常用的内置模块

    • 刚才是我们自己写的模块

    • 现在我们来聊聊常见的内置模块

    FS 模块 (filesystem)
    • fs 是 node 的一个内置模块

    • 专门用来操作文件的

    • 使用的时候直接导入就可以使用了

      const fs = require('fs')

      // 接下来就可以使用 fs 这个变量去操作文件了
    异步读取文件内容
    • 异步的读取某一个文件内的内容

      const fs = require('fs')

      // 因为是异步读取,所以要在回调函数里面获取结果
      fs.readFile('./text.txt', 'utf8', function (err, data) {
         // err 表示读取的时候出现的错误
         // data 表示读取到的内容,如果出现错误,那么是 data 是没有内容的
      })
    同步读取文件内容
    • 同步读取某一个文件的内容

      const fs = require('fs')

      // 因为是同步读取,所以直接以返回值的形式接收读取的内容就可以
      const res = fs.readFileSync('./text.txt', 'utf8')
      // 同步读取的时候,如果出错会直接在控制台报错,并中断程序继续执行
      // 如果没有错误,res 就会得到文件中的内容
    异步写入文件
    • 异步的向某一个文件中写入内容

      const fs = require('fs')

      // 写入内容的时候,一般不会出现错误
      // 因为如果没有这个文件的话,会创建一个这个文件在向里面写入内容
      // 所以回调函数一般没什么用处,只不过是在写入文件结束后做些事情而已
      // 虽然没有用处,但是必须要写
      fs.writeFile('./text.txt', '我是要写入的内容', function () {
         console.log('写入完成')
      })
    同步写入文件
    • 同步的向某一个文件内写入内容

      const fs = require('fs')

      // 因为是写入文件
      // 没有返回值,因为一般都会写入成功
      fs.writeFileSync('./text.txt', '我是要写入的内容')

    HTTP 模块

    • 因为 node 是一个服务端语言

    • 所以 node 一定也可以开启一个服务器,开启一个服务

    • http 这个模块就是专门用来开启服务,并且接受请求,返回响应的

    • http 也是一个内置模块,直接导入使用就行

      const http = require('http')

      // 接下来就可以使用 http 这个模块去开启服务了
    创建一个服务
    • 要开启先要创建一个服务

      const http = require('http')

      // 创建一个服务
      // 这个服务默认监听 http 协议
      // 这个服务默认监听 localhost 域名
      // 返回值就是这个服务
      const server = http.createServer(function (request, response) {
         // 前端发来的每一个请求都会触发这个函数
         // request 包含着所有的请求信息
         // response 是所有的响应信息
      })
    监听一个端口
    • 确定这个服务监听哪一个端口

      const http = require('http')

      // 创建一个服务
      const server = http.createServer(function (request, response) {
         // 前端发来的每一个请求都会触发这个函数
      })

      server.listen(8080, function () {
         // 这个函数会在服务开启成功以后执行
         console.log('listening on port 8080')
      })
    给出一个响应
    • 简单给出一个响应

      const http = require('http')

      // 创建一个服务
      const server = http.createServer(function (request, response) {
         // 前端发来的每一个请求都会触发这个函数
         // 接受到请求以后给出一个响应
         response.end('hello world')
      })

      server.listen(8080, function () {
         // 这个函数会在服务开启成功以后执行
         console.log('lintening on port 8080')
      })
    • 此时,打开浏览器

    • 地址栏输入 localhost:8080

    • 浏览器就会响应文字 hello world(如果不显示,在终端运行一下再去浏览器打开)

  • 相关阅读:
    使用jxl.jar操作Excel
    ThreadLocal学习
    ArrayList与Vector、HashMap与HashTable
    String, StringBuffer, StringBuilder比较
    ArrayList与LinkedList实现比较
    Java文件备份类
    Maven安装与更新
    Eclipse安装反编译工具JadClipse
    Linux关闭防火墙
    Hadoop简介
  • 原文地址:https://www.cnblogs.com/lilamisu/p/13226992.html
Copyright © 2020-2023  润新知