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

@tool-developer/wx-app

v0.0.6-canary.6

Published

wx miniprogram app

Downloads

2

Readme

@tool-developer/wx-app

在微信原生方法上进行扩展

用法

安装

npm install --save @tool-developer/wx-app

or

yarn add @tool-developer/wx-app

引入

app.js

import wxapp from '@tool-developer/wx-app'
//
const options = wxapp.extend(wxapp,{
  App:wxapp,// 方便子页面直接通过app.App获取扩展方法
})
//
App(options);

pages/main.js

const app = getApp();
const page = app.extend(app.App,{
  // ...
});
//
Page(page);

扩展说明

通过拷贝方式进行扩展,扩展后的属性和方法,可以直接通过this访问。

version

扩展库版本

events

自定义事件,配合bindEvent使用

首先,通过bindEvent在*.wxml文件中具体的事件关联,通过data-event,data-id,id进行事件区分。 main.wxml

<view bindtap="bindEvent" data-eventid="click">点击<view>

然后,在*.js中通过events关联真是的事件处理。 main.js

{
  events:{
    'tap #click':'toClick'
  },
  toClick(e){
    // 真是点击事件处理
  }
}

data

微信数据扩展

i18n

多国语提示文字扩展,内部通过i18nHandle转换处理

i18n:{
  'authorize.title':'授权提示',
  'authorize.content':'{authorize.appName}需要您授权{authorize.scopeName},点击确定前去设置',
  'authorize.loading':'正在授权...',
  'authorize.cancel':'取消授权',
  'authorize.success':'已授权'
}

TabBarList

当钱tabBar list配置pagePath数组,

this.go处理流程中会自动识别跳转path是否在该配置中,采取不一致的处理。

wxapp.TabBarList = [
  'pages/index/index',
  'pages/mine/index'
];

PageNamePathKV

页面名字路径映射,方便直接通过name对应路径。

wxapp.PageNamePathKV = {
  'webview':'pages/webview/index'
}

配置之后,可以直接通过name调用。

this.go('webview')

页面跳转

qs(path,query,encode)

qs(query,encode)

路径path,参数query处理,小程序query要求是字符串,而非对象

pageTo(url,type,cb)

针对'navigateTo', 'switchTab', 'redirectTo', 'reLaunch'方法,提供一致的处理。

除了pageTo方法,switchTab提供同名switchTo,reLaunch提供同名reLaunchTo方法。

| type | 说明 | | :-- | :-- | | navigate | 对应navigateTo | | switch | 对应switchTab | | redirect | 对应redirectTo | | reLaunch | 对应reLaunch |

go(page,query,type,cb)

页面跳转流程处理

内部处理了path跳转的方式(type+tabBar list)

内部还处理了query参数传递过程中的编码,以及路径转换

内部还支持webview跳转处理,直接传递http打头的path,会进入webview,默认webview路径是:pages/webview/index,如果有调整,可在PageNamePathKV中配置。

具体可参考TabBarListPageNamePathKV

back(delta)

返回,调用wx.navigateBack

多语言处理

i18nHandle(str,data)

支持动态数据替换处理,动态字段通过{}进行包裹。

i18n:{
  'authorize.title':'授权提示',
  'authorize.content':'{authorize.appName}需要您授权{authorize.scopeName},点击确定前去设置',
}
  i18nHandle('authorize.content',{
    appName,
    scopeName
  })

数据处理相关

dataset(key,e)

通过dataset方便获取绑定的data-*数据。

  // tap event
  // e
  //
  const name = this.dataset('name',e);

$set(data,callback)

延时setData方法,内部默认有延时100,可以通过SET_DATA_FREQUENCY修改。

app.js/main.js

{
  SET_DATA_FREQUENCY:200
}

事件相关

bindEvent

默认将bindEvent绑定到*.xwml文件中的对象标签上,通过标签的data-eventid,data-id,id,以及事件type进行区分。

内部会进行真实事件调用处理,具体见events

bindEvents

内部还提供了一个bindEvents,如果配置有该方法,所有的事件调用,都会先调用该方法。

bindTelEvent

拨打电话处理,电话号码通过data-tel传入,不传入号码,或者通过data-not-allowed可控制是否允许拨打电话。

如果有配置,不允许拨打电话时,会调用bindTelNotAllow方法。

如果有配置,允许拨打电话,会调用bindTelEventCallback方法(拨打之前调用,不是拨打成功之后回调)。

微信设置相关

getWxSetting(callback)

内部调用wx.getSetting方法,通过callback(null,setting)返回

  this.getWxSetting((err,setting)=>{
    //
  })

authorize(options, callback)

微信setting授权调用处理,参考wx.authorize

内部首先会调用是否授权处理,然后发起授权流程

this.authorize({
  scope,
  scopeName,
  appName
})

scope参考scope列表

可以使用其中的描述,作为scopeName,appName为当前应用名。

getWxUserInfoAuthorize(callback)

用户是否授权登录

this.getWxUserInfoAuthorize((err,isAuth)=>{
  // true,已授权
})

提示相关

hideLoading()

隐藏loading提示

showLoading(options,mask)

显示loading提示

showToast(options, icon, duration)

toast提示处理

可以通过i18n处理error提示图标

i18n:{
  'toast.icon.error':'./assets/images/error.png'
}
this.showToast('提示内容')
this.showToast('提示内容','success')
this.showToast({
  title:"提示内容"
})
this.showToast({
  title:"提示内容",
  icon:"success"
})
this.showToast({
  title:"提示内容",
  image:"./assets/images/success.png"
})

hideToast()

showModal(options, title)

modal弹框提示,内部做了约束处理,一次只能出现一个modal弹框。

this.showModal({
  content,
  title,
  complete,
  fail
})

使用参考:wx.showModal

其他扩展

getWxCurrentOptions()

获取当前页面options

getWxCurrentPage()

获取当前页面路由地址

scrollToEl(el,duration)

滚动到元素位置