课程地址
study.qiyun.360.cn/course/fest…
Node.js与JavaScript的区别
- 基于异步I/O相关接口
- 基于node_modules和require的模板依赖
- 提供C++ addon API与底层系统交互
Node.js基础
- 模块
- 内置模块:编译进Node中,例如http,fs,net,process,path等;
- 文件模块:原生模块之外的模块,和文件(夹)一一对应;
- 模块类型
- .js
- .json
- .node
- .mjs
- ……
- JS模块解析
const circle = require('./circle.js');
- 通过js.readFileSync同步拿到文件内容
- 对内容进行包装
(function(exports,require,module,__filename,__dirname){
var circle = require('./circle.js');
});
- 通过vm.runInThisContext执行
- 获取module对象的值作为模块的返回值
- 模块缓存
- 模块加载后会将缓存值存起来
- 下次加载时直接读取缓存结果,避免文件I/O和解析时间
- 导出对象缓存在Module._cache对象上
NPM
- package.json
- main
- npm scripts
- register:设置npm源,比如淘宝源
- semver version(a.b.c|大版本.中版本.小版本)
^a.b.c //接受中/小版本的更新
~a.b.c //接受小版本的更新
* //接受任意版本的更新
a.b.c //只安装这个版本的模块
Node.js开发
后台开发需要功能:
- 逻辑分层
- 路由处理
- 数据解析、校验
- 权限校验
- session、cache
- 数据库、Redis
- 安全
Koa无规范约束,不利于团队开发,中间件繁多,质量参差不齐,选择困难。
- 前端开发 vs nodejs后端开发