首页 > 其他分享 >实习二阶段总结

实习二阶段总结

时间:2024-06-06 14:34:08浏览次数:7  
标签:总结 uniapp vue 组件 watermarker 阶段 实习 data 页面

实习二阶段总结

这次干的活是将签字版生成的图片和网页的内容结合生成一张图片。

一、全局水印

本人了解过一点点小程序,但这次算是初次接触uniapp,说实话给我的印象非常糟糕。他先给我分配的任务是,在uniapp中的每个页面添加水印。本人初次接触水印,从网上搜一下其实不是很难。真正的难点是如何将水印全局使用。

本人多次使用一心,讯飞等ai得到的结果都是全局注册组件,然后页面单独引用,二十多个页面谁会给他一个个写标签啊。按照vue的固有想法是,只要将组件挂载到App.vue里就好了,但是uniapp好像是没有根组件,导致第一种思路走不通。网上找了第二种方法在main.js注册组件的时候,将他干到html的body中去.然而第二个让我感觉很**的地方出现了,uniapp不能获取document,也就是说,uniapp没有办法获取到dom对象,无论是原生js或者是ref,获取到的值都是undefined,微信小程序自带的方法没有办法获取到dom对象(至少我没办法)。只能够获取到dom的一些参数,来修改dom的样式之类的。网上还找到了一个方法,就是在vue.config.js里写入脚本,在每个page页面的第一个标签下加上组件的标签,但是这么写的问题是,项目是组件和页面写在一起了没有办法区分已有的页面和组件(我实在想不到怎么操作);

最后我找到了终极解决办法,思路是一个大佬的,就是使用vue-inset-loader,具体的做法是

  1. 先下载依赖vue-inset-loadernpm install vue-inset-loader

  2. 在unapp中创建vue.config.js页面,然后进行配置

    const path = require('path')
    
    module.exports = {
    	configureWebpack: {
    		module: {
    			rules: [{
    				test: /.vue$/,
    				use: {
    					loader: path.resolve(__dirname, "./node_modules/vue-inset-loader")
    				},
    			}]
    		},
    	}
    }
    
  3. main.js全局注册组件

    import watermarker from "@/components/waterMarker/waterMarker.vue"
    Vue.component('watermarker', watermarker);
    
  4. 在pages.json中进行配置

    	// wdstest
    	"insetLoader": {
    		//配置
    		"config": {
    			//将需要引入的组件名起了个confirm的名字在下面label中使用 右侧为需要插入的标签
    			"watermarker": "<watermarker />"
    		},
    		// 全局配置  
    		//需要挂在的组件名
    		"label": ["watermarker"],
    		//根元素的标签类型 也就是插入到页面哪个根元素下默认为div 但是uniapp中需要写为view
    		"rootEle": "view"
    	},
    
    "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
    		{
    			"path": "pages/kanban/main",
    			"style": {
    				"navigationBarTitleText": "业务看板",
                 //这两行是新加的配置   
    				"label": ["watermarker"],
    				"rootEle": "view"
    			}
    		},
        .....//下面还有其他页面的配置
    

    在第一个页面启动页面上增加配置.。

这样就能够实现所有页面添加水印的效果了。(非常好用)

二、签字板

签字板其实并不难,主要是恶心,(其实最后的实现效果个人认为很拉胯。)这里主管推荐我使用html2canvas,但是这个东西需要用到dom对象,但是uniapp尴尬在没有办法获取dom对象。所以这里又找了wxml2canvas进行编写。

首先canvas画一个签字板就不说什么了。将canvas里的内容生成图片也不说了。

