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 🙏

© 2024 – Pkg Stats / Ryan Hefner

chat-vue

v1.0.2-alpha.3

Published

# 一、使用指南

Downloads

27

Readme

chat-vue

一、使用指南

1.install(安装)

yarn add chat-vue / npm i chat-vue

2.import(引入)

在vue项目中main.js写入

import 'chat-vue/dist/chat.css';

3.use(使用)

在使用chat-vue的组件中写入

<template>
  // ...
  <chat :messageList="messageList" @onMessagePost="postHandler" >
    <template v-slot:slotName="{message}">
      <div>{{message.id}}</div>
    </template>
  </chat>
  // ...
</template>
// ...
import chat from "chat-vue";
export default {
  components: {
    chat
  },
  data() {
    return {
      messageList: [{
        id: 0,
        content: "您好!欢迎使用chat-vue"
      }, {
        id: 1,
        type: 'html',
        content: '<div>...</div>
      }, {
        id: 2,
        type: 'guess',
        content: '...',
        replyList: [{
          title: '...',
          value: '...'
        }]
      }, {
        id: 3,
        type: 'replyList',
        replyList: [{
          title: '...',
          value: '...'
        }]
      }, {
        id: 4,
        type: 'img',
        src: '...'
      }, {
        id: 5,
        type: 'video',
        src: '...'
      }, {
        id: 6,
        type: 'link',
        title: '...',
        desc: '...',
        url: '...'
      }, {
        id: 7,
        slot: 'slotName'
      }]
    }
  },
  methods: {
    postHandler(userInput) {
      this.messageList.push({
        id: Math.random(),
        role: 'user',
        content: userInput
      })
      setTimeout(() => {
        this.messageList.push({
          id: Math.random(),
          content: `为您找到问题'${userInput}'的解决方案是...` 
        })
      }, 1000);
    }
  }
}

4. 属性和事件补充说明

4.1 属性

