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

yian

v1.1.5

Published

Vue Project Entrance

Downloads

3

Readme

📦 Install

npm install yian -S

Quick Start Vue2.6

//main.js

import yian from 'yian';
import 'yian/packages/theme-chalk/src/yel-ui.scss'
/* import service from 'your interceptor filepath' */

Vue.use(yian);

const $_Y = {
  /* 一些属性 */
  service, //import your axios interceptor 你的axios全局拦截器

  //举例1: ElementUILoading: ture [Element的loading功能(默认为false),对非get以外的请求开启了本功能,get请求时采用ElementUI官方指令方式按需插入]

  //举例2:  baseVersionApi: 'v2‘ [接口的baseversion预留,如 '/v2' 或者 '/api']
};

Vue.prototype.$yian = yian.content($_Y);

🔨 Usage 配置axios拦截器

⚡️ 配置完成后导入 main.js 入口,作为$_Y 属性注入。

// create an axios instance
const service = axios.create({});

// request interceptor
service.interceptors.request.use();

// response interceptor
service.interceptors.response.use();

export default service;

⚡️💥🔥 Vue 请求规则,支持 axios 原有功能,yian 已添加 axios 在 1000ms 内重复请求限制。

export default {
  methods: {
    getList() {
      //举例1 默认为
      this.$yian
        .axios({ url: 'user/login', method: 'post', params: { username: admin, password: 123456 } })
        .then(/* ... */);
      //举例2
      this.$yian
        .axios({
          url: '/academic/getAcademicField',
          method: 'get',
          params: { currentPage: 1, pageSize: 10 },
        })
        .then(/* ... */);
      //举例3
      this.$yian.axios({
        url: '/v2/qiniu/upload',
        method: 'post',
        params: formData,
        headers: { 'content-type': 'multipart/form-data' },        
      })  
    },
  },
};

❤️ 隐藏功能 ❤️ yian还做了axios的深度二封Proxy。支持更简便的请求写法,具体方法可以看一下源代码。

🚀🚀🚀 Usage Utils 工具箱

| Utils 方法 | 用法及介绍 | | -------------------------------- | ------------------------------------- | | deepClone 深拷贝 | this.$yian.utils.deepClone(obj) | | copyData Vue 源码深拷贝(推荐) | this.$yian.utils.copyData(obj) | | unique 字符串、数组去重 | this.$yian.utils.unique(params) | | mobileCheck 手机号检验 | this.$yian.utils.mobileCheck(mobile) | | unixDate Unix 时间戳转化日期时间 | this.$yian.utils.unixDate(Unixtime) | | isExternal 是否为外链 | this.$yian.utils.isExternal(link) |

🚀🚀🚀 Usage v-popup 指令打开 el-dialog 弹窗

//Vue Click事件标签处使用v-popup指令案例
<div v-for="(item, index) in List" :key="index">
  <el-button
    id="`${index}_order_shipping`"
    v-popup.orderShipping="{a:index, b:item}"
    type="primary"
    module="order"
    width="1200"
    >发货</el-button
  >
</div>

💥 标签attribute 属性列表 [相关属性用于 el-dialog,却写在 Click 事件标签上,如上]

| 属性 | 可选性 | 类型 | 默认值 | 作用 | |---------|---------|---------|---------|---------| | id | 必须necessary | String | —— | key值,区别于其他按钮指令控制的el-dialog弹窗 | | v-popup | 必须necessary | Any | —— | 传入el-dialog组件的值 | | v-popup.[xxx] | 必须necessary | —— | —— | 如 v-popup.orderShipping 中的 orderShipping,和组件注册时所需参数一直,否则会有问题! | | module | 必须necessary | String | —— | el-dialog组件隶属主模块名称,和组件注册时所需参数一直,否则会有问题! | | title | 非必须unnecessary | String | 操作窗口 | el-dialog窗口标题 | | hide_footer | 非必须unnecessary | Boolean | false | 是否隐藏页脚 | | hide_cancel | 非必须unnecessary | Boolean | false | 是否隐藏取消按钮 | | sure_btn | 非必须unnecessary | String | 确定 | 确认按钮文字修改 | | width | 非必须unnecessary | Number | 730px | el-dialog宽度 | | top | 非必须unnecessary | String | 15vh | el-dialog距顶高度 | | action | 非必须unnecessary | function | —— | 父组件上的回调事件,如存在,el-dialog组件打开时即调用 |

❤️ el-dialog组件示例

//orderShipping组件内容
<template>
  <div>
    orderShipping主内容块
  </div>
</template>

<script>
  export default {
    //props须写成这样才能传入值
    props: ['value'],
    methods: {
      //affirm事件必须写上,此方法已与确认按钮耦合。
      //handleClosed方法控制el-dialog窗口关闭
      affirm(vlm) {
        vlm.handleClosed();
      },
    },
  };
</script>

⚡️💥🔥 el-dialog组件注册

  • 项目结构目录建议
src
├── layout //公共布局
├── router //vue-router
│   └── index.js
├── store //vuex
│   └── index.js
├── styles //公共样式
│   └── ....scss
├── icons  //icons目录
│   ├── svg
│   │   └── ....svg
│   └── js
│       └── symbolIcon.js
├── components //公用组件
│   └── ....vue
├── views  //页面
│   └── order  //业务模块名
│       ├── components //隶属模块组件
│       │   └── orderShipping.vue
│       └── index.js
├── App.vue
└── main.js
  • 建议的目录路径/src/views/[隶属模块名]/index.js 导出组件模块
