Vue 组件间通信的 6 种方式前言组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。一般来说,组件可以有以下几种关系:
如上图所示,A 和 B、B 和 C、B 和 D 都是父子关系,C 和 D 是兄弟关系,A 和 C 是隔代关系(可能隔多代)。针对不同的使用场景,如何选择行之有效的通信方式?这是我们所要探讨的主题。本文总结了 vue 组件间通信的几种方式,如 props、$emit/$on、vuex、$parent / $children、$attrs/$listeners 和 provide/inject,以通俗易懂的实例讲述这其中的差别及使用场景,希望对小伙伴有些许帮助
1. props/$emit父组件 A 通过 props 的方式向子组件 B 传递,B to A 通过在 B 组件中 $emit, A 组件中 v-on 的方式实现。
父组件向子组件传值接下来我们通过一个例子,说明父组件如何向子组件传递值:在子组件 Users.vue 中如何获取父组件 App ...
JSZip
jszip是一个用于创建、读取和编辑.zip文件的JavaScript库,且API的使用也很简单。
官方给的栗子
1234567891011121314// 初始化一个zip打包对象var zip = new JSZip();// 创建一个被用来打包的名为Hello.txt的文件zip.file("Hello.txt", "Hello Worldn");// 创建一个名为images的新的文件目录var img = zip.folder("images");// 这个images文件目录中创建一个base64数据为imgData的图像,图像名是smile.gifimg.file("smile.gif", imgData, {base64: true});// 把打包内容异步转成blob二进制格式zip.generateAsync({type:"blob"}).then(function(content) { // ...
Java 操作Word、Excel的几种方法
方案
移植性
功能性
易用性
Poi-tl
Java跨平台
Word模板引擎
基于Apache POI
Apache POI
Java跨平台
Apache项目,功能丰富
文档不全,这里有一个教程:Apache POI Word快速入门
Freemarker
XML跨平台
仅支持文本,很大的局限性
复杂,需要维护XML结构,代码不可维护
OpenOffice
部署OpenOffice软件,移植性较差
-
复杂,需要了解OpenOffice的API
HTML浏览器导出
依赖浏览器的实现,移植性较差
HTML不能很好的兼容Word的格式
-
Jacob、winlib
Windows平台
-
复杂,完全不推荐使用
Apache POI不仅在上层封装了易用的文档API(文本、图片、表格、页眉、页脚、图表等),也可以在底层直接操作文档XML结构,poi-tl正是一个基于Apache POI的Word模板引擎,并且拥有着让人喜悦的特性。
引擎功能
描述
文本
将标签渲染为文本
图片
将标签渲染为图片
...
目的:实现在java后台直接根据options生成Echarts统计图片本文实现原理:java调用Runtime.getRuntime().exec()的方式调用phantomjs。然后由phantomjs处理echarts数据,最终生成图片。第一步:下载并安装PhantomJs下载地址: http://phantomjs.org/download.html下载完成后配置环境变量
把解压后的文件夹的bin目录配置到环境变量Path中
验证结果
打开cmd窗口,输入以下内容
1phantomjs --version
若出现版本号则配置成功。
第二步:准备生成图片相关的脚本:
jquery-3.2.1.min.js 下载任意jquery.js版本即可下载地址: JQuery官网下载
echarts.min.js 下载任意jquery.js版本即可下载地址: ECharts官网下载
echarts-convert.js此脚本为最主要脚本,生成echart图片的主要逻辑代码都在此脚本内。(完整源码如下) 123456789101112131415161718192021222 ...
SPA(单页面应用)和MPA(多页面应用)
单页面应用
第一次进入页面时会请求一个html文件,刷新清除一下,切换到其他组件,此时路径也相应变化,但是并没有新的html文件请求,页面内容却变化了。
原理: js会感知到url的变化,通过这一点可以用js动态地将当前页面的内容清除,然后将下一个页面的内容挂载到当前页面上。这个时候的路由不再是后端来做了,而是前端来做,判断页面显示相应的组件,清除不需要的。
页面跳转: js渲染
优点: 页面切换快
缺点: 首屏时间稍慢,SEO差
为什么页面切换快?页面每次切换跳转时,并不需要处理html文件的请求,这样就节约了很多HTTP发送时延,所以我们在切换页面的时候速度很快。
为什么首屏时间慢,SEO 差?单页应用的首屏时间慢,首屏时需要请求一次html,同时还要发送一次js请求,两次请求回来了,首屏才会展示出来。相对于多页面应用,首屏时间慢。SEO效果差,因为搜索引擎只认识html里的内容,不认识js渲染生成的内容,搜索引擎不识别,也就不会给一个好排名,会导致单页应用做出来的网页在搜索引擎上的排名差。
为什么还要用 Vue 呢?Vue官方提供 ...
-技术分享
未读阿里云 CDN + OSS 解决方案前言直接使用阿里云的OSS+CDN的方案有几大好处:
成本低廉。OSS+CDN部署自己的网站每个月的花费远比自己买ECS服务器部署网站花费要少得多
大幅降低运维成本。直接使用现成的云服务了,无需花精力去维护ECS了。
极高的可用性。无论阿里云的OSS还是CDN,都已经做好了高可用性,几乎可以保证网站始终可访问
极高的访问速度。ECS带宽毕竟有限的,高带宽意味着超高的费用。但是用OSS+CDN这种天然分布式的架构部署网站很轻松的解决了带宽问题,极大地提升了用户的访问体验。
步骤
添加二级域名假设你已经有一台服务器和自己的域名,现在我们首先要做的是添加一个二级域名,作为静态资源域名,这样不用全站cdn,这里我设置为 test.ivan.fun ,在域名管理中添加二级解析。
添加 OSS 服务
进入 oss 控制台,点击右侧的新建 bucket点击左侧新建的 bucket ,获取 access_key 和 access_sercet 之后,上传图片到 oss 的方法可以参考文档,或者我的另外一篇博客 : 【微信小程序】上传文件到阿里云OSS , 值得 ...
微信小程序上传文件到阿里云OSS小程序上传文件到OSS也是利用OSS提供的PostObject接口来实现表单文件上传到OSS步骤1:配置Bucket跨域访问客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请求消息。OSS对带有Origin头的请求消息会进行跨域规则(CORS)的验证。因此需要为Bucket设置跨域规则以支持Post方法。
登录OSS管理控制台。
单击Bucket列表,之后单击目标Bucket名称。
单击权限管理 > 跨域设置,在跨域设置区域单击设置。
单击创建规则,配置如下图所示
步骤2:配置外网域名到小程序的域名白名单
登录OSS管理控制台。
单击Bucket列表,之后单击目标Bucket名称。
存储空间概览页的访问域名区域查看Bucket域名。
登录微信小程序平台,配置小程序的上传域名白名单。
步骤3:小程序端代码config.js //阿里云oss Bucket的配置信息
123456789var fileHost="xxxx.aliyuncs.com(你的阿里云oss地址)"var con ...
CentOS7 防火墙Firewall常用命令
firewalld的基本使用
启动: systemctl start firewalld
查看状态:systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务: systemctl start firewalld.service
关闭一个服务: systemctl stop firewalld.service
重启一个服务: systemctl restart firewalld.service
显示一个服务的状态: systemctl status firewalld.service
在开机时启用一个服务: systemctl enable firewalld.service
在开机时禁用一个服务: systemctl disable firewalld.service
查看服务是否 ...
基于Java的TCP Socket通信详解TCP Socket通信是一种比较常用的基于连接的网络通信方式。本文通过Java实现TCP Socket通信,并将其用于计算机端,Android手机端,硬件设备端,同时做到代码规范化,实现代码最大化复用。| 本文代码可在GitHub下载,建议对照源码阅读文章 https://github.com/IVanMissAya/tcp_serverTCP连接的建立客户端和服务器间通过 三次握手 建立TCP连接。在Java中,连接建立完成后,服务器端和客户端分别获取到一个Socket实例,之后就可以通过这个Socket实例进行通信。服务器端和客户端使用不同的方法获取Socket实例。
服务器端在服务器端,通过ServerSocket实现对指定端口的监听,代码如下。其中port为int型端口数值,取值065535,01024为系统保留端口,这里取值1234。如果发生错误将会抛出异常。 12int port = 1234;ServerSocket server = new ServerSocket(port);
通过ServerSocket.accep ...
【微信小程序】引用echarts 在真机上预览图表模糊的解决办法
获取移动设备的像素比 获取系统信息 ==> wx.getSystemInfo() API说明:wx.getSystemInfo()
123456789101112const getPixelRatio = () => { let pixelRatio = 0 wx.getSystemInfo({ success: function (res) { pixelRatio = res.pixelRatio }, fail: function () { pixelRatio = 0 } }) return pixelRatio}
初始化图表的时候设置像素比 devicePixelRatio API说明:echarts.init
案例1234567891011121314151617181920 ...












