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

share-poster-webapp

v1.0.1

Published

Is just a tool, used to handle small canvas of the program

Downloads

1

Readme

技术文档


该文档现在支持:

  • 文字 data-type ='text'
  • 图片 data-type ='image'
  • 圆角图片 data-type='radius-image'
  • 背景图片 data-type='background-image'

使用文档:(示例可见/wxminiprogram/main/components/dialog/ConvertTextToPicture/index.js)

///建议宽高设置成
let query = this.createSelectorQuery();
if (!query) {
  return;
}
query.select("#convert-to-picture-container").boundingClientRect();
query.exec((res) => {
  if (res && res.length) {
    const { width = 0, height = 0 } = res[0] || {};
  }
});

// ***
// your logic
// ***
this.drawImage = new Wxml2Canvas({
  width,
  height,
  obj: this,
  borderRadius: 12,
  element: "squareCanvas",
  finish(coverImage) {
    wx.hideLoading();
    // 这里的this 指向内部
  },
  error() {},
});
this.drawImage.draw(
  {
    type: "wxml", //类型
    class: ".draw_canvas", //需要转视图的class
    limit: ".convert-to-picture-container", // 外层的box
    x: 0,
    y: 0,
  },
  this
);

wxml:

<view wx:elif="{{cardinfo && sid}}" class="share-topic-wrapper draw_share_canvas" style="background-image: url({{cover}})" data-type="background-image">
<view class="share-topic-container">
  <view class="share-works-form">
      <view class="share-works-form-label">
          <text class="draw_share_canvas" data-type="text" data-text="作">作</text>
          <text class="draw_share_canvas" data-type="text" data-text="者:">者:</text>
      </view>
      <view class="share-works-form-value">
          <image class="share-works-form-value-img draw_share_canvas" data-type="image"
                 data-url="{{cardinfo.author.avatar}}" src="{{cardinfo.author.avatar}}"></image>
          <text class="share-works-form-value-txt draw_share_canvas" data-type="text"
                data-text="{{cardinfo.author.nickName}}"
                data-lineClamp="{{1}}">{{cardinfo.author.nickName}}</text>
      </view>
  </view>
  <view class="share-works-form">
      <view class="share-works-form-label draw_share_canvas" data-type="text" data-text="资料大小:">
          资料大小:
      </view>
      <view class="share-works-form-value share-works-form-value1 draw_share_canvas"
            data-type="text"
            data-lineClamp="{{1}}"
            data-text="{{cardinfo.size}}">
          {{cardinfo.size}}
      </view>
  </view>
  <view class="share-works-form">
      <view class="share-works-form-label draw_share_canvas">
          <text class="draw_share_canvas" data-type="text" data-text="格">格</text>
          <text class="draw_share_canvas" data-type="text" data-text="式:">式:</text>
      </view>
      <view class="share-works-form-value share-works-form-value1">
          <image class="share-works-form-value-img draw_share_canvas" data-type="image"
                 data-url="{{cardinfo.img}}" src="{{cardinfo.img}}"></image>
          <text class="share-works-form-value-txt draw_share_canvas"
                data-type="text"
                data-text="{{cardinfo.type}}">{{cardinfo.type}}</text>
      </view>
  </view>
  <view class="share-works-tags" wx:if="{{cardinfo.tags && cardinfo.tags.length}}">
      <view class="share-works-tags-item draw_share_canvas"
            wx:for="{{cardinfo.tags}}"
            wx:key="index"
            data-type="text"
            data-text="{{item}}"
            data-maxwidth="{{320}}">
          {{item}}
      </view>
  </view>
  <view class="share-works-desc draw_share_canvas"
        data-type="text"
        data-text="{{cardinfo.description}}"
        data-lineClamp="{{3}}"
        wx:if="{{cardinfo.description}}">
      {{cardinfo.description}}
  </view>
</view>
</view>

技术方案

1、利用createSelectorQuery获取SelectorQuery对象

2、 NodesRef SelectorQuery.selectAll(string selector) 获取在当前页面下所有标记的选择器节点。获得NodesRef对象

3、 SelectorQuery NodesRef.fields(Object fields, NodesRef.FieldsCallback callback)获取节点的相关信息。需要获取的字段在fields中指定。返回值是 nodesRef 对应的selectorQuery。

