Node
- 1.理解
Node
在应用程序中的作用,可以使用Node
搭建前端运行环境、使用Node
操作文件、操作数据库等等 - 2.掌握一种
Node
开发框架,如Express
,Express
和Koa
的区别 - 3.熟练使用
Node
提供的API
如Path
、Http
、Child Process
等并理解其实现原理 - 4.
Node
的底层运行原理、和浏览器的异同 - 5.
Node
事件驱动、非阻塞机制的实现原理node安装
node是js的解释器,运行环境。 解决了js对浏览器的依赖, 提供高性能的web服务/IO操作/事件处理。node使用是v8引擎。
优势:
- 处理大流量数据
- 适合实施交互的应用
- 完美支持对象型数据库(mongDB)
- 异步处理(大量)并发链接
依赖知识: js、es6(nodejs支持)、服务器相关知识(appach、http)、liunx
REPL(交互式解释器)
可以通过终端,输入 node 命令进入REPL运行环境(read-eval-print-loop 读取-求值-输出-循环),环境中命令提示符(默认为 > )。如果使用参数--use_strict
,则 REPL 将在严格模式下运行。特殊变量下划线(_
)表示上一个命令的返回结果。基础命令:
.break:书写一个多行函数的中途想要放弃该函数的书写或重写该函数时候,该命令可以返回到命令提示符的起点处。或者是按下两次的ctrl+c
.clear:清除REPL运行环境上下文对象中保存的所有变量与函数。
.exit:退出REPL运行环境。
.help:显示所有基础命令。
.save:REPL环境中输入的所有表达式保存到一个文件中。
.load:把文件中的所有表达式载入到REPL的环境中。
包管理器npm
NPM 常用命令
- npm —version
- npm help install
- npm install/uninstall/update package -g/-D/-S 全局/dev依赖/依赖
- npm list -g
- npm search package
- npm view/info(别名) package version/versions 本地版本/全部版本
- npm install -g cnpm —registry=https://registry.npm.taobao.org 也可映射为公司私仓
- npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人
- npm publish/unpublish
- 更多见https://www.npmjs.cn/
Package.json 属性说明
- name - 包名。
- version - 包的版本号。
- description - 包的描述。
- homepage - 包的官网 url 。
- author - 包的作者姓名。
- contributors - 包的其他贡献者姓名。
- dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
- keywords - 关键字
回调
函数调用的三种方式: 同步调用、回调(双向调用)、异步调用
异步解决程序运行阻塞问题。
阻塞
var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序执行结束!");
非阻塞(异步处理)
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err){
console.log(err.stack);
return;
}
console.log(data.toString());
});
console.log("程序执行完毕");
nodejs 模块化
概念:模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。
意义:解决文件之间的相互调用
四类模块:原生模块和3种文件模块(三类文件模块以后缀来区分)
- .js。通过fs模块同步读取js文件并编译执行。
- .node。通过C/C++进行编写的Addon。通过dlopen方法进行加载。
- .json。读取json文件,调用JSON.parse解析加载。
流程:
加载方式:
- http、fs、path等。原生模块。
- ./mod或../mod。相对路径的文件模块。
- /a/mod,绝对路径的文件模块。
- mod,非原生模块的文件模块。
模块的导入和导出, require/module.exports