文章目录
  1. 1. 实战简介
    1. 1.1. 如何使用
    2. 1.2. REPL
    3. 1.3. 其他
  2. 2. nodeJS 和 javascript
    1. 2.1. 相似之处
    2. 2.2. 主要区别
      1. 2.2.1. nodeJS 进程相关信息
      2. 2.2.2. 全局对象
      3. 2.2.3. 导入和导出模块
  3. 3. nodeJS
    1. 3.1. 核心模块
    2. 3.2. 非核心模块
    3. 3.3. npm
    4. 3.4. 更多
      1. 3.4.1. 浏览器 API 工具
      2. 3.4.2. 创建 web 应用
      3. 3.4.3. 读写文件
      4. 3.4.4. 调试
  4. 4. 参考

本篇算是笔记,零散地记录下自己觉得有用的小东东。

实战简介

如何使用

  1. 管理员 node.js command prompt
  2. cmd.exe 下直接执行也可以
    node -v
    npm -v


REPL

REPL,Read-Eval-Print Loop
node 有自己的虚拟运行环境,输入 node 并回车,就会打开控制台,当提示符从 $(window下依然是>)变成 >(不同 shell 可能会有不同的提示符)就可以输入你想执行的任何 js 或 nodejs 代码了。此处,类似于 Chrome 的开发工具中的控制台。ctrl+c 退出

其他

可以用 node 加载直接运行一个 js 文件( node_ppp 目录下有一个 add.js 文件)

也可以用 node 直接执行js脚本

nodeJS 和 javascript

相似之处

nodeJS 是建立在 Google chrome 的 V8 引擎和它的 ECMAScript 之上。所以,它的语法和前端的 JS 是非常类似的。它和浏览器中对 ECMAScript 的实现有一些比较细微的差别,但总体而言,两者没啥区别。

nodeJS 和 javascrip 都有的:

  1. 自动类型转换:
  2. JS 中的基本类型:
    String Number Boolean
    Undefined Null
    RegExp
    Object

此外,Buffer - 是 nodeJS 特殊的数据类型
buffer,做数据存储非常有效,eg. 从文件系统中读取内容 or 接受网络包内容等

主要区别

虽然是同一个标准下的模型,它们之间还是有些主要区别的。

nodeJS 进程相关信息

每一个运行中的 nodeJS 脚本本质上都是一个进程。比如:
输出当前机器上所有运行的 nodeJS 程序,也可以获取同一个进程的相关的有用信息

pid: process id 进程 id
cwd: current work direction 当前工作目录

全局对象

  1. JS 的全局是 window,当没写 var 时,变量会默认为全局变量
  2. nodeJS 使用了不同的设计方法,它默认所有的东西都是本地的
    某种意义上:window = global(全局对象) + process(进程)
    当然,用来展现 web 页面中的 DOM 中的 document对象在 nodeJS 中不会存在的啦
    nodeJS 中还有:module.exports 和 exports

导入和导出模块

JS 中没有模块的概念(当然是 ES6 之前),但是 nodeJS 是直接支持模块的( nodeJS 是 CommonJS 规范的实现)。
模块相关的概念,详见博客的 模块化编程的系列介绍

nodeJS

核心模块

nodeJS 的核心模块,是轻量的,它被有意地控制在很小的体积。主要有:

  1. http: nodeJS 从 HTTP 服务器获取相应内容
  2. util:模块提供了 调试用的工具方法
  3. querystring:模块提供了 处理查询字符串的工具
  4. url:模块提供了 URL 的相关处理和转化
  5. fs:模块主要处理文件系统相关的操作,比如读写文件等。所有的方法都有同步和异步两种操作

使用核心模块不需要安装,只要需要的时候直接 require() 进来就可以了。

非核心模块

非核心的模块(其他的模块可以通过 npm 来注册安装)
如何编写自己的模块:
非常重要的工具,如:
(1)Crypto:包含随机生成器、MD5、HMAC-SHA1 和其他一些算法
(2)Path:处理系统路径(不同的文件分隔符)
(3)String decoder:将 buffer 或字符串类型数据解码

npm

npm 最大优势在于:它的所有依赖都是本地模式安装
作为初学者,我们只需要知道,用以下两个来对模块进行本地模式安装:
(1)package.json 文件
(2)node_modules 文件夹( 管理依赖啊 依赖更新啊)
安装命令是 npm install name 就可以了~~

看我们通过 npm 安装好了的模块,就在下面的文件夹中:
%appdata% npm\node_modules\

更多

浏览器 API 工具

nodeJS 中许多工具函数都来自于浏览器端 JS 的应用程序接口 (API)
eg.
Array 的方法 join() pop() slice() 等等;
Math 的方法 random();
String 的方法 substr() indexof();
还有 setInterval() setTimeout() foreach() console() 等等

创建 web 应用

nodeJS 的一个重要作用:创建 web 应用。它在网络上的繁荣发展,得益于它的异步特性和它的内置模块( net 和 http )
使用 nodeJS 的 HTTP 模块来创建一个简单的服务器。eg.省略…

执行,在浏览器中打开 http://localhost:1337
或者再终端/命令行中执行 $ curl “http:://localhost:1337”

nodeJS 应用是存储在内存中的,所以修改了源码后,必须重启进程(也就是 node)才能看到变化。
当然已经有工具实现了自动化-它们通过 fs 模块的方法监听,当文件内容发生变化时就重启服务器。eg.forever、node-dev、nodemon、supervisor。

我们都知道,ExpressJS 在默认情况下每次都会为新请求重新加载模板文件。因此,一定不要重启服务。不过我们可以通过设置 view cache 来缓存模板(更多的设置)。
$ node -help //帮助

读写文件

在 nodeJS 中读写文件:
nodeJS 的数据流:数据流-应用在处理数据的的时候还可以同时接收数据(适用于处理超大数据集合 eg.视频处理、数据库迁移)
—使用流输出二进制文件内容的基本例子
—默认情况下,nodeJS 使用 buffer 来处理流。

回调代码可以用事件的 emit 或者 promise 的方式来替代 or 直接使用异步库

调试

  1. nodeJS 的调试有以下工具:
    Core NodeJS Debugger:没有图形化用户接口的精简工具
    Node Inspector:Google Chrome开发者工具的接口
    WebStorm 和其他集成开发环境一起
  2. 核心 nodeJS 调试:
    console.log()
    debugger;//
    并且使用 $ node debug program.js //来启动调式进程
    主要的调试命令:
    (1)next, n: 单步执行
    (2)cont, c: 继续执行,直到遇到下一个断点 continue
    (3)step, s: 单步执行并进入函数
    (4)out, o: 才函数中跳出
    (5)watch(expression): 把表达式 expression 加入监视列表

参考

读书笔记-第一章:http://book.douban.com/subject/26391998/

文章目录
  1. 1. 实战简介
    1. 1.1. 如何使用
    2. 1.2. REPL
    3. 1.3. 其他
  2. 2. nodeJS 和 javascript
    1. 2.1. 相似之处
    2. 2.2. 主要区别
      1. 2.2.1. nodeJS 进程相关信息
      2. 2.2.2. 全局对象
      3. 2.2.3. 导入和导出模块
  3. 3. nodeJS
    1. 3.1. 核心模块
    2. 3.2. 非核心模块
    3. 3.3. npm
    4. 3.4. 更多
      1. 3.4.1. 浏览器 API 工具
      2. 3.4.2. 创建 web 应用
      3. 3.4.3. 读写文件
      4. 3.4.4. 调试
  4. 4. 参考