npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@bigmogician/vue

v0.1.5

Published

vue, vuex, vue-router package for typescript.

Downloads

15

Readme

@bigmogician/vue

概述

vue 部分的 ts 支持还没有合入 master

Vue 部分的 ts 写法和 js 的标准写法保持一致,所有的 js 写法都可以直接转到 ts,但是要更合理地使用类型提示,class 风格可以带来明显改进,所以我引入了 vue-class-component 组件。

下面的定义辅助基本上可以直接用在类 js 的写法之上,但使用 class 会更佳。

vue-class-component 使用原则:

  • 诸如 filters、methods、computed 等部分,直接写在 Vue.extend({...})里,并被 class 直接继承;
  • class 内部直接进行属性访问器(get; set;)、类成员字段(class-fields)和函数(prototype.method)定义;
  • 不需要再用 data(){...},因为意义不大,所有 class fields 都会被 vue 追踪,检查并在必要的时候更新视图;
  • 不要写这样的表达式:“public data: string = undefined;”,而应该写:"public data: string | null = null",因为 undefined 不会被 vue 跟踪,无法自适应刷新视图;

不使用 vue-class-component:

  • 按照 js 语法书写就可以了,如果需要部分类型感知,使用语法:export default Vue.extend({...});

Vue 的 client 部分定义:

  • 类型帮助函数
  • vue-router 定义补偿
  • vuex 定义补偿

1.类型帮助函数

src/vue.ts

1)interface VueProps<T>

「global」全局类型,用来描述 vue 组件的 props 类型

用法:...

2)function classic<T extends Vue>(component: Constructor<T>, extend?: ComponentOptions<T>): T;

「export」导出函数,用于不想用装饰器的同学或者 js 文件(没 babel-decorators)

用法:...

2.vue-router 定义补偿

src/vue.ts

针对 vue-router 包定义的蜜汁设计,我包装了一个支持定义 query 和 params 的辅助函数来让 vue-router 变得更香

1)namespace RouterVue

「export」「namespace」定义的名称空间,里面有多个类型定义

2)interface VueRouterRef<T>

「global」用来声明一个 router 组件的 query、params 和 meta 的解构,用法参加下面的function RouterVue()

3)function RouterVue(...args: any[]): Vue;

「export」和名称空间相同的函数,用来替换 Vue.extend 支持 router 定义

用法:...

3.vuex 定义补偿

src/vuex.ts

vuex 的定义支持非常的垃圾,不吐槽了,我做了帮助函数来确保 store 的定义在和 component 配合时,不会发生类型断裂。

1)namespace VUEX

「export」「namespace」vuex 辅助名称空间,承载了多个类型和接口

用法:...

2)function VUEX.bindState<S>(state: S): VUEX.IVuexStateHelper<S>;

VUEX 名称空间暴露的唯一一个可调用函数,用来定义 state 信息;函数执行返回 VUEX.IVuexStateHelper<S>,顺次调用方法完成 getters、mutations 和 actions 信息的登记,最终执行 createStore 完成 store 组装

用法:...

3)interface VUEX.IVuexStateHelper<S, IG = {}, IM = {}, IA = {}>

定义了 getters、mutations 和 actions 信息的登记函数,和最终执行函数 createStore;

定义了多个 map 函数,辅助完成 mapState 等场景的类型推导;

用法:...

1)绑定 getters
2)绑定 mutations
  • state、getters 类型别定义错,mutations 的参数类型不要定义错误,不然 gg(编译不过,很严格
3)绑定 actions
  • commit、dispatch 具有类型感知,请确保 mutations 和 actions 的接受参数定义正确,不然 gg(编译不过
4)完成 store
5)帮助函数
  • 完成所有绑定之后,生产 store 之前,actions 对象上所有的帮助函数定义支持已经完备,已经可以使用。
1.mapState

等同 vuex.mapState,增强了类型推导能力

2.mapGetters

等同 vuex.mapGetters,增强了类型推导能力

3.mapMutations

等同 vuex.mapMutations,增强了类型推导能力

4.mapActions

等同 vuex.mapActions,增强了类型推导能力

5.createComputed

作用等同 vuex.mapState 和 vuex.mapGetters 的聚合,增强了类型推导能力

6.createMethods

作用等同 vuex.mapMutations 和 vuex.mapActions 的聚合,增强了类型推导能力