• Node学习笔记(一)


    1. node的特点:

    Node.js 不是一种独立的语言,与 PHP、Python、Perl、Ruby 的“既是语言也是平台”
    不同。Node.js 也不是一个 JavaScript 框架,不同于 CakePHP、Django、Rails。Node.js 更不
    是浏览器端的库,不能与 jQuery、ExtJS 相提并论。Node.js 是一个让 JavaScript 运行在服务
    端的开发平台

    Node.js 在执行的过程中会维护一个事件队
    列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送
    到事件队列,等待程序进程进行处理。

    Node.js 的异步机制是基于事件的,所有的磁盘 I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理。

    node实现以非阻塞的I/O事件循环机制和文件与网络I/O库为中心,一切以V8 JavaScript引擎为基础。

    采用了单线程、异步式I/O、事件驱动式的程序设计模型

       node的缺点:node无法实现桌面GUI应用。

    2.“中间件”:易于挂载和调用的模块。

    3. ejs模板的一些标签

       <%  code   %>  用于控制逻辑的不被缓存的代码

     <%=   code  %> 使用默认转义的html代码

    <%-   code  %>未转义的被缓存代码

    4.commonJS

    CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足。CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样。

    CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、二进制(binary)、控制台(console)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测试(unit testing)等部分。

    5.node 的 REPL 模式 (read eval print loop)即输入—求值—输出循环

    6.node实时刷新小技巧:

    因为 Node.js 只有在第一次引用到某部份时才会去解析脚
    本文件,以后都会直接访问内存,避免重复载入

    supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启 Node.js。
    使用方法很简单,首先使用 npm 安装 supervisor(windows):
    $ npm install -g supervisor

    如果你使用的是 Linux 或 Mac,直接键入上面的命令很可能会有权限错误。原因是 npm
    需要把 supervisor 安装到系统目录,需要管理员授权,可以使用 sudo npm install -g
    supervisor 命令来安装。
    接下来,使用 supervisor 命令启动 app.js:
    $ supervisor app.js

    6.同步式 I/O 和异步式 I/O 的特点

    同步式 I/O(阻塞式):                                         异步式 I/O(非阻塞式)

    利用多线程提供吞吐量                                           单线程即可实现高吞吐量
    通过事件片分割和线程调度利用多核CPU              通过功能划分利用多核CPU
    需要由操作系统调度多线程使用多核 CPU             可以将单进程绑定到单核 CPU
    难以充分利用 CPU 资源                                         可以充分利用 CPU 资源
    内存轨迹大,数据局部性弱                                    内存轨迹小,数据局部性强
    符合线性的编程思维                                               不符合传统编程思维

    7.模块的单次加载

    require 不会重复加载模块,也就是说无论调用多少次 require,获得的模块都是同一个

    对比: module.exports = Hello;    和   exports.Hello = Hello; 

    exports 本身仅仅是一个普通的空对象,即 {},它专门用来声明接口,本
    质上是通过它为模块闭包的内部建立了一个有限的访问接口。因为它没有任何特殊的地方,
    所以可以用其他东西来代替

  • 相关阅读:
    BOM操作
    重绘和回流
    css3动画 --- Transition
    css3动画 --- Animation
    flex布局
    读书笔记之python深入面向对象编程
    读书笔记之python面向对象编程的四大支柱
    git基础使用01
    python读取列表中的每个数据,@DDT,@Data(*data),@unpack使用
    python单元测试_读取excel表中的数据
  • 原文地址:https://www.cnblogs.com/lzcblog/p/10203537.html
Copyright © 2020-2023  润新知