4、 根据制定computedStyle的属性进行元素的排列 渲染。computed获取的属性

computedStyle获取的属性

图片

1、 用法

| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ----------------- | | data-type | String | 是 | 'image',矩形图片 | | data-url | String | 是 | 图片链接 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 |

2、 computed属性

| type | String | 是 | 'radius-image',声明为绘制圆形图片 | | ------------ | ------ | ---- | ------------------------------------------------------------ | | x | Number | 是 | 坐标x | | y | Number | 是 | 坐标y | | url | String | 是 | 图片链接,支持 http/https 及本地图片,域名需要在mp平台加入白名单 | | style | | | | | r | Number | 是 | 半径 | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 | | borderRadius | String | 否 | 圆角 |

圆形图片

1、 用法

| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ------------------------ | | data-type | String | 是 | 'radius-image',圆形图片 | | data-url | String | 是 | 图片链接 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 |

2、 computed属性

| type | String | 是 | 'radius-image',声明为绘制圆形图片 | | ------------ | ------ | ---- | ------------------------------------------------------------ | | x | Number | 是 | 坐标x | | y | Number | 是 | 坐标y | | url | String | 是 | 图片链接,支持 http/https 及本地图片,域名需要在mp平台加入白名单 | | style | | | | | r | Number | 是 | 半径 | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 | | borderRadius | String | 否 | 圆角 |

背景图片

| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ---------------------------- | | data-type | String | 是 | 'background-image',背景图片 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 |

文本:

1、 用法

| 属性 | 类型 | 是否必填 | 说明 | | --------------- | ------ | -------- | ----------------------------------- | | data-type | String | 是 | 'text',文本 | | data-text | String | 是 | 文本内容 | | data-left | Number | 否 | 修正横坐标位置 | | data-top | Number | 否 | 修正纵坐标位置 | | data-padding | String | 否 | 内边距,与style叠加 | | data-background | String | 否 | 背景色 | | data-lineClamp | Numer | 否 | 文本显示几行 | | data-endSuffix | String | 否 | 与lineClamp同步使用,用于末尾省略号 | | data-maxwidth | Number | 否 | 绘制的边界 |

2、 computed属性

| 属性 | 类型 | 是否必填 | 说明 | | ------------ | ------ | -------- | ------------------------------------------------------------ | | type | String | 是 | 'text',声明为绘制文本 | | x | Number | 是 | 坐标x | | y | Number | 是 | 坐标y | | text | String | 否 | 文本内容 | | style | | | | | width | Number | 否 | 文本最大宽,超过则换行 | | height | Number | 否 | 文本高度 | | color | String | 否 | 字体颜色 | | fontSize | Number | 否 | 字体大小,默认14 | | fontFamily | String | 否 | 字体样式 | | lineHeight | Number | 否 | 字体行高,默认14 * 1.2 | | fontWeight | String | 否 | 字体粗细,默认normal | | lineClamp | Number | 否 | 文字的最大行数,超出则用 ... 截取 | | whiteSpace | String | 否 | 是否换行,默认wrap,如果传入nowrap,则不换行 | | textAlign | String | 否 | 文本的水平对齐方式,默认left | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | background | String | 否 | 字体背景色 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 | | padding | String | 否 | 内边距,'10 10 10 10', 与css有区别,依次为左、上、右、下,可以不带单位 | | borderRadius | String | 否 | 圆角 |

矩形:

1、 用法

| 属性 | 类型 | 是否必填 | 说明 | | --------- | ------ | -------- | ------------ | | data-type | String | 是 | 'rect',文本 |

2、computed属性

| x | Number | 是 | 坐标x | | --------- | ---------------- | ---- | --------------------------------------------------------- | | y | Number | 是 | 坐标y | | style | | | | | width | Number | 是 | 宽 | | height | Number | 是 | 高 | | fill | String 或 Object | 否 | 填充颜色,支持渐变色 | | border | String | 否 | 边框,需要严格遵循 '10px dashed #540821' 格式 | | boxShadow | String | 否 | 阴影,需要严格遵循 '10 20 20 rgba(0, 0, 0, 0.4)' 格式 | | dash | Array | 否 | 虚线边框的间距和偏移 |

以上所有元素都能根据data-delay 属性来控制先后绘制的顺序