Newswire/frames实现Pym.js精神,压缩代码提升响应式iframe性能

需积分: 9 0 下载量 123 浏览量 更新于2024-11-17 收藏 115KB ZIP 举报
资源摘要信息:"frames:in秉承Pym.js的精神,绿地采用响应式iframe" Pym.js是一个开源JavaScript库,它允许用户在父页面和子iframe之间进行通信,并实现一些复杂的功能,例如动态调整iframe的大小以匹配父页面的布局。这项技术通常用于新闻网站中,以便于在不影响主页面布局的情况下嵌入不同来源的内容,如地图、图表、视频和其他数据集。 1. 响应式iframe:在网页设计中,响应式iframe是指能够根据不同的屏幕尺寸和设备特性自适应的嵌入式框架。这意味着无论用户是在手机、平板还是桌面电脑上浏览,嵌入的iframe内容都能保持良好的布局和可读性,这能够极大地改善用户的浏览体验。 2. 父代码和帧代码的压缩:代码压缩是一种优化技术,旨在减小文件大小,提高加载速度。在描述中提到的父代码和帧代码都压缩了1 KB,这表明该框架在保持功能的同时,尽可能地减小了资源的使用。 3. 默认情况下可摇树-仅导入实现响应性所需的内容:这指的是框架使用了“摇树”优化技术,只保留运行时实际需要的代码部分,剔除不需要的部分。这是一种常用的JavaScript优化方法,有助于进一步减小最终部署包的大小。 4. 讲并与兼容:这可能是描述框架的兼容性,意味着它能够与多种设备和技术栈良好工作,包括旧版本的浏览器。 支持的浏览器:从描述中可以看出,这个框架支持主流的现代浏览器如苹果浏览器、火狐浏览器、谷歌浏览器、歌剧和微软Edge,以及老旧的Internet Explorer 11。但不支持Internet Explorer 10及更低版本,这可能是由于这些版本的浏览器在技术上已经过时,不再被广泛使用,或者不支持现代Web标准。 安装:可以通过npm来安装这个框架,npm是流行的JavaScript包管理器,能够方便地管理项目依赖。通过命令`npm install @newswire/frames`即可完成安装。此外,也提供了直接通过`<script>`标签引入的方式,这是一种传统的前端引入方式,适用于没有使用包管理器的简单场景,可以通过链接***来引入。 标签信息:从标签信息中可以知道,这个框架与响应式新闻报道(responsive journalism)、HTML5的iframe元素(iframes)、以及用于创建网页内容的AMP HTML相关。AMP HTML是一种用于优化移动网页内容的开源HTML框架。 压缩包子文件的文件名称列表:提供的文件名称"frames-main"暗示着这是框架的主要文件,可能包含了核心的实现代码,用户在引入框架时通常只需要这个文件即可。 综上所述,@newswire/frames框架是基于Pym.js精神开发的,一个专为新闻网站设计的响应式iframe解决方案。它通过代码压缩优化了性能,并实现了良好的浏览器兼容性,同时支持传统的script标签引入和现代的npm包管理器安装方式。通过使用该框架,开发者可以轻松地在他们的网站中嵌入响应式的iframe内容,提升用户的交互体验。

import timefrom serial import Serialimport serial.tools.list_portsimport cv2import numpy as npcap1 = cv2.VideoCapture("/Users/yankaipan/Desktop/stand.mp4")cap2 = cv2.VideoCapture("/Users/yankaipan/Desktop/apple.mp4")cap3 = cv2.VideoCapture("/Users/yankaipan/Desktop/bamboo.mp4")cap4 = cv2.VideoCapture("/Users/yankaipan/Desktop/rubbish.mp4")port_list = list(serial.tools.list_ports.comports())port_list_1 = list(port_list[2])port_serial = port_list_1[0]arduinoData = serial.Serial(port_serial, 9600)time.sleep(1)while True: while (arduinoData.inWaiting() == 0): pass dataPacket = arduinoData.readline() dataPacket = dataPacket.decode().strip() print(dataPacket) time.sleep(3) if dataPacket == "a": while cap1.isOpened(): ret, frame = cap1.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap1.set(cv2.CAP_PROP_POS_FRAMES, 0) elif dataPacket == "b": while cap2.isOpened(): ret, frame = cap2.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap2.set(cv2.CAP_PROP_POS_FRAMES, 0) elif dataPacket == "c": while cap3.isOpened(): ret, frame = cap3.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap3.set(cv2.CAP_PROP_POS_FRAMES, 0) elif dataPacket == "d": while cap4.isOpened(): ret, frame = cap4.read() if ret == True: cv2.imshow('Frame', frame) if cv2.waitKey(25) & 0xFF == ord('q'): break else: cap4.set(cv2.CAP_PROP_POS_FRAMES, 0)cv2.destroyAllWindows()怎样修改代码能够在其中一个a视频播放时,接收到arduino发送的消息时能够触发另一视频b或c或d并播放?

2023-05-21 上传

public String dcJsonTobin(List<LightGroupReq> lightGroupReqs, Integer binHashCode,List<String> lightGroupList) { LinkedHashMap<Long, List<Frames>> groupingFrames = jsonToBinPub(lightGroupReqs, VehicleConstants.VEHICLE_001); Map<Integer, Frames> portMap = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); ArrayList<String> writeBinList = new ArrayList<>(); List<Frames> frameList = new ArrayList<>(); for (int i = 1; i <= 45; i++) { frameList.add(new Frames(4095, 31, 10230, 10230, 255, 255, 0, i, 0, 2)); } groupingFrames.put((long) groupingFrames.size(), frameList); for (Map.Entry<Long, List<Frames>> entry : groupingFrames.entrySet()) { List<Frames> framesList = entry.getValue(); int[] temp = new int[46]; //全部初始化为-1 Arrays.fill(temp, -1); for (int i = 0; i < framesList.size(); i++) { temp[framesList.get(i).getGroupIndex()] = 1; } for (int i = 1; i < temp.length; i++) { if (temp[i] == -1) { portMap.put(i, new Frames(4095, 31, 10230, 10230, 255, 255, 0, i, 0, 2)); } } framesList.addAll(portMap.values()); framesList = framesList.stream().sorted(Comparator.comparing(Frames::getGroupIndex)).collect(Collectors.toList()); framesList.remove(4); framesList.remove(4); Frames frames2 = new Frames(); Frames frames3 = new Frames(); BeanUtils.copyProperties(framesList.get(6),frames2); BeanUtils.copyProperties(framesList.get(7),frames3); frames2.setGroupIndex(5); frames3.setGroupIndex(6); frames2.setFramesType(0); frames3.setFramesType(0); framesList.add(frames2); framesList.add(frames3); framesList = framesList.stream().sorted(Comparator.comparing(Frames::getGroupIndex)).collect(Collectors.toList()); portMap.clear(); for (int j = 0; j < framesList.size(); j++) { list.add(BinaryFileUtils.dcFramesToHex(framesList.get(j),writeBinList)); } } return fileService.uploadBin(list, binHashCode); }优化这段代码

2023-06-08 上传