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

jsl-vue-h5

v0.0.20

Published

some Vue.js plugins for mobile H5 development

Downloads

6

Readme

a JasonLiao project: jsl-vue-h5

自己纯手工打造的一些轮子:ferris_wheel:,一个vue的H5插件库, 按照375px宽度的UI图构建, 会转换为vw, 可按需引入,welcome npm install and happy hacking ~:relaxed:

npm site: https://www.npmjs.com/package/jsl-vue-h5

demo online: https://8bulbs.github.io/jsl-vue-h5-demo-online/

code demo: https://github.com/8bulbs/jsl-vue-h5-demo

install

$ npm install jsl-vue-h5 --save

import and use it

// main.js
import {
  JslAvatar,
  JslBtnScalableJump,
  JslButton,
  JslClose,
  JslGrid,
  JslGridItem,
  JslLoading,
  JslNavBar,
  JslNomoreTip,
  JslToast
} from 'jsl-vue-h5'
import 'jsl-vue-h5/dist/jsl-vue-h5.min.css'

Vue.use(JslAvatar)
Vue.use(JslBtnScalableJump)
Vue.use(JslButton)
Vue.use(JslClose)
Vue.use(JslGrid)
Vue.use(JslGridItem)
Vue.use(JslLoading)
Vue.use(JslNavBar)
Vue.use(JslNomoreTip)
Vue.use(JslToast)

// jsl-loading-demo.vue
<template>
 <div class="root">
   <jsl-loading />
 </div>
</template>

documentation

jsl-toast

this.$jsl.toast(text, position, duaration)

| params | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | text | String | toast内容 | 'toast' | | position | String | toast位置, 可选 'top', 'middle', 'bottom' | 'middle' | | duartion | Number | toast展示的毫秒数 | 2500 |

<template>
  <div class="toast-demo-root">
    <jsl-button
      class="toast-demo-btn"
      v-for="(item, index) in btnList"
      :text="item.position + ' ' + item.duartion + 'ms'"
      :key="index + 'toast-demo-item'"
      @click.native="$jsl.toast(item.position + ' ' + item.duartion + 'ms', item.position, item.duartion)"
    />
  </div>
</template>


<script type="text/ecmascript-6">

export default {
  data () {
    return {
      btnList: [
        {
          position: 'top',
          duartion: 3500
        },
        {
          position: 'middle',
          duartion: 2500
        },
        {
          position: 'bottom',
          duartion: 1500
        }
      ]
    }
  }
}
</script>

jsl-grid

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | width | Number | 栅格组件的宽 | 375 | | height | Number | 栅格组件的高 | 375 | | row | Number | 栅格组件的行数 | 4 | | column | Number | 栅格组件的列数 | 5 |

demo code

<template>
 <div class="grid-demo-root">
    <jsl-grid
      class="grid"
      :row="3"
      :column="3"
    >
      <jsl-grid-item
        v-for="(item, index) in list9"
        :key="index + 'grid-demo-item-1'"
      >
        <div>{{ index }}</div>
      </jsl-grid-item>
    </jsl-grid>
    <jsl-grid
      class="grid"
    >
      <jsl-grid-item
        v-for="(item, index) in list20"
        :key="index + 'grid-demo-item-2'"
      >
        <div>{{ index }}</div>
      </jsl-grid-item>
    </jsl-grid>
 </div>
</template>


<script type="text/ecmascript-6">

export default {
  data () {
    return {
      list9: Array(9),
      list20: Array(20)
    }
  }
}
</script>

jsl-btn-scalable-jump

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | toPage | undefined | 若为Number, 则go(num), 若为String, 则push此路由 | 375 | | query | Object | 路由跳转携带的参数对象, 会拼接为查询字符串 | undefined | | text | String | 按钮的文字 | 'btn-scalable-jump' | | fontSize | Number | 按钮的文字大小 | 14 | | color | String | 按钮的文字颜色 | 14 | | bgImg | String | 按钮的背景图 | undefined | | bgColor | String | 按钮的背景颜色 | '#517DF7' | | radius | Number | 按钮的边框倒角弧度 | 12 | | width | Number | 按钮的宽度 | 200 | | height | Number | 按钮的高度 | 50 | | lineHeight | Number | 按钮的文字行度 | 50 | | top | Number | 按钮绝对定位的top值 | 50 | | left | Number | 按钮绝对定位的lef值 | window.Number((375 / 2).toFixed(5)) |

demo code

<template>
 <div class="btn-scalable-jump-demo-root">
   <jsl-btn-scalable-jump
    class="btn"
    v-for="(item, index) in btnList"
    :key="index + 'select'"
    :toPage="item.toPage"
    :query="item.query"
    :top="item.top"
    :text="'to'+ ' ' + item.toPage"
   />
 </div>
</template>

<script type="text/ecmascript-6">

export default {
  data () {
    return {
      btnList: [
        {
          top: 50,
          toPage: -1
        },
        {
          top: 250,
          toPage: 'grid-demo',
          query: {
            id: '123abc'
          }
        },
        {
          top: 450,
          toPage: 'button-demo'
        }
      ]
    }
  }
}
</script>

jsl-avatar

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | size | Number | 头像的尺寸 | 25 | | img | String | 头像的图片链接 | 'https://avatars2.githubusercontent.com/u/31515577?s=460&v=4' |

demo code

