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

@sureking/mp

v1.0.11

Published

微信小程序开发框架。实现单文件开发模式,支持ES7以上语法和集成GraphQL工具包

Downloads

4

Readme

@sureking/mp 使用说明

介绍

微信小程序开发框架。实现单文件开发模式,支持ES7以上语法和集成GraphQL工具包

(目前属于实验阶段,仅支持pug模版引擎、javascript和sass/scss样式语言)

安装

npm i @sureking/mp --save-dev

使用

项目入口文件引入@sureking/mp进行小程序项目构建

require('@sureking/mp')({
  src: 'src', // 小程序源代码目录,默认 src
  dist: 'weapp', // 小程序编译后输出目录,默认 weapp
  appid: 'appid', // 小程序appid -必填
  projectName: 'mp' // 小程序项目名称 -必填
  devDefine: { // 定义开发模式下的编译变量
    BASE_URL: 'http://localhost:1025' // 使用内置网络工具(上传工具、微信接口工具、Graphql工具)和当前为serve模式时必填
  },
  prodDefine: { // 定义生产模式下的编译变量
    BASE_URL: 'https://api.sureking.cn' // 使用内置网络工具(上传工具、微信接口工具、Graphql 工具)和当前为 build 模式时必填
  }
})

使用编译变量

define.BASE_URL //根据模式自动使用devDefine或prodDefine中定义的变量值

模版文件开发指南

模版文件采用mp后缀,其他后缀均不能被模版解析器识别,如: home.mp

mp文件是小程序开发时的最重要文件,分别定义视图、配置、脚本、样式

  • 视图定义, 编译后输出为wxml文件
<template lang="pug">
  .container 这是一个测试页面
</template>
  • 配置定义,编译后输出为json文件
<config>
{
  usingComponents: {
    navigation: '../components/navigation'
  }
}
</config>
  • 脚本定义, 编译后输出为js文件,基于小程序原生api实现,支持es7以上语法
<script>
import api from './api'
Page({
  data:{
    text: ''
  },
  onLoad(){
    this.setData({
      text: 'foo'
    })
  }
})
</script>
  • 样式定义,编译后输出为wxss文件,仅支持sass/scss
<style lang="sass">
@import './color'
page
	font-size: 16px
.container
	height: 100%
	display: flex
	flex-direction: column
	align-items: center
	justify-content: space-between
	box-sizing: border-box
</style>

基础对象扩展 API

Date 对象扩展属性

日期格式化

方法

Format(fmt:String):String

参数

  • fmt 格式化模版 y-年 M-月 d-日 h-小时 m-分 s-秒 S-毫秒 q-季度

返回值:格式化后的 String

new Date().Format('yyyy-MM-dd hh:mm:ss.SSS q')

日期计算器

方法

Calc(year:Number,month:Number,day:Number):Date

参数

  • year 计算距离年数,增加为正数,减少为负数,不计算时取值 0
  • month 计算距离月数,增加为正数,减少为负数,不计算时取值 0
  • day 计算距离天数,增加为正数,减少为负数,不计算时取值 0

返回值:Date 计算后的日期

new Date().Calc(1,2,3) // 计算未来1年零2个月3天
new Date().Calc(0,0,-3) // 计算过去3天

Date 转 String,格式为 yyyy-MM-dd

方法

Date(year?:Number,month?:Number,day?:Number):String

参数

  • year 计算距离年数,增加为正数,减少为负数,不计算时取值 0
  • month 计算距离月数,增加为正数,减少为负数,不计算时取值 0
  • day 计算距离天数,增加为正数,减少为负数,不计算时取值 0

返回值:String 计算后经格式化的日期

new Date().Date(1,0,0) // 返回一年后的今天,按yyyy-MM-dd格式输出

Date 转 String,格式为 yyyy-MM-dd hh:mm:ss

方法

DateTime(year?:Number,month?:Number,day?:Number):String

