MrZWH / MrZWHblog

https://mrzwh.github.io/
2 stars 1 forks source link

Vue全家桶+SSR+Koa2全栈开发美团网 #22

Open MrZWH opened 5 years ago

MrZWH commented 5 years ago
<script>
import {mapActions} from 'vuex'
export default {
    methods: mapActions([
        'increment',
        'decrement'
    ])
}
</script>

Koa2 基础

自定义中间件

function pv(ctx) {
    global.console.log('pv')
}

module.exports = function() {
    return async function(ctx, next) {
        px(ctx)
        await next()
    }
}

mongoose

命令行发送 POST 请求

curl -d 'name=lilei&age=26' http://localhost:3000/addPerson

redis

const Kos - require('koa')
const session = require('koa-generic-session')
const Redis = require('koa-redis')

const app = new Koa()
app.keys = ['keys', 'keyskeys'] // 给 session 做加密处理的
app.use(session({
    key: 'mt',
    prefix: 'mtpr',
    store: new Redis() // 没写就默认存储在内存
}))

查看 redis

命令行中输入:

redis-cli
keys *
get <上一步得到的key值>

Nuxt.js 基础

Nuxt.js 概述

安装

https://zh.nuxtjs.org 使用koa2去做项目:

vue init nuxt-community/koa-template <project>

nrm npm 源管理工具

Vue SSR 工作原理

新安装方式(2.0.0)

  1. npm install -g npx
  2. npx create-nuxt-app project-name

开发

element-ui

发送邮箱验证码

passport

整合koa

注册

对中文名进行编码:encodeURIComponent(username) this.$axios 对密码进行加密:npm i crypto-js

查询城市拼音分类

需要安装 汉字->拼音 的库:npm i js-pinyin

import pyjs from 'js-pinyin'
let p
let c
let d = {}
city.forEach(item => {
    p = pyjs.getFullChars(item.name).toLocaleLowerCase().slice(0,1)
    c = p.charCodeAt(0)
    if (c > 96 && c < 123) {
        if (!d[p]) {
            d[p] = []
        }
        d[p].push(item.name)
    }
})
for(let [k, v] of Object.entries(d)) {
    blocks.push({
        title: k.toUpperCase(),
        city: v
    })
    blocks.sort((a, b) => a.title.charCodeAt(0) - b.title.charCodeAt(0))
    self.block = blocks
}