1.0.42 • Published 6 years ago

sav v1.0.42

Weekly downloads
5
License
MIT
Repository
github
Last release
6 years ago

sav

sav-core

核心模块 cookie header request response socket

sav-decorator

装饰器

sav-prop

模块注入

sav-router

路由

sav-dataset

nosql数据库

sav-database

sql数据库

sav-cache

缓存

sav-view

页面渲染

sav-vue

vue页面渲染

层次结构

app ctx request response

    req.headers
        req.cookies
    req.body

    res.headers
    res.body
    res.status

socket
services
class Article {
    @get('article/:aid')
    async get ({db, ds, service, params, self}) {
        let article = await ds.articles.findOne({aid: params.aid}).ensure()
        let auther = await db.table('users').where({uid: article.uid}).ensure()
        let comments = await service.get("article/comments", {aid: params.aid})
        let me = await self.user.me()
        return {
            me,
            article,
            auther
        }
    }

    @post('article/update/:aid')
    async update ({db, ds, service, session, params, throwExp, input}) {
        let article = await ds.articles.findOne({aid: params.aid}).ensure()
        if (session.uid !== article.uid) {
            throwExp(403)
        }
        article = await ds.articles.update(input).ensure()
        return {
            article
        }
    }
}

class User {
    async me ({cache, session}) {
        return await cache.getBy('user', session.uid)
    }
}

todo

开发工具打包 rollup webpack standard eslint ava nyc babel

装饰器提取后的模块格式

{
  "moduleName": "Account",
  "moduleGroup": "Page",
  "uri": "AccountPage",
  "props": {
    "view": "vue",
    "layout": "UserLayout"
  },
  "routes": [
    {
      "actionName": "login",
      "uri": "AccountPage.login",
      "tasks": [
        { "name": "title", "props": "登录" },
        { "name": "route", "props": {"methods": ["GET"]}}
      ]
    }
  ]
}

经由模块预处理插件(注入, 不会被序列化)
{
  "routes": [
    {
      "actionName": "login",
      "uri": "AccountPage.login",
      "tasks": [
        { "name": "title", "props": "登录" }, // 任务项
      ],
      module, // 双向绑定
      middlewares: [],
      appendMiddleware (name, middleware, prepend) {}
      props: { // 将tasks转换为props方便后续处理
        title: { // 任务项
          name: "title",
          props: "登录",

          middleware: null,
          setMiddleware (middleware) {}
        }
      }
    }
  ],

}

经由路由转换插件(添加)
{
  "SavRoute": {
    "uri": "AccountPage",
    "path": "/account",
    "childs": [
      {
        "uri": "AccountPage.login",
        "path": "/account/login",
        "methods": [
          "GET"
        ]
      }
    ],
    "parents": []
  },
  "VueRoute": {
    "component": "Account/Account",
    "path": "/account",
    "children": [
      {
        "component": "Account/AccountLogin",
        "name": "AccountLogin",
        "path": "login",
        "methods": [
          "GET"
        ]
      }
    ]
  }
}

sav要做什么

App = Page + Route Page = PageLayout + PageRoute + PageView PageLayout = Views View = Template + State + Route Route = Api + Schema State = Schema

=>

Page = Route + View + State Route = View = State

mapGetter => DataSource

1.0.42

6 years ago

1.0.40

6 years ago

1.0.39

6 years ago

1.0.38

6 years ago

1.0.37

6 years ago

1.0.36

6 years ago

1.0.35

6 years ago

1.0.34

6 years ago

1.0.33

6 years ago

1.0.32

6 years ago

1.0.31

6 years ago

1.0.30

6 years ago

1.0.29

6 years ago

1.0.28

6 years ago

1.0.27

7 years ago

1.0.26

7 years ago

1.0.25

7 years ago

1.0.24

7 years ago

1.0.23

7 years ago

1.0.22

7 years ago

1.0.21

7 years ago

1.0.20

7 years ago

1.0.19

7 years ago

1.0.18

7 years ago

1.0.17

7 years ago

0.0.16

7 years ago

0.0.15

7 years ago

0.0.14

7 years ago

0.0.13

7 years ago

0.0.12

7 years ago

0.0.11

7 years ago

0.0.10

7 years ago

0.0.8

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago