- 3-Vuex状态管理
菜-卷
Web开发笔记vue.js
Vuex是一个专门为Vue.js应用程序开发的状态管理模式。它集中管理应用程序中的所有组件的状态,并提供了一种可预测的方式来修改和查询状态。Vuex的核心概念包括:State(状态):应用程序的状态存储在一个单一的对象中,称为state。在Vue组件中,可以通过this.$store.state来访问状态。Getters(计算属性):用于从状态中派生出一些衍生数据,类似于Vue组件中的计算属性。可
- 06 | 学数据分析要掌握哪些基本概念?
张九日zx
商业智能BI、数据仓库DW、数据挖掘DM开头中的百货商店利用数据预测用户购物行为属于商业智能,他们积累的顾客的消费行为习惯会存储在数据仓库中,通过对个体进行消费行为分析总结出来的规律属于数据挖掘。元数据(MetaData):描述其它数据的数据,也称为“中介数据”。通过元数据,可以很方便地帮助我们管理数据仓库。数据元(DataElement):就是最小数据单元。数据挖掘:分类、聚类、预测和关联分析K
- html+显示在线时间,在html页面实时显示系统时间
洛阳小散户
html+显示在线时间
原创散场前的温柔最后发布于2018-11-0513:24:58阅读数16005收藏展开在html页面实时显示系统时间桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可系统时间setInterval("document.getElementById('datetime').innerHTML=newDate().toLocaleString();",1000);代码解
- Ubuntu上qt使用SSH样式表
杨~friendship
ubuntulinux运维sshqt学习c++
SSH样式表如果学习过web的同学都知道,我们在学习HTML的时候会用到样式表,我们使用它来更改我们的颜色、大小、背景等等。上到后面,老师会说:我们如果在HTML文件中编辑太多的样式,就会让代码看起来非常的繁琐,所以我们开始学习了CSS样式,那么在QT中我们也同样会使用。那我们就开始学习吧!‘1.编辑样式#include"widget.h"#include"ui_widget.h"#include
- css的盒子模型
Super咩咩
css前端
一、盒子模型分两种第一种:W3C标准盒子模型(标准盒模型)第二种:IE标准的盒子模型(怪异盒模型)二、标准盒模型与怪异盒模型的区别标准盒模型:width指的是内容区域content的宽度,height指的是内容区域content的高度标准盒模型下盒子的大小=content+padding+border+margin怪异盒模型:width指的是内容、内边距、边框的宽度、height指的是内容、内边距
- 基于Springboot的在线小说阅读平台。Javaee项目,springboot项目。
气宇轩昂固执狂
#Springboot项目springbootjava-ee后端
演示视频:基于Springboot的在线小说阅读平台。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。界面简洁,操作简单。系统设计思想
- cornerstonejs介绍
花花进修
DICOM医学影像查看器html5javascriptnpmyarn
Cornerstone.js是一个用于医疗成像应用程序的开源JavaScript库。它专门设计用于在Web浏览器中处理和显示DICOM(数字成像和通信在医学领域)图像。Cornerstone.js为开发者提供了强大的工具,可以轻松构建功能丰富的医学图像查看器,广泛应用于放射学、病理学、超声成像等领域。特点高性能图像渲染:支持大尺寸医学图像的快速渲染,包括CT扫描、MRI、X光片等。利用GPU加速(
- 蓝色炫酷碎粒子HTML5导航源码
酷爱码
htmlhtml5前端html
源码介绍蓝色炫酷碎粒子HTML5导航源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面效果预览源码获取蓝色炫酷碎粒子HTML5导航源码
- vue3中用css transform实现组件自由拖拽
天天进步2015
前端开发css前端vue.js
在Vue3中,可以使用CSStransform和mousedown、mousemove、mouseup事件来实现组件的自由拖拽。以下是一个简单的例子,展示如何使用这些技术来实现组件的自由拖拽。1.创建一个Vue3组件首先,创建一个Vue3组件(例如,Draggable.vue),并添加模板、样式和脚本。DragMeimport{ref,onMounted,onBeforeUnmount}from'
- 我的创作纪念日
喵喵的柠檬汁
笔记其他经验分享
机缘怎么说呢,我的第一篇博客是《HTML5的web工作线程》,当时看完《HeadFirstHTML5Programming》就在想,要是我当时在社团学习的时候碰到这本书,那不是嘎嘎乱杀,登上老大宝座,不得不说,我被这本书代入式的情景教学和幽默风趣的语言风格所深深吸引了,这里也要感谢幕后的翻译工作者。当时的这篇博客更像是一篇简单学习笔记,根本谈不上是技术博客,但那时动手实践和发第一篇博客的激动,却为
- nginx部署前端vue项目
iangyu
运维前端
在Nginx上部署Vue.js前端项目相对简单,通常包括以下几个步骤:1.构建Vue.js项目首先,你需要将Vue.js项目打包为静态文件。npmrunbuild这将生成一个dist文件夹,里面包含了你的Vue.js应用的所有静态资源。2.安装Nginx在服务器上安装Nginx。如果你使用的是Ubuntu,可以使用以下命令安装:sudoaptupdatesudoaptinstallnginx3.配
- Vue3优化表单标签与布局,解决文字过长问题(附Demo)
码农研究僧
前端/小程序vue.js前端javascript
目录前言1.增加标签宽度(生效)2.工具提示Tooltip(勉勉强强)3.缩小字体(不生效)4.CSS控制换行(不推荐)前言好不容易构思整个表单的布局,但是个别表单的文字过长,导致自动换行,遮挡另外的一些组件以下内容将围绕实战进行优化以左上角的文字进行调整:尝试了多种方案,最终才有成效对于其他的方式,诸位也可尝试下1.增加标签宽度(生效)通过增加el-form-item的label-width,让
- javascript模板
wanggs
模板DocumentClick{{title}}{{content}}$(function(){$("#btn").click(function(){varhtml=$("#template").html();html=html.replace("{{id}}",Math.random());html=html.replace("{{title}}","Hello,"+newDate().getT
- javascript网页设计案例
Min_nna
jsjquery功能ai分析javascript
以下是一些使用JavaScript进行网页设计的案例,这些案例展示了JavaScript在前端开发中的强大功能和灵活性。每个案例都包含了基本的实现思路和代码示例。图片画廊(ImageGallery)功能:展示一组图片,并支持点击放大查看。实现思路:使用HTML和CSS创建图片网格。使用JavaScript处理图片点击事件,显示放大的图片。代码示例:ImageGallery×consti
- Nginx部署前端Vue项目
hai40587
前端nginxvue.js
在使用Nginx部署前端Vue项目时,我们主要关注的是如何高效地将静态资源(HTML、CSS、JavaScript、图片等)提供给客户端浏览器。Vue.js是一个流行的JavaScript框架,用于构建用户界面,而Nginx作为一个高性能的HTTP和反向代理服务器,非常适合用于静态资源的托管。以下将详细介绍如何使用Nginx部署Vue项目,包括环境准备、Vue项目构建、Nginx配置、部署过程以及
- 使用 Nginx 部署前端 Vue 项目
vvvae1234
前端
在这篇文章中,我们将深入探讨如何使用Nginx部署一个Vue.js前端项目。Vue是一个流行的前端JavaScript框架,而Nginx则是一个性能卓越的Web服务器和反向代理服务器。通过将这两者结合起来,我们可以高效地托管我们的前端应用。一、环境准备在开始部署之前,我们需要确保我们的环境中已安装以下软件:Node.js和npm:用于构建Vue项目。VueCLI:用于快速创建Vue项目。Nginx
- vue之函数式组件
默默@85
vuevue.jsjavascript
在Vue.js中,functional:true是用来定义函数式组件的一种方式。函数式组件是专门设计用于表现层的轻量级组件,通常没有状态和实例(即没有data、methods、computed等)。它们依赖于传入的props来渲染内容,因此效率更高。主要特性无状态:函数式组件没有内部状态(即没有data)。无生命周期钩子:函数式组件不支持生命周期钩子(如created、mounted等)。高性能:
- 使用Nginx部署前端Vue项目
bigbig猩猩
前端nginxvue.js
在使用Nginx部署前端Vue项目时,我们主要关注的是如何高效地将静态资源(HTML、CSS、JavaScript、图片等)提供给客户端浏览器。Vue.js是一个流行的JavaScript框架,用于构建用户界面,而Nginx作为一个高性能的HTTP和反向代理服务器,非常适合用于静态资源的托管。以下将详细介绍如何使用Nginx部署Vue项目,包括环境准备、Vue项目构建、Nginx配置、部署过程以及
- 【Vue】`v-if` 指令详解:条件渲染的高效实现
Peter-Lu
#vuevue.js前端javascriptv-if
文章目录一、`v-if`指令概述二、`v-if`的基本用法1.基本用法2.使用`v-else`3.使用`v-else-if`三、`v-if`指令的高级用法1.与`v-for`一起使用2.`v-if`的性能优化四、`v-if`的常见应用场景1.表单验证2.弹窗控制五、`v-if`指令的注意事项Vue.js是一个用于构建用户界面的渐进式框架,其中v-if指令是一个非常重要的工具,用于条件渲染元素。本文
- 2020-12-17
幸福大黑鸭
IT1.LeetCode:各位相加Java编写2020-12-17(258.各位相加)2.《Java从入门到精通》明日科技:P391~395阅读记xmind笔记,并自己实现实例。知识点之前确实都学过,但还是再系统复习一下吧。3.《Semantic-awareWorkflowConstructionandAnalysisforDistributedDataAnalyticsSystems》:精读关键
- Easyui Datagrid实现行操作
天农学子
easyui前端javascript
EasyuiDatagrid实现行操作效果分析实现此功能需要实现2点1、首列的内容全部需要渲染成申请开票2、点击申请开票可以获获取到指定的行内容,在执行后续操作实现方案1、首行格式化,在table的th属性中加入formatter示例代码如下操作2、在JavaScript中编写代码formatOperatefunctionformatOperate(val,row){return'申请开票';}当
- 前端框架与库的区别:深入解析与实战指南
DTcode7
HTML网站开发#前端基础入门三大核心之htmlHTML前端webJavaScriptH5
前端框架与库的区别:深入解析与实战指南基本概念和作用框架库功能使用思路与代码示例示例一:使用React框架构建组件示例二:使用Lodash库进行数据处理示例三:使用Vue.js框架进行双向数据绑定实际工作中的使用技巧经验分享自行拓展内容在前端开发领域,框架(Framework)和库(Library)是两个经常被提及但又容易混淆的概念。它们都是构建Web应用程序的重要工具,但各自拥有不同的设计哲学和
- element-ui时间选择器组件及转时间戳
w_小伍
组件(这里用的ts)要获取时间戳,直接把value-format设置成timestamp,但是得到的值要除以1000import{Component,Prop,Vue}from'vue-property-decorator';@ComponentexportdefaultclassTicDatePickerextendsVue{@Prop()privatelabel!:string;@Prop()
- MATLAB机器人常用代码程序(以UR5e机器人为例)
FL17171314
机器人
需要一个UR5e的机器人模型。MATLAB的RoboticsToolbox或者RoboticsSystemToolbox提供了创建和模拟机器人模型的功能。UR5e=importrobot('universalUR5e.urdf');show(UR5e)showdetails(UR5e)figure(Name="InteractiveGUI")gui=interactiveRigidBodyTree
- 白骑士的CSS教学高级篇之高级选择器与伪类 4.2.2 伪类
白骑士所长
CSS教学css前端
伪类选择器是CSS中一种非常强大的工具,允许我们根据元素的特定状态来应用样式。通过使用伪类选择器,你可以创建更具交互性和动态性的网页。常用的伪类选择器包括‘:focus‘、‘:hover‘、‘:active‘和‘:visited‘,它们在设计用户体验时起着至关重要的作用。‘:focus‘伪类‘:focus‘伪类选择器用于选择当前处于焦点状态的元素。通常,当用户通过键盘或鼠标与表单元素(如输入框、按
- <el-table>组件show-summary合计行合并方法
weixin_52137539
前端javascriptvue.js
elementtable组件中通过show-summary生成的合并行无法通过span-method方式实现合并行;watch:{ tableData:{ immediate:true, handler(){ setTimeout(()=>{ consttds=document.querySelectorAll('#table.el-table__footer
- element ui表格<el-table> 合并单元格
北乎下周
效果图如下点击新增动物按钮,会新增一整行的数据,如果点击右侧操作按钮中的添加按钮,会添加一行小狗以右的数据,而小狗以前的数据和第一行数据合并一行。新增动物{{scope.row.date}}-->添加exportdefault{components:{},data(){return{tableData:[],spanProps:['leftKey'],//需要合并行的字段};},methods:{
- 如何设置element ui选择结束时间为23:59:59?
weixin_42220130
前端elementui时间结束
两个方法,不过都是针对于传值给后端做的处理,不包括前端展示1每次发送请求时更改结束时间给后端//请求函数getDataList(){this.dataListLoading=true;//请求参数手动更改if(this.searchForm.timeArray.length===2&&this.searchForm.timeArray[1]!==""){this.searchForm.timeAr
- el-table相同数据行单元格合并
problemRecord
elementuivue.js
el-table列表相同内容合并背景实现步骤1.绘制el-table2.编写合并方法2.1计算合并的行号2.2计算合并行号数组**indexArray**。2.3编写行号合并方法3.全部代码背景项目中列表第一列是名称,需要实现的效果是相同名称的行合并,如图所示:实现步骤1.绘制el-table按照常规的写法绘制一个表格,根据官方文档element-ui介绍编写表格合并规则方法。代码示例中的span
- element 时间日期组件 场景 : 选取开始&&结束时间时限制时间区间 选取结束时间如果是当天则取当天默认的时分秒
小鱼-00
vue.js前端javascriptelementui
pickerOptions:{disabledDate:(time)=>{//如果函数处理比较简单,可以直接在这里写逻辑方法//returntime.getTime()>Date.now()-8.64e7returntime.getTime()>Date.now()//如果函数里处理的数据比较麻烦,也可以单独放在一个函数里,避免data数据太臃肿//returnthis.dealDisabledD
- ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术jvmAOP动态代理ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
- java编程思想 --内部类
百合不是茶
java内部类匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
- web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
- 泛型类的自定义
麦田的设计者
javaandroid泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
- CSS清除浮动的4中方法
IT独行者
JavaScriptUIcss
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
- Cygwin使用windows的jdk 配置方法
_wy_
jdkwindowscygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
- linux下安装maven
无量
mavenlinux安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
- tomcat的https 配置,syslog-ng配置
aichenglong
tomcathttp跳转到httpssyslong-ng配置syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
- 关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
- java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
- JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
- Test注解的两个属性:expected和timeout
bijian1013
javaJUnitexpectedtimeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
- [Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
- 【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
- WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
- java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
- Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
javanetty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
- spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
- Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
- 解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
- [转]for 循环为何可恨?
dcj3sjt126com
程序员读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
- Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
- Oracle 复习笔记之序列
eksliang
Oracle 序列sequenceOracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
- 有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
- 使用KeleyiSQLHelper类进行分页查询
hvt
sql.netC#asp.nethovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
- SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
- 链表栈
luyulong
java数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
- 基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
- spring配置定时任务
stunizhengjia
springtimer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
- ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http