背景

对于经常和动画开发打交道的开发者对于Animate.css这个动画库不会陌生,它把一些常见的动画效果都封装起来了,非常实用。但是有时候在开发中,仅仅只是需要某一两个动画效果,把整个CSS文件都引入,这样不是太好。
需求就出现了,能不能有一个工具可以直接预览Animate.css对应的动画效果,并且生成对应的动画代码呢?
作为一个UI开发,平时跟Chrome浏览器打交道最多,于是就整了一个Chrome插件可以及时预览对应Animate.css中的动画效果并生成对应的动画代码,这样在实际开发中碰到一些需要使用到Animate.css中的动画效果时,可以大大的提高我们的开发效率。
插件安装地址,快来安装体验吧!
作为一个程序员,捣鼓些小工具,不但可以学些新技术还可以提高我们的开发效率,何乐而不为呢。
下面就以一个简单的flexbox对齐预览的插件为例,讲讲使用vuejs开发Chrome插件的开发体验和效率。
扩展如下图所示:
并且还实时根据用户选择的对齐方式,显示对应的CSS代码,方便我们可以直接拷贝代码使用。
Chrome插件开发基本知识
在应用商店中下载下来的插件基本上都是以.crx为文件后缀,该文件其实就是一个压缩包,包括插件所需要的html、css、javascript、图片资源等等文件。
开发一个插件就跟我们平时做web开发流程没多大的区别,就是先搭好基本的页面,然后使用js来写交互逻辑等功能。
比如我这个插件的目录文件如下:
manifest.json文件
文件中需要注意一下的mainfest.json这个文件,这个json文件的作用是提供插件的各种信息,例如插件能够做的事情,以及插件的文件配置等等信息。下面是一个清单文件的示例,
{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a browser action with kittens.",
"version": "1.0",
"permissions": [
"https://secure.flickr.com/"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
第一行声明我们使用清单文件格式的版本 2,必须包含(版本 1 是旧的,已弃用,不建议使用)。
接下来的部分定义扩展程序的名称、描述与版本。这些都会在 Chrome 浏览器中使用,向用户显示已安装的扩展程序,同时在 Chrome 网上应用店中向潜在的新用户显示您的扩展程序。名称应该简练,描述不要比一句话左右还长(后面将会有更多的空间用于更详细的描述)。
最后一部分首先请求权限,用于访问 https://secure.flickr.com/ 上的数据,并声明该扩展程序实现了一个浏览器按钮,同时在这一过程中为它指定一个默认图标与弹出窗口。
定义浏览器按钮时指向了两个资源文件:icon.png 与 popup.html。这两个资源都必须在扩展程序包中存在,图片是扩展的显示,html是扩展具体运行的基础文件。
具体详细的开发教程可以看看官方的这个文档,非常简明的入门教程。
功能实现-Vuejs实践
整个插件的核心交互功能非常简单,如文章开头的动图所示,用户选择对齐方式,代码区域显示对应的代码。这种简单数据交互使用vuejs再适合不过了。
这里需要注意的一点是,chrome 扩展的运行环境有一些特殊要求,称为 Content Security Policy (CSP),使得通常的 vue 不能被正常使用。如果用的是 vue 1.x,那么可以下载 csp 版本,在 这里。如果是 2.x 版本,请参考官网文档的这一段。
核心代码如下所示。
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 引入样式 -->
<link rel="stylesheet" href="main.css" rel="external nofollow" >
<link rel="stylesheet" href="mystique.css" rel="external nofollow" >
</head>
<body>
<div id="app">
<h1 class="title-box">flexbox对齐就是这么简单</h1>
</div>
<div id="type-select">
<select v-model="selected">
<option v-for="option in options" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
<!-- <span>Selected: {{ selected }}</span> -->
<div class="resule-preview">
<div v-bind:class="selected" class="cols">
<div class="col col-3">
<p>对齐</p>
</div>
<div class="col col-3">
<p>对齐</p>
</div>
<div class="col col-3">
<p>对齐</p>
</div>
</div>
</div>
<div class="resule-code">
<pre class="code-display">
<code class="code-lang">
{{ cssMsg }}
</code>
</pre>
</div>
</div>
<!-- 先引入 Vue -->
<script src="vue.js"></script>
<!-- 引入组件库 -->
<script src="main.js"></script>
</body>
</html>
CSS就不列出来了,可以在源代码中查看。
下面来使用vuejs来实现插件的功能。
功能实现
使用 v-for 指令根据一组数组的选项列表进行渲染。 v-for 指令需要以 item in items 形式的特殊语法, items 是源数据数组并且 item 是数组元素迭代的别名。
而下拉框(select)列表的渲染,就可以使用vue中的v-for方法来渲染下拉列表选项,下拉选项数据写在js中的data对象中的options中。用v-bind方法来绑定option的value值,代码如下所示:
<select v-model="selected">
<option v-for="option in options" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
在vuejs中可以用 v-model 指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。这里在select中使用v-model方法来监听选中的值。
为了能预览不同对齐的效果,先在CSS中写好和下拉框中值相同的对应的类名样式,这样当用户选中不同的值的时候能显示不同的效果。
<div v-bind:class="selected" class="cols">
<div class="col col-3">
<p>对齐</p>
</div>
<div class="col col-3">
<p>对齐</p>
</div>
<div class="col col-3">
<p>对齐</p>
</div>
</div>
下拉框这块功能就这样,简简单单几行代码就实现了。想想要是用jquery或者是原生的js来实现同样的功能,不仅代码量要大而且写起来也没有vuejs这么舒服。
接下来是代码同步功能,即在代码区域显示对应flex对齐的CSS代码。
开始之前先讲讲vuejs中的computed属性方法,可计算属性 (computed properties) 就是不存在于原始数据中,而是在运行时实时计算出来的属性。
对应到我们这个实例,就是当用户选择flexbox不同的对齐方式的时候,及时同步对应的CSS代码到代码预览区域。简单起见,直接把几个不同的代码写到js中:
data: {
selected: 'cols-center',
cssText:{
'cols-center' : '\n\r-webkit-justify-content: center;\n\r-ms-flex-pack: center;\n\rjustify-content: center;',
'cols-space-between' : '\n\r-webkit-justify-content: space-between;\n\r-ms-flex-pack: justify;\n\rjustify-content: space-between;',
'cols-space-around' : '\n\r-webkit-justify-content: space-around;\n\r-ms-flex-pack: distribute;\n\rjustify-content: space-around;'
},
options: [
{ text: '居中对齐', value: 'cols-center'},
{ text: '两端对齐', value: 'cols-space-between'},
{ text: '间隔相等', value: 'cols-space-around'}
]
},
根据不同的名字对应不同的CSS代码。然后使用computed方法来根据用户选取的值实时取出对应的CSS代码:
computed:{
cssMsg:function(){
console.log(this)
return this.cssText[this.selected];
}
}
完整代码如下:
var typeSelect = new Vue({
el: 'body',
data: {
selected: 'cols-center',
cssText:{
'cols-center' : '\n\r-webkit-justify-content: center;\n\r-ms-flex-pack: center;\n\rjustify-content: center;',
'cols-space-between' : '\n\r-webkit-justify-content: space-between;\n\r-ms-flex-pack: justify;\n\rjustify-content: space-between;',
'cols-space-around' : '\n\r-webkit-justify-content: space-around;\n\r-ms-flex-pack: distribute;\n\rjustify-content: space-around;'
},
options: [
{ text: '居中对齐', value: 'cols-center'},
{ text: '两端对齐', value: 'cols-space-between'},
{ text: '间隔相等', value: 'cols-space-around'}
]
},
computed:{
cssMsg:function(){
console.log(this)
return this.cssText[this.selected];
}
}
})
最后在html中绑定通过computed方法得到数据也就是CSS:
<div class="resule-code">
<pre class="code-display">
<code class="code-lang">
{{ cssMsg }}
</code>
</pre>
</div>
开发好之后,可以直接在chrome中运行来调试。打开扩展面板,勾选开发者模式,然后加载刚开发扩展所在的目录就可以直接运行了。
完整的源代码已上传在附件,可以下下来直接运行。
一个简单的插件就完成了,通过这一个简单的chrome插件就可以体验到vuejs在web开发中简单、优雅的魅力,还有什么理由不用起来呢。
以上所述是小编给大家介绍的vue.js 初体验之Chrome 插件开发实录,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
# vue.js
# chrome
# 插件开发
# JavaScript体验异步更好的解决办法
# 几个优化WordPress中JavaScript加载体验的插件介绍
# nodejs初步体验篇
# JavaScript实现统计文本框Textarea字数增强用户体验
# Javascript类库的顶层对象名用户体验分析
# JS+CSS实现的一种交互体验 表单页面
# js验证符合用户体验的网页表单特效
# 用javascript实现改善用户体验之alert提示效果
# JS如何让你的移动端交互体验更加优秀
# 方法来
# 所示
# 绑定
# 就可以
# 可以直接
# 作为一个
# 下拉框
# 来实现
# 需要注意
# 小编
# 源代码
# 的是
# 是一个
# 您的
# 实现了
# 平时
# 几个
# 这一
# 文档
# 是在
相关文章:
如何生成腾讯云建站专用兑换码?
建站主机选虚拟主机还是云服务器更好?
行程制作网站有哪些,第三方机票电子行程单怎么开?
建站主机功能解析:服务器选择与快速搭建指南
SQL查询语句优化的实用方法总结
广东专业制作网站有哪些,广东省能源集团有限公司官网?
高端网站建设与定制开发一站式解决方案 中企动力
建站主机系统SEO优化与智能配置核心关键词操作指南
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
微课制作网站有哪些,微课网怎么进?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
高性价比服务器租赁——企业级配置与24小时运维服务
建站之星如何助力网站排名飙升?揭秘高效技巧
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
,南京靠谱的征婚网站?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
定制建站是什么?如何实现个性化需求?
如何注册花生壳免费域名并搭建个人网站?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
建站之星展会模版如何一键下载生成?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
建站之星价格显示格式升级,你的预算足够吗?
制作电商网页,电商供应链怎么做?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站之星如何开启自定义404页面避免用户流失?
如何在橙子建站上传落地页?操作指南详解
哈尔滨网站建设策划,哈尔滨电工证查询网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
宁波免费建站如何选择可靠模板与平台?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星伪静态规则如何正确配置?
Android自定义控件实现温度旋转按钮效果
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
历史网站制作软件,华为如何找回被删除的网站?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
高端云建站费用究竟需要多少预算?
北京网站制作网页,网站升级改版需要多久?
装修招标网站设计制作流程,装修招标流程?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
如何在服务器上配置二级域名建站?
网站制作模板下载什么软件,ppt模板免费下载网站?
,柠檬视频怎样兑换vip?
黑客如何利用漏洞与弱口令入侵网站服务器?
个人网站制作流程图片大全,个人网站如何注销?
移民网站制作流程,怎么看加拿大移民官网?
MySQL查询结果复制到新表的方法(更新、插入)
*请认真填写需求信息,我们会在24小时内与您取得联系。