aed054a7c1a1c3bd3e2a35e795c483b5533c0d21d661615f0b53b175a429a2c427bee6495c1ec605cfa7cd1c94dabe0f6394e68ecb0b5f01111d580c4a67f7 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. # vue3-sketch-ruler
  2. > 在使用vue3/vue2中,用于页面展示的缩放操作
  3. [![](https://camo.githubusercontent.com/28479a7a834310a667f36760a27283f7389e864a/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f76322d646174657069636b65722e737667)](https://camo.githubusercontent.com/28479a7a834310a667f36760a27283f7389e864a/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f76322d646174657069636b65722e737667) [![build status](https://github.com/kakajun/vue3-sketch-ruler/actions/workflows/gh-pages.yml/badge.svg?branch=1x)](https://github.com/kakajun/vue3-sketch-ruler/actions/workflows/gh-pages.yml)
  4. 简体中文 | [English](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/README.md)
  5. 时隔半年,重启mater的新版开发, 大家有兴趣的可以加我微信: ka132300 拉入群, 大家一起讨论
  6. 效果图如下
  7. ![image](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/newruler.png)
  8. 🚀 Features
  9. --
  10. - 💪 Vue 3 Composition API
  11. - 🔥 Written in TypeScript
  12. - 🔋 SSR Friendly
  13. - 💡 works for both Vue.js 2/3.
  14. # Vue 3 + Vite + ts 打包sketchRuler
  15. ## 说明
  16. ---
  17. 插件应用范围: 适合作为低代码平台操作页面缩放工具,比如做图工具如, 大屏可视化, 做图工具图怪兽等,类似ps的缩放效果.
  18. 使用vue-demi, 一套代码,打包两个环境的插件, 同时支持vue2和vue3中进行使用(在npm安装插件时,会自动判断载入对应vue版本的代码)
  19. 应用案例: [avue大屏可视化工具](https://data.avuejs.com/build/1)
  20. ![image](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/example/v2/assets/dp.png)
  21. 由于项目升级成vite, 发现原来的插件vue-sketch-ruler,用到vue3中会报错, 这边我重新用vite打包了一份, 打包后的插件和原来功一样, 且支持在vue3和vite中使用
  22. 这边对原代码进行了改进优化,功能目前和之前vue3-sketch-ruler一样,还没时间优化,主要改进分为以下几点
  23. 1. vue3的eslint修复和styleLint和pretty的代码格式化,支持适应vue3中使用sketchRuler,同时改写为vue3 Composition API 的写法
  24. 2. 用typerscript进行重构,对类型进行定义,同时方便后续扩展
  25. 3. 对shadow和palette参数进行对象合并计算,在以前palette的参数要么都传,要么不传,我这里改进后可以只传需要修改的属性即可,没有修改的可以不传
  26. 4. 对类型进行打包设置(支持ts类型提示)
  27. 5. 支持Nuxt3插件引入(已经处理了window没有定义的报错)
  28. 升级过程简单写了一篇掘金文章, 同行或感兴趣的可以留言交流
  29. [掘金:大屏页面缩放插件---升级改造](https://juejin.cn/post/7025195450080690212)
  30. ## 注意
  31. 1. 该插件如果在vue2/vue3中使用, 需要配套安装vue-demi插件, 本插件没有打包vue-demi, 另外vue-demi只有18.2 kB,非常小,仅做了vue版本切换作用,
  32. 这里1X版本和vue-sketch-ruler 一样功能, 后面没有什么bug的话,不再维护, 1x基本不动原有功能,需要下载源码的, 或者提pr的, 请下载1x分支, 新功能将会在未来2X中增加,老工程迁移过来的建议使用1x版本, 新项目建议使用2X,做到0配置(2x难产中, 写了好几个版本觉得不够满意, 不过这个一定会出来的, 雏形已经传到master分支)
  33. ## demo
  34. 案例浏览: [https://kakajun.github.io/vue3-sketch-ruler/1x](https://kakajun.github.io/vue3-sketch-ruler/1x)
  35. ![image](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/example/assets/demo.png)
  36. ## 安装
  37. > 支持全局导入和模块导入
  38. vue3
  39. ```
  40. npm install --save vue3-sketch-ruler vue-demi
  41. or
  42. yarn add vue3-sketch-ruler vue-demi -S
  43. ```
  44. vue2
  45. ```
  46. npm install --save vue3-sketch-ruler vue-demi @vue/composition-api
  47. or
  48. yarn add vue3-sketch-ruler vue-demi @vue/composition-api -S
  49. ```
  50. ## 引入方式
  51. 将打包后的dist包拷贝,用import导入,支持下面两种引用方式
  52. ```
  53. import { SketchRule } from 'vue3-sketch-ruler'
  54. import 'vue3-sketch-ruler/lib/style.css'
  55. components: { SketchRule }
  56. ```
  57. 也可以是这样子
  58. ```
  59. import SketchRule from 'vue3-sketch-ruler'
  60. import 'vue3-sketch-ruler/lib/style.css'
  61. components: SketchRule
  62. ```
  63. ## 支持的功能
  64. - [x] 标尺渲染
  65. - [x] 缩放内容,重绘标尺
  66. - [x] 滚动内容,重绘标尺
  67. - [x] 切换标尺状态,显示或隐藏
  68. - [x] 参考线管理(增加删除)
  69. - [x] 支持参考线任意地方拖拽
  70. - [x] 左上角的眼睛,点击能控制红线显影
  71. - [x] vue2/vue3 中通用本插件
  72. ## 未来支持的功能
  73. - [] 加入画布鼠标拖动功能
  74. - [] 右下角有个鼠标进入缩放小功能
  75. - [] 加入单元测试功能
  76. 这是个开源业余做的功能,有兴趣加强该插件的小伙伴欢迎加入,也欢迎大家提pr或者issue
  77. ## 使用
  78. ```
  79. <template>
  80. <SketchRule
  81. :thick="thick"
  82. :scale="scale"
  83. :width="582"
  84. :height="482"
  85. :startX="startX"
  86. :startY="startY"
  87. :shadow="shadow"
  88. :lines="lines"
  89. >
  90. </template>
  91. <script>
  92. import Vue from 'vue';
  93. import {SketchRule} from "vue-sketch-ruler";
  94. import 'vue3-sketch-ruler/lib/style.css'
  95. const rectWidth = 160;
  96. const rectHeight = 200;
  97. export default {
  98. data() {
  99. return {
  100. scale: 2, //658813476562495, //1,
  101. startX: 0,
  102. startY: 0,
  103. lines: {
  104. h: [100, 200],
  105. v: [100, 200]
  106. },
  107. thick: 20,
  108. isShowRuler: true,
  109. isShowReferLine: true
  110. }
  111. },
  112. components: {
  113. SketchRule
  114. }
  115. });
  116. </script>
  117. ```
  118. 参考一个完整的例子,[点击这里](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/example/v3/components/user-ruler.vue)
  119. vue3 api 的例子,[点击这里](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/example/v3/components/user-rulerts.vue)
  120. Nuxt3 中使用例子 [点击这里](https://github.com/kakajun/vue3-sketch-ruler/blob/1x/example/v3/components/Nuxt3.vue)
  121. ## api
  122. ### 属性
  123. | 属性名称| 描述 | 类型 | 默认值 |
  124. | --- | --- | --- | --- |
  125. | scale | 初始化标尺的缩放 | Number | 2 |
  126. | thick | 标尺的厚度 | Number | 16 |
  127. | width | 放置标尺窗口的宽度 | Number | - |
  128. | height | 放置标尺窗口的高度 | Number | - |
  129. | startX | x轴标尺开始的坐标数值 | Number | 0 |
  130. | startY | y轴标尺开始的坐标数值 | Number | 0 |
  131. | shadow | 阴影的参数 | Shadow | 0 |
  132. | lines | 初始化水平标尺上的参考线 | object<Array> | {h:[],v:[]} |
  133. | palette | 标尺的样式配置参数 | Palette | 如下|
  134. palette:{bgColor: 'rgba(225,225,225, 0)',longfgColor: '#BABBBC',shortfgColor: '#C8CDD0',fontColor: '#7D8694', shadowColor: '#E8E8E8',lineColor: '#EB5648', borderColor: '#DADADC',cornerActiveColor: 'rgb(235, 86, 72, 0.6)',}
  135. ### 更新说明
  136. v1.1.11
  137. 1. 废弃掉 :horLineArr="lines.h" 和 :verLineArr="lines.v" 统一整合为lines对象传入,回调handleLine也废弃掉, 没什么用,如果不想要lines,就直接让lines={}
  138. 2. 干掉一些没用的样式(是真没用,之前的工程也没用,我只是翻过来没用仔细研究代码,所以不会影响之前迁移的项目)
  139. v1.2.3
  140. 1. 把方法进行合并,干掉一些不必要的事件,采用v-model传递参数,优化代码
  141. 2. 把lodash去掉,原打包体积由43k减少到19.6k, 稳定版,强烈推荐升级
  142. v1.2.5
  143. 1. 处理window位置,防止Nuxt在服务端渲染时报错, 支持Nuxt3中正常使用
  144. v1.3.1
  145. 1. 使用vue-demi 做到vue2/vue3中能同时使用
  146. v1.3.4
  147. 全部更新vue的各种插件
  148. 感悟: 时隔这么久, 在更新版本时还是不那么顺利切换vue, 就是说vue2和vue3再互相切换中, 还是会有不知名的bug, 来验证我是否打包正确了, 或者切换版本正确了, 还有些小伙伴也和我有同样的困惑, 发邮件问我, 为此我另外又建了一个工程, vue2-sketch-ruler 可以在我工程里面找到, 这个里面的代码和这边是一样的, 版本插件也一样, 能够跑起来, 验证vue3代码打包成vue2能使用的插件, 如果大家还是有相同的困惑也像我这样子验证一下
  149. 当我确定能够行的通时, 那么只需要运行npm run build 那么两个版本的代码都打包好了
  150. 注意事项:
  151. 1. 由于vue2打包不支持script标签中直接写setup, 本来我都已经升级了setup方式能减少很多代码, 但打包v2报错, 无赖我又只能还原回去, 不知道后面 @vue/composition-api 会不会支持这种打包方式,目前我已经更新到了最新的1.6.2, 依然不支持,等后面再关注!
  152. ### Event
  153. | 事件名称 | 描述 | 回调参数 |
  154. | --- | --- | --- |
  155. | onCornerClick | 左上角点击事件 | |
  156. ## 引用
  157. vue标尺组件 [vue-sketch-ruler](https://github.com/chuxiaoguo/vue-sketch-ruler.git)
  158. 一个来自墨刀的react标尺组件 [mb-sketch-ruler](https://github.com/mockingbot/mb-sketch-ruler) .