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(如果不显示,在终端运行一下再去浏览器打开)

posted @ 2020-07-02 20:42  里拉米苏  阅读(263)  评论(0编辑  收藏  举报