代码是我网上抄的,主要是因为用自己的代码一直在出问题,只好借来大佬的代码进行更改

						<view class="share__canvas share__canvas1 " style="position: absolute; left: 10086px;">
							<view class="share__canvas1-text draw_canvas" data-type="text" data-text="这里填写相关信息">这里填写相关信息
							</view>
							<image class="share__canvas2-image draw_canvas" :src="tempimg" data-type="image"
								:data-url="tempimg">
							</image>
						</view>
						<canvas canvas-id="canvas1"
							style="width: 330px;height: 240px;position: absolute; left: 10010px;" width="300"
							height="600" class="share__canvas"></canvas>
		methods: {
			// 测试图片的地址
			drawImage1() {
				let self = this;
				let drawImage1 = new wxml2canvas({
					width: 330,
					height: 700,
					element: 'canvas1',
					background: '#f0f0f0',
					progress(percent) {},
					finish(url) {
						console.log(url, "url")
					},
					error(res) {}
				});

				let data = {
					list: [{
						type: 'wxml',
						class: '.share__canvas1 .draw_canvas',
						limit: '.draw_canvas',
						x: 0,
						y: 0
					}]
				}
				//将这张图画到canvas上
				drawImage1.draw(data);
			},

这么写效果是呈现出来了,但是又有了一个问题,那就是我的文字只有写在view标签的data-text里才能在canvas上显示,同样的图片需要再data-url里填写图片的网络地址(这里还必须附带data0type来表示你所转换的类型,例如:如果你的图片是base64的那一堆乱码,你就需要在data-type里写上 data-type="image" data-base64="1"等),里面的细节貌似还有很多,本人实在难以领悟(希望有大佬可以告诉一个更好的办法)。

暂时就想写这么多。

标签:总结,uniapp,vue,组件,watermarker,阶段,实习,data,页面
From: https://www.cnblogs.com/laonianrenws/p/18235085

相关文章

  • MyBatis学习总结1
    1.MyBatis介绍1.1什么是框架框架(framework)(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性,即已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。​如果将开发完成的软......
  • Python部分错误总结
    1.couldnotconvertstringtofloat:''由于空字符串不包含任何数字,因此无法确定其浮点数等价物,所以转换失败并抛出ValueError。在没办法处理数据的时候,可以通过设置默认值。some_value=""try:result=float(some_value)exceptValueError:result=0#或......
  • 常见文本相似度计算方法简介:总结
    原文:文本相似度计算方法文本相似度计算方法:有2个关键组件,即【文本表示模型(文本切分粒度、特征构建方法)】和【相似度度量方法】。文本表示模型:将文本表示为计算机可以计算的数值向量,也就是提供特征。相似度度量方法:负责基于前面得到的数值向量计算文本之间的相似度。 文本......
  • goto 语句以及 setjump、longjump 函数的注意事项总结
    关于goto、setjmp、longjmp的注意事项,总结如下:goto语句避免滥用:goto语句虽然能够提供一种直接的跳转方式,但过度使用会使程序结构变得复杂,难以阅读和维护。应优先考虑使用结构化的控制流语句(如if、while、for等)。防止死循环:在使用goto语句时,要特别注意不要形成死......
  • 大一总结
    大一总结不知不觉大一已经结束了,回顾我的大一,感觉有必要写一篇小短文来总结一下自己的经历与感受。刚入学的时候,我还一无所知,并满心期待。当时对我影响最深的是一位学长,由于我高中时一直对ai机器学习充满兴趣,并多次摸索无果,当我直到学长就会深度学习后,心情激动了整整3天,每天都是......
  • 6.5总结
    今天上午做python大作业和工程数学实验今天收获:使用python调用百度地图api从地图上爬取数据,获得石家庄铁道大学内部部分建筑物地点的信息,并存入数据库代码:1importrequests2importjson34#Step1:申请百度地图API密钥5api_key='your_api_key'#请将your_......
  • 6.5每日总结
    可视化第一版本<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"><metaname="renderer"co......
  • 代码随想录 数组总结
    数组总结主要包括二分法双指针滑动窗口模拟 二分法 循环不变量原则拓展考虑学习浮点数二分整数二分扩展题目双指针 快慢指针 原地解决问题、双向解决问题 滑动窗口滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)......
  • mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mys
    一、数据库基本操作1.设置数据库密码[root@db03~]#mysqladmin-urootpassword'123456'2.使用密码登录#1.正确的登录方式[root@db03~]#mysql-uroot-p123456[root@db03~]#mysql-uroot-p123456#2.错误的登录方式[root@db03~]#mysql-uroot-p123456#3......
  • 校内模拟赛总结,又名挂分日记
    倒序排序20240601A容易发现是矩阵快速幂B把每一段编个号,找到号码出现的顺序,还要考虑段内的顺序C用类似线段树的东西维护,将pushup改成\(O(n)\)的即可,没做出来D不会20240502今天又犯傻逼错误A简单背包,背包的大小开小了,100->10B数位DP,答案与输入并不在同一数量级,但......