参数

  • year 计算距离年数,增加为正数,减少为负数,不计算时取值 0
  • month 计算距离月数,增加为正数,减少为负数,不计算时取值 0
  • day 计算距离天数,增加为正数,减少为负数,不计算时取值 0

返回值:String 计算后经格式化的日期时间

new Date().DateTime(1,0,0) // 返回一年后的今天,按yyyy-MM-dd hh:mm:ss格式输出

Date 转 String,格式为 hh:mm:ss

方法

Time():String

参数:无

返回值:String 经格式化的时间

new Date().Time() // 返回当前时间,按hh:mm:ss格式输出

月数计算器

方法

MonthDiff(reference:String):Number

参数

  • reference 对比日期时间,支持 yyyy-MM-dd hh:mm:ss 格式或 yyyy-MM-dd 格式,参数为空时与当前日期时间比较

返回值: Number 相隔月数

// 计算2020年1月10日距离今天有多少月
new Date('2020-01-10').MonthDiff()

// 计算2020年1月10日距离2020年5月30日有多少月
new Date('2020-01-10').MonthDiff('2020-05-30')

String 对象扩展属性

等位前补零

方法

prefix(digit:Number):String

参数

  • digit 数位

返回值:String 补零后的字符串

'1'.prefix(5) // 返回00001

发起 Graphql 请求

方法

graphql(args:Object):Promise<Any>

参数

  • args 发送 graphql 请求参数

返回值:Promise<Any> graphql 服务器响应的对象

const query = `[email protected]>>UserInput->data{page size length data{name age mobile gender area}}`
query.graphql({page:1,size:10}).then(user=>{
  // user
})
  • graphql 查询采用 gqlx 语法,语法结构:
  • [query/mutation]@[服务端解决器名称].[服务端执行方法名称]>>[输入类型]->[返回格式]

发起微信api请求

方法

wechat(data:Object, method:String):Promise<Any>

参数

  • data 发送请求对象
  • method 发送方法,默认为:'GET'

返回值:Promise<Any> 服务器响应的对象

'orders.pay'.wechat({
  order_no: 'xxxxxxxx',
  openid: 'xxxxxxxxxxxxxx',
  total_fee: 3000
},'POST').then(res=>{
  ....
})

获取服务器文件

方法

file():String

参数:无

返回值:String,服务器文件地址

'xxxxxxxxxx'.file()

富文本转义,使富文本在小程序可以正常显示

方法

rich():String

参数:无

返回值:String,转义后的富文本,可在rich-text组件显示

'xxxxxxxxxx'.rich()

全局变量操作

方法

global(object:Any):void

global():Any

参数

  • object 待设置到全局的值,设置全局变量操作时需要

返回值:void | Any, 设置全局变量操作时没有返回值,获取全局变量操作时返回该变量的值

'userInfo'.global({name:'张三'})

console.info('userInfo'.global()) // 输出: {name:'张三'}

Number 对象扩展属性

千位分隔格式化,并保留两位小数

方法

thou():String

参数:无

返回值:String,格式化后的字符串

console.info(1000.thou()) // 输出:1,000.00

Array 对象扩展属性

数组分组

方法

GroupBy(c:Function):Object

参数

  • c 分组方法,方法返回值为 String,作为分组依据

返回值:Object 分组对象

const goods = [
  {category:'A',name:'商品 1'},
  {category:'A',name:'商品 2'},
  {category:'A',name:'商品 3'},
  {category:'B',name:'商品 4'},
  {category:'B',name:'商品 5'},
  {category:'B',name:'商品 6'}
]
const group = goods.GroupBy(item=>item.category)

/**
  group的值为
  {
    A: [
        {category:'A',name:'商品 1'},
        {category:'A',name:'商品 2'},
        {category:'A',name:'商品 3'}
      ]
    B: [
        {category:'B',name:'商品 4'},
        {category:'B',name:'商品 5'},
        {category:'B',name:'商品 6'}
      ]
  }
*/