| 属性名 | 说明 | 类型 | 默认值 | |--------------|-----------------------------------------------------|----------|--------------------------------------------| | messageList | 消息数据(详情参考4.1.1) | Array | [] | | tagList | 推荐标签([{value: '标签1', ...]) | Array | [] | | relationList | 输入联想问题列表 | Array | [] | | config | 配置集合(详情参考4.1.3) | Object | {theme: "modern", placeholder: '请输入'} |

4.1.1 messageList的元素

| 属性名 | 说明 | 类型 | 默认值 | |------------|----------------------------------------------------------------------------------|--------------------|--| | id | 唯一标识 | NumberString | | | text | 文本内容 | String | | | html | 带有html的富文本内容 | String | | | type | 消息类型(可选值:text, html, replyList, guess, img, video, link) | String | text | | role | 消息所属角色(user(用户, 右侧展示), service(客服,左侧展示))|String | String | | replyList | 推荐问题列表[{value: '问题1', ...}, ...] | Array | | | feedback | 赞、踩选中记录 | Number | | | noFeedback | 是否展示‘赞、踩’ | Boolean | | | metaInfo | 消息元数据(详情参考4.1.1.1) | Object | | | src | 当type为'img'时才生效,图片地址 | String | | | src | 当type为'video'时才生效,视频地址 | String | | | title | 当type为'link'时才生效,链接标题 | String | | | desc | 当type为'link'时才生效,链接描述 | String | | | url | 当type为'link'时才生效,链接跳转地址 | String | | | slot | 当写入slot属性时,该条消息渲染模版会匹配插槽中的内容 | String | |

4.1.1.1 metaInfo的属性

| 属性名 | 说明 | 类型 | 默认值 | |----------|------|----------|--------| | nickname | 昵称 | String | | | time | 时间 | String | |

4.1.2 config

| 属性名 | 说明 | 类型 | 默认值 | |----------------|-----------------------------------------------------------------------------------|-----------|----------| | theme | 主题;可选值:modernbasic | String | modern | | serviceIcon | 客服头像(为真值时展示客服头像) | String | | | userIcon | 用户头像(为真值时展示用户头像) | String | | | placeholder | 输入框占位内容 | String | 请输入 | | noScroll | 是否禁止滚动区自动滚动 | Boolean | | | pulldownConfig | 下拉加载配置(详情参考4.1.2.1) | Object | | | pullupConfig | 上拉加载配置(详情参考4.1.2.1) | Object | | | showFeedback | 是否需要“赞、踩功能” | Boolean | |

4.1.2.1 config.pulldownConfig和config.pullupConfig

| 属性名 | 说明 | 类型 | 默认值 | |------------------|-------------------------------------------------|---------------------|--------| | disabled | 是否禁用功能 | Boolean | true | | loadingIcon | 加载图标 | String | | | pullText | 拉动时的文字 | String | | | loadingText | 加载时的文字 | String | | | noMoreText | 没有更多时的文字 | String | | | noMoreData | 是否没有更多了 | Boolean | | | boundaryDistance | 触发加载的边界距离 | Number | | | callback | 加载时需要处理的回调函数(该函数需返回Promise) | Function: Promise | |

4.2 事件

| 事件名 | 说明 | 参数 | |------------------------|--------------------------------------------------|--------------------------------------------------| | onMessagePost | 用户点击发送按钮或按下回车键后触发 | 用户输入的文本 | | quickReply | 用户点击推荐问题列表中的问题后触发 | 参数为推荐问题数组(replyList)中对应点击的元素 | | quickTag | 用户点击推荐标签列表中的标签后触发 | 参数为推荐标签数组(tagList)中对应点击的元素 | | feedback | 用户点击消息下方的‘赞、踩’按钮 | 参数1,2分别为消息id和反馈类型(0: 赞、1:踩) | | onInputChanged | 输入框change触发,获取到输入框的value | 参数为输入框的value | | onAssociationProblemSelect | 点击输入联想问题调用此函数,返回该问题对应的对象 | 参数为联想问题数组(relationList)中对应点击的元素 |

其它示例

1 下拉加载(1. 将config传给chat组件;2. 在config中写入pulldownConfig对象;3. 在pulldownConfig配置callback函数)

<template>
  // ...
  <chat :messageList="messageList" :config="config" @onMessagePost="postHandler" />
  // ...
</template>
// ...
import chat from "chat-vue";
export default {
  components: {
    chat
  },
  data() {
    return {
      messageList: [{
        id: 0,
        content: "您好!欢迎使用chat-vue"
      }],
      config: {
        // 下拉加载的配置
        pulldownConfig: {
          callback: this.pulldownHandler
        }
      }
    }
  },
  methods: {
    postHandler(userInput) {
      this.messageList.push({
        role: 'user',
        content: userInput
      })
      setTimeout(() => {
        this.messageList.push({
          content: `为您找到问题'${userInput}'的解决方案是...` 
        })
      }, 1000);
    },
    // 下拉加载的回调函数
    pulldownHandler() {
      return new Promise(reslove => {
        setTimeout(() => {
          this.messageList.unshift({
            content: '下拉消息'
          })
          reslove()
        }, 1000);
      })
    }
  }
}
// ...

二、开发指南

规范

  1. 组件样式统一写入/src/less文件夹中的less文件,每个组件根元素声明一个类名来形成一个命名空间,统一使用cv-作为类名前缀
  2. 每个主题的样式对应/src/less/theme中的一个文件夹,由一个index.less引入该文件夹下所有子文件夹的index.less。应该最多包含这3个文件夹default、mobile、pc。每个子文件夹中的index.less引入该文件夹下的所有less文件

Project setup(运行、开发本项目)

yarn install

Compiles and hot-reloads for development

yarn serve

Compiles and minifies for production

yarn build

Lints and fixes files

yarn lint

Customize configuration

See Configuration Reference.