360前端星计划——什么是Node.js

253 阅读1分钟

课程地址

study.qiyun.360.cn/course/fest…

Node.js与JavaScript的区别

  • 基于异步I/O相关接口
  • 基于node_modules和require的模板依赖
  • 提供C++ addon API与底层系统交互

Node.js基础

  1. 模块
  • 内置模块:编译进Node中,例如http,fs,net,process,path等;
  • 文件模块:原生模块之外的模块,和文件(夹)一一对应;
  1. 模块类型
  • .js
  • .json
  • .node
  • .mjs
  • ……
  1. JS模块解析
const circle = require('./circle.js');
  • 通过js.readFileSync同步拿到文件内容
  • 对内容进行包装
function(exports,require,module,__filename,__dirname){
    var circle = require('./circle.js');
});
  • 通过vm.runInThisContext执行
  • 获取module对象的值作为模块的返回值
  1. 模块缓存
  • 模块加载后会将缓存值存起来
  • 下次加载时直接读取缓存结果,避免文件I/O和解析时间
  • 导出对象缓存在Module._cache对象上

NPM

  1. package.json
  • main
  • npm scripts
  • register:设置npm源,比如淘宝源
  • semver version(a.b.c|大版本.中版本.小版本)
^a.b.c //接受中/小版本的更新
~a.b.c //接受小版本的更新
* //接受任意版本的更新
a.b.c //只安装这个版本的模块

Node.js开发

  1. Koa
    github.com/koajs/koa

后台开发需要功能:

  • 逻辑分层
  • 路由处理
  • 数据解析、校验
  • 权限校验
  • session、cache
  • 数据库、Redis
  • 安全

Koa无规范约束,不利于团队开发,中间件繁多,质量参差不齐,选择困难。

  1. 前端开发 vs nodejs后端开发