import yian from 'yian';
import orderShipping from './components/orderShipping.vue';
const modules = {};

modules.install = function() {
  //'order','orderShipping'与attribute 属性列表中v-popup.[xxx] 指令修饰符和module需一致
  yian.component('order', 'orderShipping', orderShipping);
};

export default modules;
  • webpack 入口文件中用 Vue.use()使用插件的形式全局注入组件
import order from '@/views/order/index.js';

Vue.use(order);

🚀🚀🚀 Usage Icon 组件

  • icon 目录参考目录建议
  • js 目录中放入 Iconfont Symbol 代码
  • svg 目录留作本地 icon 用,使用请在 main.js 中加入下面代码
//注意@别名配置
const req = require.context('@/icons/svg', false, /\.svg$/);
const requireAll = (requireContext) => requireContext.keys().map(requireContext);
requireAll(req);
  • 使用
//外链模式和Iconfont模式都支持,Iconfont图标名去掉前半部分'icon-'即可,本地svg输入文件名即可
<svg-icon icon-class="shouye" />
<svg-icon icon-class="https://panjiachen.github.io/vue-element-admin-site/home.png" />

🚀🚀🚀 Usage Upload 组件

💥 标签attribute 属性列表

| 属性 | 可选性 | 类型 | 默认值 | 作用 | |---------|---------|---------|---------|---------| | action | 必须necessary | function(file, fields, [...thumb可选]) | ——— | 上传操作钩子,请保证是一个promise,内部有请求体,且保证resolve和reject出结果。file是数组,元素是一个个formData对象,fields是fields属性传入的对象,[thumb可选]Canvas画出的缩略图Base64数据,multiple属性为true时thumb是一个数组,包含base64元素;为false时thumb是一个base64数据。 | | afterUpload | 必须necessary | function(res) | ——— |文件上传后的钩子,处理结果 | | multiple | 非必须unnecessary | Boolean | false |是否多文件上传| | needCanvas | 非必须unnecessary | Boolean | false | 是否需要截取image、vedio画面第一帧 | | autoUpload | 非必须unnecessary | Boolean | true |是否自动上传。当选择false时,selectX事件会触发,且action钩子、afterUpload钩子、needCanvas属性都会失效! | | btn_words | 非必须unnecessary | String | 上传图片 | 按钮文字内容 | | size | 非必须unnecessary | String | medium | 按钮大小,支持el系 medium / small / mini 三种大小 | | color_type | 非必须unnecessary | String | primary | 按钮颜色,支持el系 primary / success / warning / danger / info / text | | fields | 非必须unnecessary | Object | null | body请求体附带的fields字段 |

💥 标签Events 事件列表

|事件名称 |说明 |回调参数 | |---------|---------|---------| | selectX | autoUpload属性为false时,此事件存在 | 上传文件时选中的文件生成的数组,元素是文件formData对象 | |linkBase64| 当needCanvas和multiple属性同时存在时,此事件存在 | 是一个数组,元素是选中文件的Base64路径 |

❤️ ya-upload组件示例

<ya-upload
  @linkBase64="(val) => (Alinkimg1 = val)"
  :action="uploadNow"
  :afterUpload="uploadAfter"
  :btn_words="multiple ? (needCanvas ? '批量选择' : '批量上传') : '单个上传'"
  size="mini"
  :autoUpload="true"
  :needCanvas="needCanvas"
  :fields="{ type: '1', group_id: '4' }"
  :multiple="multiple"
/>
<script>
  export default {
    methods: {
      uploadNow(file, fields, thumb) {
        return new Promise((resolve, reject) => {
          let formData = new FormData();
          formData.append('thumbnail', thumb);
          formData.append('group_id', fields.group_id);
          formData.append('type', fields.type);
          formData.append('file', file[0]);
          this.$yian
            .axios({
              url: '/v2/qiniu/upload',
              method: 'post',
              params: formData,
              headers: { 'content-type': 'multipart/form-data' },
            })
            .then((res) => {
              resolve(res);
            })
            .catch((err) => {
              reject(err);
            });
        });
      },
      uploadAfter(res) {
        console.log(res);
      }      
    },
  };
</script>  

🚀🚀🚀 Usage Checkbox 组件

💥 标签attribute 属性列表

| 属性 | 可选性 | 类型 | 默认值 | 作用 | |---------|---------|---------|---------|---------| |selectData|必须|Array|——|已经被选择的内容Selected| |options|必须|Object|——|指定input原始标签绑定的value值,且请把图片的文字放入options的name或者title字段| |linkSrc|非必须|String|https://kodo.mboke.top/le-icon-folder.png|外链图片地址| |width|非必须|Number|84px|主盒子宽度| |height|非必须|Number|84px|主盒子长度| |srcWidth|非必须|Number|64px|链接图宽度| |srcHeight|非必须|Number|64px|链接图长度|

组件形态

💥 标签Events 事件列表

|事件名称 |说明 |回调参数 | |---------|---------|---------| |selectX | 当绑定的值value选中或取消发生变化时触发的事件 | 选中后的value |

❤️ ya-checkbox组件示例

<ya-checkbox
  @selectX="(val) => (selectMaterials = val)"
  :options="item"
  :selectData="selectMaterials"
  :linkSrc="item.type === '1' ? item.url : item.thumbnail"
  :srcWidth="64"
  :srcHeight="64"
  :width="104"
  :height="104"
></ya-checkbox>

License

MIT

Copyright (c) 2021-present, Marhoo