zoukankan      html  css  js  c++  java
  • nodejs入门

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
    1、安装nvm(Node Version Manager)是一个用来管理node版本的工具。


    REPL(Read,Eval,print,loop)环境。全局安装完成后在任一个环境中执行命令。
    接受用户输入-执行用户输入-打印执行结果到控制台-循环到下一次。
    REPL就是在cmd或者powershell中输入命令行node后就是进入REPL环境,可以运行nodejs代码了。

    VSCode编辑器:
    https://code.visualstudio.com/docs/?dv=win

    全局对象:
    global和process接受参数

    异步回调函数:
    异步操作:不知道用户什么时候操作。
    线程阻塞:setTimeout函数,产生依赖问题,如果去请求文件阻塞,下面要使用该文件。
    常见解决方式是使用异步的API:采用回调函数解决。
    回调函数在最后一个参数使用callback。
    调用回调函数时,第一个参数是err。

    非阻塞异步:
    什么是异步?打电话是同步,发短信是异步。
    Node所有的会发生阻塞的操作都是异步。
    阻塞I/O:比如cmd命令中等待input输入和打印。
    非阻塞I/O:

    day02:
    异步操作:
    Node采用Chrome V8引擎处理js脚本,V8最大特点是单线程运行,一次只能运行一个任务。
    Node肯定有阻塞,比如读写,耗费时间。Node采用回调的方式,任务不是马上执行,而是插在任务队列的尾部,等前面的任务运行完成后再执行。

    进程和线程
    进程包含线程。
    一个exe程序就是一个进程,不如qq,node,feiq.exe。一个进程中可以有多个线程。是否线程越多越好?
    线程缺点:创建线程比较麻烦;cpu只有一个,实际是cpu在快速切换。

    非阻塞I/O:
    常量const恒定不变的量。
    let用于定义局部变量,在局部作用域中。
    用let和const替代var,是ES6语法。

    事件驱动:
    Node事件队列。
    事件队列中的阻塞操作是交给内部的线程池去完成。
    Node自身在内部维护多线程。
    Node本身主线程主要就是不断的往返调度。

    Web中的单线程。
    Web中的不同的几个请求都是在Node服务器中的一个线程响应,不像其他语言,开几个线程。

    模块化的开始
    Node采用模块化结构是按照CommonJS规范。
    模块与文件是一一对应的关系,即加载一个模块,实际就是加载一个文件。
    自定义一个模块并调用。

    模块分类:文件模块;核心模块(node自带的);第三方模块;
    模块中自带的全局变量。
    __dirname获取当前模块完整目录。
    __filename获取当前文件完整路径。
    module模块对象,主要用于导出成员。
    exports映射到module.export的别名,可不用管。
    模块中自定义变量的都是局部变量,自身是一个封闭的作用于,最后将方法导出即可。

    require介绍
    require自己写一套。
    require不仅仅可以加载js文件,也可以加载json文件。
    require载入路径的几种优先级和使用方式。

    require如果不以./或/开头,则去找核心模块。

    模块的缓存(删除和实现缓存机制)。
    第一次加载模块时,会将该模块缓存起来,下次再使用时,直接用减少读写,提高速度。
    require.cache可以看缓存。
    如果写一个模块内容经常变,不想让require缓存自己写的模块,可以通过require.cache删除掉该缓存对象(不推荐);也可以通过暴露方法的方式module.exports=方法(推荐)。

    第三天
    文件操作,文件流,buffer。
    如何看API文档。
    核心模块介绍:
    path:处理路径操作。
    fs:操作系统文件。
    child_process:新建子进程。
    util:提供一系列实用小工具。
    http:提供http服务器功能。
    url:提供解析url。
    querystring:解析url中的查询字符串。
    crypto:提供加密解密功能。

    NPM:Node包管理
    https://www.npmjs.com/
    包的加载机制:require
    先在系统核心中加载(优先级最高,所以尽量包起名注意不要冲突),再到项目node_modules目录中找。
    npm不需要单独安装,在安装node时,默认安装过了。
    node附带的npm不是最新版本,最好用命令更新到最新版本:
    npm install npm -g

    npm config ls
    npm config set prefix 路径。
    npm config get prefix
    NRM
    常用NPM命令。

    文件系统操作:
    fs、path、readline、fs-extra
    path的使用详解。

    同步或异步调用。
    readfile()和readfilesync();

    Buffer缓冲区:
    除utf-8文字外,其他文件buffer。缓冲区可以方便操作二进制,大文件读取需要使用buffer操作。

    文件编码:
    第三方iconv-lite

  • 相关阅读:
    《SQL初学者指南》——第1章 关系型数据库和SQL
    《SQL初学者指南》——第1章 关系型数据库和SQL
    快讯:Oracle自治事务处理数据库发布和19c路线图
    NoReverseMatch: u'polls' is not a registered namespace
    Tomcat配置图片保存路径,图片不保存在项目路径下
    请慎用java的File#renameTo(File)方法
    sentinel monitor mymaster 10.10.17.200 6379 1 1个哨兵同意就切换
    静默错误:Oracle 数据库是如何应对和处理的 ?
    如何对Node.js默认下载路径进行修改
    “我卖一个群可以赚2万,但这个项目,死了!”
  • 原文地址:https://www.cnblogs.com/ouousan/p/12315792.html
Copyright © 2011-2022 走看看