Koa+TypeScript从0到1实现简易CMS框架(二):路由自动加载与全局异常处理

目录

项目地址:koa-typescript-cms

前言

koa本身是没有路由的,需借助第三方库koa-router实现路由功能,但是路由的拆分,导致app.ts里需要引入许多路由文件,为了方便,我们可以做一个简单的路由自动加载功能来简化我们的代码量;全局异常处理是每个cms框架中比不可少的部分,我们可以通过koa的中间件机制来实现此功能。

主要工具库

  • koa web框架
  • koa-bodyparser 处理koa post请求
  • koa-router koa路由
  • sequelize、sequelize-typescript、mysql2 ORM框架与Mysql
  • validator、class-validator 参数校验
  • jsonwebtoken jwt
  • bcryptjs 加密工具
  • reflect-metadata 给装饰器添加各种信息
  • nodemon 监听文件改变自动重启服务
  • lodash 非常好用的工具函数库

Koa+TypeScript从0到1实现简易CMS框架(一):项目搭建以及配置

目录

项目地址:koa-typescript-cms

前言

最近学习了慕课网七月老师的《从0到1手把手教你用Node.js+KOA2打造超好用的Web框架》,自己使用TypeScript重构了一个简单的cms框架,具有路由自动注册、全局异常处理、参数校验、JWT鉴权、权限管理等cms基础功能。

主要工具库

  • koa web框架
  • koa-bodyparser 处理koa post请求
  • koa-router koa路由
  • sequelize、sequelize-typescript、mysql2 ORM框架与Mysql
  • validator、class-validator 参数校验
  • jsonwebtoken jwt
  • bcryptjs 加密工具
  • reflect-metadata 给装饰器添加各种信息
  • nodemon 监听文件改变自动重启服务
  • lodash 非常好用的工具函数库

JS基础知识(二):原型与原型链

class和继承

类的基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 定义一个类
class Student {
constructor(name, number) {
this.name = name
this.numer = number
}
sayHi() {
console.log(`姓名 ${this.name} , 学号 ${this.number}`)
}
}
// 通过类 new 对象/实例
const xiaoming = new Student('小明', 50)
console.log(xiaoming.name) // 小明
console.log(xiaoming.number) // 50
xiaoming.sayHi() // 姓名 小明 , 学号 50

JS基础知识(一):变量类型和计算

值类型和引用类型

值类型

值类型示例

1
2
3
4
5
// 值类型
let a = 100
let b = a
a = 200
console.log(b) // 100

值类型在内存中的存储方式

值类型一般都是在栈中存储一个值

爬取某站所有性感美女图片(NodeJs版)

准备工作

环境

  • node v10.13.0
  • npm v6.4.1

    项目依赖

  • request-promise(网络请求promise版)
  • cheerio(dom操作)
  • fs(文件读写)

    其他

    路径

    1
    2
    const BASE_URL = "http://www.umei.cc/p/gaoqing/cn/"; // 目标站地址
    const BASE_PATH = "D://picture//"; // 需要存储到的文件夹

    headers设置

    1
    2
    3
    4
    const headers = {
    "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
    };

简单工厂模式

简介

工厂模式主要是为了创建对象实例或者类簇(抽象工厂), 关心的是最终产出(创建)的对象, 而不关心创建的过程.

在出现多个类的时候, 每次创建需要找到对应的类往往比较麻烦, 这时候通常使用一个函数进行封装来创建所需要的对象,
这样就无需关注创建这些对象到底依赖哪些基类了, 只要知道有这个函数就可以了, 通常这个函数被称为工厂函数,
这种模式叫简单工厂模式

爬取某站所有性感美女图片(Python版)

Python 版

环境

  • python3.7
  • pip19.3

依赖

  • requests
  • pyquery
  • os

前期准备

引入所需依赖

1
2
3
4
import requests
import os
from requests.packages import urllib3
from pyquery import PyQuery as pq

谈一谈4536251万能和声进行

前言

  2018 年,4536251这串数字因为某截火了起来,很多吃瓜群众的口袋里又多了一个“网络生化武器”。在专业的音乐制作人眼里,这只不过是一套烂大街的和声进行,又称万能和声进行,或者说是黄金八小节。现在,我们简单的谈一谈这套和声进行。

音乐作品《我只在乎你(Cover:邓丽君)》

  这是一首由近代日本作曲家三木たかし与填词人荒木とよひさ共同为邓丽君打造的一首音乐作品,每次听到这首作品都会感动很久。
  这首歌原本是一首大调歌曲,我把他改编成了小调转大调,主歌的和弦几乎全被我换掉了,听惯了大调,所以我想尝试一下暗淡的色彩会不会给这首歌带来新的味道。
  这次改编我只用了一架钢琴作为伴奏乐器,使用的和弦其实并没有很复杂,大都是简单的离调,为了丰富 jazz 味道,我在钢琴节奏方面用了 swing,可能用了 swing 后 jazz 味道会浓郁一些(但是我又不想让它太浓)!
  请原谅我的唱功,我承认,我的唱功确实垃圾到爆了,又不会爵士唱法,实在惨不忍睹 😅,希望各位不要被我的唱功劝退!

音乐作品《月半弯(Cover:陈坤)》

  这是一首普通的流行歌曲,由郝雷作词作曲,张学友演唱,1985 年发行,我把它改编成了偏 R&B 的风格。和弦方面没有太大的改动,最多就是在原有和弦加了几个色彩音!
  第一次接触到这首歌是听了皮皮改编的版本,他改编成的风格好像是 Soul,听了之后我就喜欢上了这首歌。个人比较喜欢皮皮改编的版本,毕竟二十年前的编曲实在难征服我的耳朵!

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×