From 8735a4fe47b32bbf94406da4d6e86acc7f2c65f3 Mon Sep 17 00:00:00 2001 From: zxlzl <384542246@qq.com> Date: Sun, 2 Aug 2020 14:56:22 +0800 Subject: [PATCH 1/3] ex01 --- ex01/__tests__/index.spec.js | 11 ++++----- ex01/index.js | 46 +++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/ex01/__tests__/index.spec.js b/ex01/__tests__/index.spec.js index 3440ac4..9c8191e 100644 --- a/ex01/__tests__/index.spec.js +++ b/ex01/__tests__/index.spec.js @@ -1,7 +1,7 @@ -test('练习01 自动化生成路由配置',() => { - const {getRouter} = require('../index') - const ret = getRouter(__dirname + '/data') - expect(getRouter(__dirname + '/data')).toBe( +test("练习01 自动化生成路由配置", () => { + const { getRouter } = require("../index"); + const ret = getRouter(__dirname + "/data"); + expect(ret).toBe( ` export default new Router({ mode: 'history', @@ -17,8 +17,7 @@ export default new Router({ name: 'index', component: () => import('./views/index.vue') }, - ] })` ) -}) \ No newline at end of file +}) diff --git a/ex01/index.js b/ex01/index.js index c34c396..04d44c6 100644 --- a/ex01/index.js +++ b/ex01/index.js @@ -1,22 +1,24 @@ -const {resolve} = require('path') -const fs = require('fs') -module.exports.getRouter = (path = resolve('./')) => { - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHOSJOEEOESOEIOEAJEHOEJOSXOEIOEAJEHJXIJEHOSEOEIJHOOEXOSSOOIOSOOSOOSXOEXOJSOPPOESOSJJPPOEPOOIOEAOSHJPH -JEHJEHJEHJEHOEXOSSOEAOPJOEXOESJEHOOX -OSSOPEOEPOEEOEXOEAJEHOSOOSSOSEOOIOPJOEJOEAJEHOESOSSOPSJEHOJOOEEOPJOEAOSSOEXJPPOPX -JEHJEHJEHJEHOEOOEEOSOOSSJXPJEHJPEOSHOSXOEIOEAOEEOEXOPPJPEJPA -JEHJEHJEHJEHOOAOOIOEIOSSJXPJEHOEPOEXOEEOSJOSSOEIOEIJHOOSSOESOPOJHOJIEJISOJSJIXOOHOJPOJOJAPJPA -JEHJEHJEHJEHOEXOEEOPJOEAOSSOEIJXPJEHOOO -JPJOPXOEJOSXOEIOEAJHOOEOOOIOEPJPPOSEOSXOEJOSSJEHJXIJXAJEH -OOXOPX -JEHJEHJEHJEHOEPOOIOEAOSHJXPJEHJPEJHSJPJOPXOSEOSXOEJOSSJHOOEXOSSOEPOEJOOIOSJOSSJPPJPEJHOOPOOPJOSSJPEJPAJPEJPEJPHOPAJPEJPA -JEHJEHJEHJEHOESOOIOEOOSSJXPJEHJPEJPJOPXOSEOSXOEJOSSJHOOEXOSSOEPOEJOOIOSJOSSJPPJPEJHOOPOOPJOSSJPEJPAJPEJPEJPHOPAJPEJPA -JEHJEHJEHJEHOSJOEEOEOOEPOEEOESOSSOESOEAJXPJEHJPPJPHJEHJXIJXAJEHOSXOEOOEPOEEOEXOEAJPPJPEJHOJHSOPOOSXOSSOPSOEIJHSJPJOPXOSEOSXOEJOSSOPAJPEJPH -OPAJPA -OOXJPHJHOOSIOEEOSXOESJPPJPEJPEJPHOPA -JEHJEHJEHJEHOOE -OPAJPHOOX -// ##END## -} - +const { resolve,basename } = require("path"); +const fs = require("fs"); +module.exports.getRouter = (path = resolve("./")) => { + const fileList = fs.readdirSync(path) + let routeStr = '' + fileList.forEach(file=>{ + let name = basename(file,'.vue') + let filename = basename(file) + routeStr+=` +{ + path: '/${name}', + name: '${name}', + component: () => import('./views/${filename}') +},` + }) + const config =` +export default new Router({ + mode: 'history', + base: process.env.BASE_URL, + routes: [${routeStr} + ] +})` + return config +}; \ No newline at end of file From 8225ce86b1d41a4f0224af642e4d6566660c3168 Mon Sep 17 00:00:00 2001 From: zxlzl <384542246@qq.com> Date: Sun, 2 Aug 2020 18:50:47 +0800 Subject: [PATCH 2/3] left exs --- ex01/index.js | 2 +- ex02/index.js | 32 ++++++++++---------- ex03/index.js | 19 ++++++------ ex04/__tests__/index.spec.js | 58 +++++++++++++++++++----------------- ex04/index.js | 35 ++++------------------ ex05/index.js | 26 +++++++--------- ex06/__tests__/index.spec.js | 1 - ex06/index.js | 7 ++--- ex07/index.js | 9 ++---- ex09/__tests__/index.spec.js | 3 -- ex09/index.js | 29 ++++++++---------- tools/index.js | 2 +- 12 files changed, 89 insertions(+), 134 deletions(-) diff --git a/ex01/index.js b/ex01/index.js index 04d44c6..aee8961 100644 --- a/ex01/index.js +++ b/ex01/index.js @@ -21,4 +21,4 @@ export default new Router({ ] })` return config -}; \ No newline at end of file +}; diff --git a/ex02/index.js b/ex02/index.js index d19e6ed..559d009 100644 --- a/ex02/index.js +++ b/ex02/index.js @@ -1,18 +1,16 @@ -module.exports.compose = middlewares => { - return function () { - return dispatch(0) - function dispatch(i) { - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEJOSSOEAJEHOSEOESJEHJXIJEHOEOOSXOSOOSOOEJOSSOPSOOIOEXOSSOEIOOOOSXOOE -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOSXOSEJEHJPPJEXOSEOESJPHJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEAOPJOEXOESJEHJAAOEXOEEOEOOSXOEIOSSJHOOEXOSSOEIOEEOEJOPOOSSJPPJPH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOPA -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEAOPJOEXOESJEHJAAOEXOEEOEOOSXOEIOSSJHOOEXOSSOEIOEEOEJOPOOSSJPP -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOSEOESJPPOSEOPJOESOSJOEAOSXOEEOESJEHOESOSSOPEOEAJPPJPHJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEAOPJOEXOESJEHOSOOSXOEIOEPOOIOEAOSJOSHJPPOSXJEHJPIJEHJHPJPH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOPAJPH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJPH - // ##END## - } +module.exports.compose = (middlewares) => { + return function () { + return dispatch(0); + function dispatch(i) { + let fn = middlewares[i]; + if (!fn) { + return Promise.resolve(); + } + return Promise.resolve( + fn(function next() { + return dispatch(i + 1); + }) + ); } -} + }; +}; diff --git a/ex03/index.js b/ex03/index.js index 533008c..c8b6fc6 100644 --- a/ex03/index.js +++ b/ex03/index.js @@ -4,15 +4,14 @@ module.exports.parser = path => { let reqData = []; let size = 0; return new Promise(resolve => { - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOOIOSOOJSOEAOEXOSSOOIOEOJHOOEEOESJPPJPEOSOOOIOEAOOIJPEJPAJEHOSOOOIOEAOOIJEHJXIJXAJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEHJIHOOIOEAOOIJHOOEPOPJOEIOSHJPPOSOOOIOEAOOIJPHJXH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEIOSXOPHOSSJEHJPIJXIJEHOSOOOIOEAOOIJHOOEJOSSOESOSPOEAOSHJXH -JEHJEHJEHJEHJEHJEHJEHJEHOPAJPHJXH -JEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOOIOSOOJSOEAOEXOSSOOIOEOJHOOEEOESJPPJPEOSSOESOSOJPEJPAJEHOSEOPJOESOSJOEAOSXOEEOESJEHJPPJPHJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOSJOEEOESOEIOEAJEHOSOOOIOEAOOIJEHJXIJEHJIEOPJOSEOSEOSSOEXJHOOSJOEEOESOSJOOIOEAJPPOEXOSSOEHJIHOOIOEAOOIJPAJEHOEIOSXOPHOSSJPHJXH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEIOEEOEJOPOOSSJPPJASOJSJAIJAXJHOOEPOOIOEXOEIOSSJPPOSOOOIOEAOOIJHOOEAOEEOJSOEAOEXOSXOESOSPJPPJPHJPHJPH -JEHJEHJEHJEHJEHJEHJEHJEHOPAJPHJXH - // ##END## + readStream.on("data",(data)=>{ + reqData.push(data) + size += data.length + }) + readStream.on('end',()=>{ + const json = Buffer.concat(reqData,size) + const content = JSON.parse(json.toString()) + resolve(content) + }) }) } diff --git a/ex04/__tests__/index.spec.js b/ex04/__tests__/index.spec.js index 3eafaf9..ae18dfd 100644 --- a/ex04/__tests__/index.spec.js +++ b/ex04/__tests__/index.spec.js @@ -1,30 +1,32 @@ -const Sequelize = require('sequelize'); -test('练习04 完成一个一对多查询', async () => { +const Sequelize = require("sequelize"); +test("练习04 完成一个一对多查询", async () => { + const sequelize = new Sequelize({ + host: "localhost", + dialect: "sqlite", + // operatorsAliases: true, + // 关闭执行日志 + logging: false, + }); - const sequelize = new Sequelize({ - host: 'localhost', - dialect: 'sqlite', - operatorsAliases: true, - // 关闭执行日志 - logging: false - }); + // 初始化模型 + const { initModel } = require("../index"); + const { Product, User } = await initModel(sequelize); - // 初始化模型 - const { initModel } = require('../index') - const { Product, User } = await initModel(sequelize) - - // 设置数据 - user = await User.create({ - name: 'Tom', - }) - await user.createProduct({ - title: '商品一' - }) - await user.createProduct({ - title: '商品二' - }) - const ret = await Product.findAll({ - attributes: ['title'] - }) - expect(JSON.parse(JSON.stringify(ret))).toEqual([{"title": "商品一"}, {"title": "商品二"}]) -}) \ No newline at end of file + // 设置数据 + user = await User.create({ + name: "Tom", + }); + await user.createProduct({ + title: "商品一", + }); + await user.createProduct({ + title: "商品二", + }); + const ret = await Product.findAll({ + attributes: ["title"], + }); + expect(JSON.parse(JSON.stringify(ret))).toEqual([ + { title: "商品一" }, + { title: "商品二" }, + ]); +}); diff --git a/ex04/index.js b/ex04/index.js index 1ee4e25..f78986c 100644 --- a/ex04/index.js +++ b/ex04/index.js @@ -1,34 +1,9 @@ const Sequelize = require('sequelize'); module.exports.initModel = async sequelize => { - // ##BEGIN## 代码已加密 -JEHJEHOJPOEIOSSOEXJEHJXIJEHOEIOSSOEHOPJOSSOEJOSXOPHOSSJHOOSOOSSOSEOSXOESOSSJPPJPEOPJOEIOSSOEXJPEJPAJEHOPX -JEHJEHJEHJEHOSXOSOJXPJEHOPX -JEHJEHJEHJEHJEHJEHOEAOPPOEPOSSJXPJEHOJSOSSOEHOPJOSSOEJOSXOPHOSSJHOJAOJAXOJEJIXJIAJIXOJOJPA -JEHJEHJEHJEHJEHJEHOOIOPJOEAOEEJAOOESOSJOEXOSSOEOOSSOESOEAJXPJEHOEAOEXOPJOSSJPA -JEHJEHJEHJEHJEHJEHOOIOEJOEJOEEOPSJAXOPJOEJOEJJXPJEHOSEOOIOEJOEIOSSJPA -JEHJEHJEHJEHJEHJEHOEPOEXOSXOEOOOIOEXOPPJAEOSSOPPJXPJEHOEAOEXOPJOSS -JEHJEHJEHJEHOPAJPA -JEHJEHJEHJEHOESOOIOEOOSSJXPJEHOJSOSSOEHOPJOSSOEJOSXOPHOSSJHOOJSOJEOJOJAOJAXJIA -JEHJEHOPAJPHJXH - -JEHJEHJAAOEXOEEOSOOPJOSJOEAJEHJXIJEHOEIOSSOEHOPJOSSOEJOSXOPHOSSJHOOSOOSSOSEOSXOESOSSJPPJPEOEPOEXOEEOSOOPJOSJOEAJPEJPAJEHOPX -JEHJEHJEHJEHOSXOSOJXPJEHOPX -JEHJEHJEHJEHJEHJEHOEAOPPOEPOSSJXPJEHOJSOSSOEHOPJOSSOEJOSXOPHOSSJHOJAOJAXOJEJIXJIAJIXOJOJPA -JEHJEHJEHJEHJEHJEHOOIOPJOEAOEEJAOOESOSJOEXOSSOEOOSSOESOEAJXPJEHOEAOEXOPJOSSJPA -JEHJEHJEHJEHJEHJEHOOIOEJOEJOEEOPSJAXOPJOEJOEJJXPJEHOSEOOIOEJOEIOSSJPA -JEHJEHJEHJEHJEHJEHOEPOEXOSXOEOOOIOEXOPPJAEOSSOPPJXPJEHOEAOEXOPJOSS -JEHJEHJEHJEHOPAJPA -JEHJEHJEHJEHOEAOSXOEAOEJOSSJXPJEHOPX -JEHJEHJEHJEHJEHJEHOEAOPPOEPOSSJXPJEHOJSOSSOEHOPJOSSOEJOSXOPHOSSJHOOJSOJEOJOJAOJAXJIAJPA -JEHJEHJEHJEHJEHJEHOOIOEJOEJOEEOPSJAXOPJOEJOEJJXPJEHOSEOOIOEJOEIOSS -JEHJEHJEHJEHOPAJPA -JEHJEHOPAJPHJXH -JEHJEHJAAOEXOEEOSOOPJOSJOEAJHOOOAOSSOEJOEEOESOSPOEIOJEOEEJPPOJPOEIOSSOEXJPAJEHOPX -JEHJEHJEHJEHOSJOEEOESOEIOEAOEXOOIOSXOESOEAOEIJXPJEHOEAOEXOPJOSSJPA -JEHJEHJEHJEHOEEOESJIHOSSOEJOSSOEAOSSJXPJEHJPEJIPJISOJSJIPJISJIHJIXJPE -JEHJEHOPAJPHJXH -JEHJEHOJPOEIOSSOEXJHOOSHOOIOEIJAHOOIOESOPPJPPJAAOEXOEEOSOOPJOSJOEAJPHJXH -JEHJEHOOIOPSOOIOSXOEAJEHOEIOSSOEHOPJOSSOEJOSXOPHOSSJHOOEIOPPOESOSJJPPOEAOEXOPJOSSJPH - // ##END## + const User = sequelize.define("User", { name: Sequelize.STRING }); + const Product = sequelize.define("Product", { title: Sequelize.STRING }); + User.belongsTo(Product); + Product.hasMany(User); + await sequelize.sync({ force: true }); return { User, Product } } diff --git a/ex05/index.js b/ex05/index.js index 9704829..9b994f7 100644 --- a/ex05/index.js +++ b/ex05/index.js @@ -1,16 +1,12 @@ -const {EventEmitter} = require('events') +const { EventEmitter } = require("events"); module.exports = class Connection { - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHOSJOEEOESOEIOEAOEXOPJOSJOEAOEEOEXJEHJPPJPHOPX -JEHJEHJEHJEHJEHJEHJEHJEHOEAOSHOSXOEIJHOOSSOPOOSSOESOEAJEHJXIJEHOESOSSOPSJEHJIXOPOOSSOESOEAJIXOEOOSXOEAOEAOSSOEXJPPJPHJXHJEH -JEHJEHJEHJEHOPA - -JEHJEHJEHJEHOSJOEEOESOESOSSOSJOEAOSXOEEOESJPPOEOOEIOSPJPHJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHOEAOSHOSXOEIJHOOSSOPOOSSOESOEAJHOOSSOEOOSXOEAJPPJPEOSJOEEOESOESJPEJPAOEOOEIOSPJPH -JEHJEHJEHJEHOPA - -JEHJEHJEHJEHOEEOESJIPOEEOESOESJPPOSJOOAJPHJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHOEAOSHOSXOEIJHOOSSOPOOSSOESOEAJHOOEEOESJPPJPEOSJOEEOESOESJPEJPAOSJOOAJPH -JEHJEHJEHJEHOPA - // ##END## -} + constructor() { + this.handles = [] + } + onConn(fn) { + this.handles.push(fn) + } + connection(msg) { + this.handles.forEach(fn=>fn(msg)) + } +}; diff --git a/ex06/__tests__/index.spec.js b/ex06/__tests__/index.spec.js index d3ad041..86e2d55 100644 --- a/ex06/__tests__/index.spec.js +++ b/ex06/__tests__/index.spec.js @@ -1,7 +1,6 @@ const { createToken } = require('../index') const token = createToken('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7InVzZXJuYW1lIjoiYWJjIiwicGFzc3dvcmQiOiIxMTExMTEifSwiZXhwIjoxNTkxOTMzODcyLCJpYXQiOjE1OTE5MzAyNzJ9.oKAj1dYjiHaNmKB4l5hUU84yycwZMIMLg47Rt5QxKFQ') test('练习06 有效性验证', () => { - expect(new Date(token.getExp() * 1000).toISOString()).toBe('2020-06-12T03:51:12.000Z') }) test('练习06 JWT有效期和有效性验证', () => { diff --git a/ex06/index.js b/ex06/index.js index 783cc5a..4222126 100644 --- a/ex06/index.js +++ b/ex06/index.js @@ -7,16 +7,13 @@ module.exports.createToken = token => { return { getExp: () => { - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOSJOEEOESOEIOEAJEHOEPOOIOPPOEJOEEOOIOSOJEHJXIJEHJASOJSJAIJAXJHOOEPOOIOEXOEIOSSJPPOESOSSOPSJEHJIEOPJOSEOSEOSSOEXJHOOSEOEXOEEOEOJPPOOIOEXOPPOOOJHPOOEJPAJEHJPEOOAOOIOEIOSSJXJJHIJPEJPHJPH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEAOPJOEXOESJEHOEPOOIOPPOEJOEEOOIOSOJHOOSSOPEOEP - // ##END## + let ret = Buffer.from(ary[1],'base64').toString() + return JSON.parse(ret).exp }, verify: key => { const hmac = crypto.createHmac('SHA256', key).update(ary[0]+ '.' + ary[1]).digest('base64'); return hmac === ary[2] + '=' - } } } diff --git a/ex07/index.js b/ex07/index.js index 1afb18a..b74405e 100644 --- a/ex07/index.js +++ b/ex07/index.js @@ -12,12 +12,9 @@ module.exports.createLoader = config => { return { initFunction: scanFolder => { const ret = {} - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEJOEEOOIOSOOSSOEXJPPOEIOSJOOIOESJIIOEEOEJOSOOSSOEXJPAJEHJPPOSEOSXOEJOSSOESOOIOEOOSSJPAJEHOSJOEXOSSOOIOEAOSSJIIOPJOESJPHJEHJXIJXAJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOSJOEEOESOEIOEAJEHOSEOPJOESOSJJEHJXIJEHOSJOEXOSSOOIOEAOSSJIIOPJOESJPPOSJOEEOESOSEOSXOSPJPH -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEAOOOOSEOSXOEJOSSOESOOIOEOOSSOOEJEHJXIJEHOSEOPJOESOSJ -JEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHJEHOPAJPH - // ##END## + loader(scanFolder,(filename,file)=>{ + ret[filename] = file(config) + }) return ret } } diff --git a/ex09/__tests__/index.spec.js b/ex09/__tests__/index.spec.js index 9d26be1..e3ba508 100644 --- a/ex09/__tests__/index.spec.js +++ b/ex09/__tests__/index.spec.js @@ -1,6 +1,3 @@ - - - const { sender, brackets } = require('../index') test('练习09 实现装饰器模式', () => { diff --git a/ex09/index.js b/ex09/index.js index 6b9c843..05fdfc3 100644 --- a/ex09/index.js +++ b/ex09/index.js @@ -1,18 +1,13 @@ - - module.exports.brackets = (target, property) => { - const old = target.prototype[property] - target.prototype[property] = msg => { - msg = `[${msg}]` - return old(msg) - } -} -module.exports.sender = name => (target, property) => { - // ##BEGIN## 代码已加密 -JEHJEHJEHJEHOSJOEEOESOEIOEAJEHOEEOEJOSOJEHJXIJEHOEAOOIOEXOSPOSSOEAJHOOEPOEXOEEOEAOEEOEAOPPOEPOSSOOOOEPOEXOEEOEPOSSOEXOEAOPPOOE -JEHJEHJEHJEHOEAOOIOEXOSPOSSOEAJHOOEPOEXOEEOEAOEEOEAOPPOEPOSSOOOOEPOEXOEEOEPOSSOEXOEAOPPOOEJEHJXIJEHOEOOEIOSPJEHJXIJXAJEHOPX -JEHJEHJEHJEHJEHJEHJEHJEHOEOOEIOSPJEHJXIJEHOOXJPJOPXOESOOIOEOOSSOPAJEHJXPJEHJPJOPXOEOOEIOSPOPAOOX -JEHJEHJEHJEHJEHJEHJEHJEHOEXOSSOEAOPJOEXOESJEHOEEOEJOSOJPPOEOOEIOSPJPH -JEHJEHJEHJEHOPA - // ##END## -} + const old = target.prototype[property]; + target.prototype[property] = (msg) => { + msg = `[${msg}]`; + return old(msg); + }; +}; +module.exports.sender = (name) => (target, property) => { + const old = target.prototype[property]; + target.prototype[property] = (msg) => { + return `${name} : ${old(msg)}`; + }; +}; diff --git a/tools/index.js b/tools/index.js index 177b29d..5809f6e 100644 --- a/tools/index.js +++ b/tools/index.js @@ -16,7 +16,7 @@ const scanFolder = path.resolve(__dirname, '../') // 从环境变量中读取秘钥 dotenv.config('./env'); const key = process.env['KEY'] -console.log('秘钥为:', ) +console.log('秘钥为:',key ) const encrypt = createEncrypt(key) // 循环加密代码 From b25c8b1d4250dda3966c73ec12f3ddb6032825e2 Mon Sep 17 00:00:00 2001 From: zxlzl <384542246@qq.com> Date: Tue, 4 Aug 2020 13:56:01 +0800 Subject: [PATCH 3/3] answer --- ex01/index1.js | 23 +++++++++++++++++++++++ ex04/index1.js | 34 ++++++++++++++++++++++++++++++++++ ex05/index1.js | 16 ++++++++++++++++ ex06/index1.js | 24 ++++++++++++++++++++++++ ex07/index1.js | 24 ++++++++++++++++++++++++ ex09/index1.js | 18 ++++++++++++++++++ 6 files changed, 139 insertions(+) create mode 100644 ex01/index1.js create mode 100644 ex04/index1.js create mode 100644 ex05/index1.js create mode 100644 ex06/index1.js create mode 100644 ex07/index1.js create mode 100644 ex09/index1.js diff --git a/ex01/index1.js b/ex01/index1.js new file mode 100644 index 0000000..27b9252 --- /dev/null +++ b/ex01/index1.js @@ -0,0 +1,23 @@ +const { resolve } = require("path"); +const fs = require("fs"); +module.exports.getRouter = (path = resolve("./")) => { + // ##BEGIN## + const list = fs.readdirSync(path); + return ` +export default new Router({ +mode: 'history', +base: process.env.BASE_URL, +routes: [ +${list.map( + (file) => + `{ +path: '/${file.replace(".vue", "")}', +name: '${file.replace(".vue", "")}', +component: () => import('./views/${file}' +}, +` +)} +] +})`; + // ##END## +}; diff --git a/ex04/index1.js b/ex04/index1.js new file mode 100644 index 0000000..e052abe --- /dev/null +++ b/ex04/index1.js @@ -0,0 +1,34 @@ +const Sequelize = require("sequelize"); +module.exports.initModel = async (sequelize) => { + // ##BEGIN## + User = sequelize.define("user", { + id: { + type: Sequelize.INTEGER, + autoIncrement: true, + allowNull: false, + primaryKey: true, + }, + name: Sequelize.STRING, + }); + + Product = sequelize.define("product", { + id: { + type: Sequelize.INTEGER, + autoIncrement: true, + allowNull: false, + primaryKey: true, + }, + title: { + type: Sequelize.STRING, + allowNull: false, + }, + }); + Product.belongsTo(User, { + constraints: true, + onDelete: "CASCADE", + }); + User.hasMany(Product); + await sequelize.sync(true); + // ##END## + return { User, Product }; +}; diff --git a/ex05/index1.js b/ex05/index1.js new file mode 100644 index 0000000..cedf853 --- /dev/null +++ b/ex05/index1.js @@ -0,0 +1,16 @@ +const { EventEmitter } = require("events"); +module.exports = class Connection { + // ##BEGIN## + constructor() { + this.event = new EventEmitter(); + } + + connection(msg) { + this.event.emit("conn", msg); + } + + onConn(cb) { + this.event.on("conn", cb); + } + // ##END## +}; diff --git a/ex06/index1.js b/ex06/index1.js new file mode 100644 index 0000000..4d04f19 --- /dev/null +++ b/ex06/index1.js @@ -0,0 +1,24 @@ +const crypto = require("crypto"); +module.exports.createToken = (token) => { + const ary = token.split("."); + if (ary.length !== 3) { + return; + } + + return { + getExp: () => { + // ##BEGIN## + const payload = JSON.parse(new Buffer.from(ary[1], "base64")); + return payload.exp; + // ##END## + }, + + verify: (key) => { + const hmac = crypto + .createHmac("SHA256", key) + .update(ary[0] + "." + ary[1]) + .digest("base64"); + return hmac === ary[2] + "="; + }, + }; +}; diff --git a/ex07/index1.js b/ex07/index1.js new file mode 100644 index 0000000..88ddf48 --- /dev/null +++ b/ex07/index1.js @@ -0,0 +1,24 @@ +const fs = require("fs"); +module.exports.createLoader = (config) => { + const loader = (scanFolder, cb) => { + const files = fs.readdirSync(scanFolder); + files.forEach((filename) => { + filename = filename.replace(".js", ""); + const file = require(scanFolder + "/" + filename); + cb(filename, file); + }); + }; + + return { + initFunction: (scanFolder) => { + const ret = {}; + // ##BEGIN## + loader(scanFolder, (filename, createFun) => { + const func = createFun(config); + ret[filename] = func; + }); + // ##END## + return ret; + }, + }; +}; diff --git a/ex09/index1.js b/ex09/index1.js new file mode 100644 index 0000000..4c9dc74 --- /dev/null +++ b/ex09/index1.js @@ -0,0 +1,18 @@ +module.exports.brackets = (target, property) => { + // ##BEGIN## + const old = target.prototype[property]; + target.prototype[property] = (msg) => { + msg = `[${msg}]`; + return old(msg); + }; + // ##END## +}; +module.exports.sender = (name) => (target, property) => { + // ##BEGIN## + const old = target.prototype[property]; + target.prototype[property] = (msg) => { + msg = `${name} : ${msg}`; + return old(msg); + }; + // ##END## +};