node不完全路径

工具及平台

  • express
    • 默认不处理body中的信息,通常借助body-parser中间件,若用则在req.body
    • req.query http的url中的查询字符?a=b&c=d组成的对象
    • req.send(body?) 返回一个响应对象,可选参数为响应体
  • utility
    • 一些常用的工具函数,字符串,数组,加解密,日期,对象,json,web,函数,polyfill
  • superagent
    • 小型的渐进式客户端和Node.js HTTP请求库,具有许多高级HTTP客户端功能
    • 支持链式调用
      • request.get().end(cb)
  • cheerio
    • 快速,灵活和精简的核心jQuery实现,专为服务器而设计,页面解析
    • 常用方法
      • cheerio.load()
  • eventproxy 控制并发
    • 适合前后端,能用于浏览器和Node.js
    • 将串行等待变成并行等待,提升多异步协作场景下的执行效率
    • 异步协作场景
      • 多类型异步协作

      • 重复异步协作 ep.after(eventname,times,cb),同一事件的多个监听器可合并,但触发还得循环

            var ep = new EventProxy();
            // 将handle注册到N次相同事件触发上
            ep.after('got_file', files.length, function (list) {
            // 在所有文件的异步执行结束后将被执行
            // 所有文件的内容都存在list数组中
            });
            for (var i = 0; i < files.length; i++) {
            fs.readFile(files[i], 'utf-8', function (err, content) {
                // 触发结果事件
                ep.emit('got_file', content);
            });
            }
        
      • 持续异步协作

  • url
    • url.resolve(from, to)
      • 以一种 Web 浏览器解析超链接的方式把一个目标 URL 解析成相对于一个基础 URL
      • url.resolve('/one/two/three', 'four'); // '/one/two/four'
  • async
    • 控制并发连接数,支持在浏览器端使用
    • mapLimit(arr, limit, iterator, callback)
    • queue(worker,concurrecy)
  • mocha 前后端通知测试框架
    • describe() 描述测试的主体
    • it() 描述具体的case的内容
    • 命令mocha
  • should,expect 断言库
    • should.js在js的Object基类上注入了一个#should属性
  • istanbul 测试率覆盖工具
    • nyc 一个istanbul命令行接口
    • 结合mocha命令 nyc mocha
  • chai
    • BDD/TDD针对nodejs和浏览器的断言库
  • mocha-phantomjs
    • 用命令行在phantomjs内运行mocha,进行浏览器测试
    • mocha-phantomjs index.html --ssl-protocol=any --ignore-ssl-errors=true
    • phanatomjs 几乎可以调用所有的浏览器方法
  • supertest
    • supertest 是 superagent孪生库,集成测试,api
    • 边界条件测试,异步测试通常接受函数参数
  • nodemon
    • 简易监控nodejs开发库,不需要每次启动服务
  • benchmark
    • 性能测试库,一般是压测,重复性,测试程序性能
  • heroku
    • 支持多种编程语言的云平台
  • travis
    • 持续集成平台,可以同一套代码自动跑多平台多版本语言测试
  • mongoose
    • ODM mongodb面向文档映射数据库操作模块
  • q
    • 使用promise库,支持CommJS/Promises

原理

  • async VS eventpoxy
    • 并发连接数控制
    • 需要多个源(一般是小于10个)汇总数据时,用eventproxy
    • 需要用到队列,需要控制并发数,偏向函数式编程,使用async
    • async的本质是一个流程控制
  • should 断言库
    • 在js的原型对象Object 基类上注入了一个should属性
  • 测试驱动开发
    1. 将达到目的都描述清楚
    2. 让现有的程序跑不过case
    3. 修补case,让case通过
  • cookie持久化测试两种方案
    • 在supertest中,可以通过 var agent = suppertest.agent(app)可以一路把cookie保存下来
    • 在发起请求时调用 .set('Cookie','a cookie string')形式
  • js闭包
    • 使子函数可以访问定义在父层函数中的变量
    • 由于返回的函数在其中引用了父层函数的值,父函数的引用计数被+1
    • 当返回函数不被垃圾回收时,则父函数也会一直存在
  • js中this总指向调用该函数的对象
    • 有对象就指向调用对象
    • 没调用对象就指向全局对象
    • 用new构造就指向新对象,构造器中的this指向新对象
    • 通过apply或call或bind来改变this的所指

Note

  • 模块导出变量,通常是模块的入口点
  • nodejs允许同一事件注册同N次监听器
  • nodejs命令行进程process
    • process.argv[2]
  • npm run所执行的脚本命令是从局部安装的命令开始,然后再去找全局
  • js中经常使用typeof进行类型检查
  • 前端测试流程
    1. 安装mocha命令行工具
    2. 生成脚手架 mocha init .
  • js函数
    • js中function对象是有长度的,它的长度是由它的参数决定
  • js正则
    • 对于四种常用零宽断言,js只支持零宽正预测先行断言和零宽负预测先行断言
    • js正则允许表达式后跟以下三个flag
      • i 不区分大小写
      • g 全局匹配,即匹配多个
      • m ^和$可以匹配每一行的开头,多行匹配
        • \A 字符串开头(类似^,但不受处理多行选项的影响)
        • \Z 字符结尾或行尾(不受处理多行选项的影响)
        • \z 字符串结尾(类似$,但不受多行选项的影响)
      • .不能匹配到\n
      • 原子[\s\S]能匹配包括\n在内的所有字符
  • 异步执行更类似于万恶的goto语句
  • mongoDB
    • 表与表之间是没有联系的,也无法支持事务,用来存储非临时性数据
    • 用mongodb考量:表 join 到底要不要,事务支持到底要不要。
    • 接入Mongodb的模块,使用Mongoose能简化我们对数据库的访问,它通常是nodejs的标配
    • 同laravel的orm一样,mogoose的ODM也会将定义的表名,变成复数的表名进行存储
  • cookie
    • secure值为true时,cookie在http中是无效的,在https中才有效
    • httpOnly为true,浏览器不允许脚本操作document.cookie来更改cookie
    • path 表示cookie影响到的路径,匹配该路径才发送这个cookie
  • session
    • 可存在内存,cookie本身,redis或memcached等缓存,数据库中。存数据库中查询效率最低
    • 对express-session 默认使用内存来存储session
    • session存储在内存中不方便进程间共享,通常使用redis缓存存储session
      • 使用redis作为缓存,通常使用connect-redis模块得到redis连接实例,后在session中设置存储方式为该实例
  • signedCookie
    • 在用户的cookie中存session data,为保证不被更改,用信息摘要算法签名,做个sha1
  • promise
    • promise的then方法有三个参数,前两个函数对应promise的两种状态fulfilled,rejected。第三个函数用于处理进度信息
    • then方法会返回一个promise,promise来替代回调函数的嵌套
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值