loopback小技巧分享 —— 提高注册和登陆速度
你用slc工具生成了一个新项目 你想先注册一个用户用于测试 于是你打开了StrongLoop API Explorer,找到了User下的POST /user 你花了一点时间想好了用户名和密码,并输入了常用的邮箱,并点击了确认 … 你感觉像是等待了几个世纪那么漫长,数据终于返回了 你开开心心的拿着你的用户名和密码去调用User下的POST /users/login … 此时的你内心OS应该是:“啥破框架怎么这么慢?” 如果你是一位细心的同学,并且仔细阅读了官方文档 Managing users,你应该不会有此疑惑。 解决方案如文档中所说:
npm install --save bcrypt
聪明的你此刻一定想问为啥我只是安装了bcrypt模块速度就飞起来了,这问题可算是问到点子上 我们一起来看一段源代码(位于loopback/common/models/user.js):
var bcrypt;
try {
// Try the native module first
bcrypt = require('bcrypt');
// Browserify returns an empty object
if (bcrypt && typeof bcrypt.compare !== 'function') {
bcrypt = require('bcryptjs');
}
} catch (err) {
// Fall back to pure JS impl
bcrypt = require('bcryptjs');
}
我们再看loopback的package.json中的依赖:
{
"async": "^2.0.1",
"bcryptjs": "^2.1.0",
"bluebird": "^3.1.1",
"body-parser": "^1.12.0",
"canonical-json": "0.0.4",
"debug": "^2.1.2",
"depd": "^1.0.0",
"ejs": "^2.3.1",
"express": "^4.14.0",
"inflection": "^1.6.0",
"loopback-connector-remote": "^3.0.0",
"loopback-datasource-juggler": "^3.0.0",
"isemail": "^1.2.0",
"loopback-phase": "^1.2.0",
"nodemailer": "^2.5.0",
"nodemailer-stub-transport": "^1.0.0",
"serve-favicon": "^2.2.0",
"stable": "^0.1.5",
"strong-globalize": "^2.7.0",
"strong-remoting": "^3.0.0",
"uid2": "0.0.3",
"underscore.string": "^3.0.3"
},
看到这儿相信你已经完全明白了吧,优先导入bcrypt模块,如果引入失败,替换为bcryptjs模块,loopback默认附带的只有bcryptjs哦