<template>
  <div class="avatar-demo-root">
    <jsl-avatar class="avatar" />
    <jsl-avatar class="avatar" size="55" />
  </div>
</template>

jsl-button

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | width | Number | 按钮宽度 | 375 | | height | Number | 按钮高度 | 57 | | radius | Number | 按钮边框倒角弧度 | 30 | | text | String | 按钮文字 | '按钮' | | color | String | 按钮文字颜色 | '#FCFCFC' | | fontSize | Number | 按钮文字大小 | 16 | | bgColor | String | 按钮背景颜色 | '#517DF7' |

demo code

<template>
  <div class="button-demo-root">
    <jsl-button
      class="btn"
      text="button"
    />
    <jsl-button
      class="btn"
      color="red"
      bgColor="green"
    />
    <jsl-button
      class="btn"
      color="#000"
      bgColor="#f00"
      radius="10"
      height="37"
    />
  </div>
</template>

jsl-close

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | size | Number | 关闭图标尺寸 | 15 | | circle | Boolean | 关闭图标是否带圆圈 | false |

demo code

<template>
  <div class="close-demo-root">
    <jsl-close class="close" />
    <jsl-close
      class="close"
      circle
      size="55"
    />
  </div>
</template>

jsl-loading

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | rootWidth | Number | 组件的宽度 | 250 | | rootHeight | Number | 组件的高度 | 250 | | rootTop | Number | 组件相对已定位父级的top | 157 | | imgUrl | String | 图片资源 | 经典的菊花图 | | imgSize | Number | 图片的高宽 | 35 | | imgMargin | String | 图片的margin | '5vw auto' | | infoContent | String | 文字信息 | '正在加载数据...' | | infoColor | String | 文字颜色 | '#333' | | infoFontSize | Number | 文字大小 | 14 | | infoHeight | Number | 文字高度 | 25 | | infoLineHeight | Number | 文字行高 | 25 |

demo code


<template>
 <div class="loading-demo-root">
   <jsl-loading imgSize="25"/>
 </div>
</template>

jsl-nav-bar

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | title | String | 导航条的标题 | '导航条' |

demo code

<template>
 <div class="navbar-demo-root">
   <jsl-nav-bar/>
 </div>
</template>

jsl-nomore-tip

API

| props | type | remark | default value | |:-----:|:----:|:------:|:-------------:| | text | String | 文字内容 | '亲,我们是有底线的哦~' | | lineWidth | Number | 细线的长度 | 34 |

demo code

<template>
  <div class="nomore-tip-demo-root">
    <jsl-nomore-tip class="demo" />
    <jsl-nomore-tip
      class="demo"
      text="这是我的底线"
      lineWidth="100"
    />
  </div>
</template>

开发与发布的爬坑姿势

生产时入口文件 src/components/index.js

import 'styles/components/index'

import loadingComponent from './loading/loading'

export const JslLoading = {
  install: function (Vue) {
    if (typeof window !== 'undefined' && window.Vue) {
      Vue = window.Vue
    }
    Vue.component('JslLoading', loadingComponent)
  }
}

export default {
  JslLoading
}

webpack prod entry config

const entryConfig = {
  app: resolve('src/components/index.js')
}

webpack prod output config

const outputConfig = {
  path: resolve('dist'),
  publicPath: '',
  filename: 'jsl-vue-h5.min.js',
  library: 'JslVueH5',
  libraryTarget: 'umd',
  umdNamedDefine: true
}

webpack prod externals config

const externals = {
  vue: {
    root: 'Vue',
    commonjs: 'vue',
    commonjs2: 'vue',
    amd: 'vue'
  }
}

webpack prod plugin config

const prodPlugins = [
  new MiniCssExtractPlugin({
    filename: 'jsl-vue-h5.min.css'
  })
]

package.json配置如下

{
  "name": "jsl-vue-h5",
  "version": "0.0.8",
  "description": "some Vue.js components and plugins for mobile H5 development",
  "author": "8bulbs <[email protected]>",
  "private": false,
  "main": "dist/jsl-vue-h5.min.js",
    "repository": {
    "type": "git",
    "url": "git+https://github.com/8bulbs/jsl-vue-h5.git"
  },
  "files": [
    "dist",
    "src"
  ],
  "keywords": [
    "vue",
    "h5",
    "mobile",
    "wechat",
    "loading"
  ],
  "license": "MIT",
  "homepage": "https://github.com/8bulbs/jsl-vue-h5.git#readme",
  // "scripts": { ... },
  // "dependencies": { ... },
  // "devDependencies": { ... }
}

本地开发完成后

# 打包
$ npm run build
# 生成 .tgz 文件
$ npm pack

若npm源为淘宝镜像, 需要切换源为 https://registry.npmjs.org/

# 查看npm源
$ npm config list

# 若为淘宝镜像
$ npm config rm registry

需要先注册登录npm, 再发布

# 登录, 填写用户名, 密码, 邮箱
$ npm login

# 发布
$ npm publish

每次发布时, 需要使用新的版本号, 修改package.json里的version, 或者删除之前的版本号再发布

tip: webpack config

// dev config > module > rules
// rules: [
// ...
  {
    test: /\.css$/,
    use: [
      {
        loader: 'style-loader'
      },
      {
        loader: 'css-loader'
        // options: {
        //   modules: false
        // }
      }
    ]
  }
// ...
// ]