node.js 用commonjs es6用AMD reaquire.js 服务器端的node 不能用import 只是相近es6语法 不等于
自封装
控制台打印调用方法,返回的值
const circle = require('./tool/text'); // 封装路径 测试封装
module.exports = class extends Base {
async indexAction() {
console.log('圆面积:' + circle.area(4));
console.log('圆周长:' + circle.circumference(14));
}
};
封装的js 涉及异步需要用 new Promise
var x = 5;
var area = function (radius) {
return Math.PI * radius * radius;
}
var circumference = function (radius) {
return 2 * Math.PI * radius;
};
module.exports.x = x;
module.exports.area = area;
module.exports.circumference = circumference;
例子:识别身份证的封装,这里不能再用 think对象
idcard ai识别接口
const aiConfig = require('../../config/config.js');
const fs = require('fs');
let recognizeIdCard = function (image,idCardSide,options) {
return new Promise(function(resolve, reject) {
let AipOcrClient = require("baidu-aip-sdk").ocr;
// 设置APPID/AK/SK
let APP_ID = aiConfig.ai.app_id;
let API_KEY = aiConfig.ai.api_key;
let SECRET_KEY = aiConfig.ai.secret_key;
// 新建一个对象,建议只保存一个对象调用服务接口
let client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
// 带参数调用身份证识别
client.idcard(image, idCardSide, options).then(function(result) {
// console.log(JSON.stringify(result));
resolve(result)
}).catch(function(err) { // 如果发生网络错误
// console.log(err);
reject(err); // throw respErr;
});
});
}
module.exports.recognizeIdCard = recognizeIdCard;
身份证调用接口
async recognizeAction(){
let file = this.ctx.file('idImage') // 获取file的name
// 读取信息
let image = fs.readFileSync(file.path).toString("base64");
let idCardSide = "front"; // front - 身份证正面 back - 身份证背面
let options = {}; // 如果有可选参数
options["detect_direction"] = "true";
options["detect_risk"] = "false";
let data = await IdCard.recognizeIdCard(image, idCardSide, options);
if(think.isEmpty(data)){
this.body = {
code : -1
}
}else {
this.body = {
code : 0,
data:{
imageUrl:image,
idCardInfo:data
}
}
}
}
Comments