zoukankan      html  css  js  c++  java
  • node基础知识-说说对node的理解

    一.说说你对node的理解

    从定义+特点+作用来说对node的理解

    定义:node是基于Chrmo v8引擎的JavaScript运行环境;

    特点:具有事件驱动,非阻塞I/O模型,高并发和轻量级,单线程,单进程特点;

    事件驱动:

    非阻塞I/O:在执行I/O操作的时候,不会影响程序执行其他内容,这得益于node的事件循环机制.下面的代码执行时会先打印1,在输出2!,这就是非阻塞IO的一个例子

    var fs = require("fs");
    fs.readFile("./testfile", "utf8", function(error, file) {  
         if (error) throw error;  
         console.log("2!");
    });
    console.log("1");

    作用:执行js并不受浏览器安全级别的限制(跨域),可以操作系统级别的api:如文件读写,进程管理,网络通信等

    二.对chrome v8引擎的理解

    1.v8是谷歌开源的高性能JavaScript引擎的名称,谷歌在浏览页面时由v8负责js的处理并执行

    2.v8引擎提供了JavaScript的运行环境,dom和其他web api则由浏览器来提供.

    3.v8引擎独立于托管它的浏览器,基于这个关键特性 V8 于 2009 年被选为为 Node.js 提供支持的引擎

    4.底层是基于c++开发的,既能独立运行,又可以嵌入c++应用中

    5.经过不断的改进v8引擎具有高性能和跨平台的特性,且可运行于 Mac、Windows、Linux 和其他一些系统

    6.v8使用了JIT编译出即时机器码,能极大提高js编译速度

    7.借鉴了java vm的垃圾回收机制,能精准回收垃圾

    三.node规范

    nodejs遵循commonjs规范

    对于nodejs来说,每一个文件都是一个模块,模块内的成员私有

    每个文件都有一个module,代表当前模块;每个模块都有exports属性,代表对外提供的接口.module.exports={...}

    使用require来加载模块,加载的时候会去执行被加载模块内的代码,结果返回加载模块的exports对象

    模块的加载顺序按照在js中出现的顺序

    模块可以多次加载,但是第一次加载完成后,就会将结果缓存,之后每次使用都是从缓存中读取结果(一个模块多次require,只有第一次会执行)

    四.require的加载过程

    require在加载模块时,会先去module.cache缓存中寻找是否有缓存

    没有缓存的时候,创建一个新的module实例,把实例存储在缓存中;

    用module.load()去加载指定模块

    一旦加载/解析过程中出现异常就删除缓存中该模块

    加载成功后返回该模块的module.exports对象

    五.中间层

    理解node的中间层,java后台有多个接口,我们通过node中间层把多个接口合并为一个接口

    六.中间件

    内置中间件

    在node官网上的基本上都是内置中间件,所谓的内置中间件就是已经在node环境中存在的中间件,引用时直接require中间件名字

    querystring//编码,解码,解析参数等

    path//路径方面

    Error//错误

    http,https//请求

    url//处理路径

    fs//文件系统

    第三方中间件

    需要下载的中间件

    http-proxy-middleware//跨域

    cheerio//解析html,可以用于爬虫

    bodyParser//用于express获取post请求参数

  • 相关阅读:
    wepy框架构建小程序(1)
    百度地图2
    百度地图1
    VS Code 用户自定义代码片段(React)
    JS MarcoTasks MicroTasks
    JS位运算和遍历
    VueX源码分析(5)
    VueX源码分析(4)
    tensorflow 自带的实现函数翻转的函数
    namedtuple
  • 原文地址:https://www.cnblogs.com/liuXiaoDi/p/12720169.html
Copyright © 2011-2022 走看看