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请求参数

  • 相关阅读:
    POJ 1469 COURSES 二分图最大匹配
    POJ 1325 Machine Schedule 二分图最大匹配
    USACO Humble Numbers DP?
    SGU 194 Reactor Cooling 带容量上下限制的网络流
    POJ 3084 Panic Room 求最小割
    ZOJ 2587 Unique Attack 判断最小割是否唯一
    Poj 1815 Friendship 枚举+求最小割
    POJ 3308 Paratroopers 最小点权覆盖 求最小割
    1227. Rally Championship
    Etaoin Shrdlu
  • 原文地址:https://www.cnblogs.com/liuXiaoDi/p/12720169.html
Copyright © 2011-2022 走看看