By Conmajia


我就拿Vue举个栗子。

Vue.js是什么,我想你多半知道,我也甭废话了。

这几天看到写Vue教程的文章突然多起来了。不过,就我所见,在这里发表的所有教程文章,都不支持即时演示,顶多有点儿自己画的图片之类的点缀一下。那么,请问您的文章和官网的交互式教程相比有什么优势?高级技巧或者独创的tricks就算了,那些写基础教程的作者们,您的目标读者全是不看官方文档,「吃不下饲料非得你亲口嚼碎了再喂」的蠢驴吗?或者只是为了记录一下?那刻意选中「发布至BKY首页」是源自内心压抑不住的分享热情吗?

你可是在网上发表文章呢!你以为在写实体书没法儿跟读者交互?

有些作者总是追求阅读量,又写不出什么正经八百的深刻见解,只好四处借鉴,替官方教程在网上义务存档。然而这种鸡肋发出来没几个人看。没招了,那就多抄几篇吧。内容越抄越多,文章越写越烂,一个梦想成为大牛的热血青年终于一步步退化成了知识的搬运工,码过的文章能在首页刷出好几屏,可是自己一个字都没往脑子里去。

抄书破万卷,依然是笨蛋。


坚决抵制超文本抄书匠官方文档义务保管员低幼知识收藏家在首页倾倒垃圾。

但是!

看完我这篇文章,至少可以给你的教程加入一些简单的交互(或者别的骚东西),至少可以阻止你堕入C+V的罪恶深渊,至少你在码code的时候脑子还能保持一时半会儿的清醒。

比如这个被我搬过来的Vue官方例子:

《进入/离开 & 列表过渡:列表的排序过渡》
Add Remove {{ item }}

▲ 点一下按钮


new Vue({el:'#list-complete-demo',data:{items:[1,2,3,4,5,6,7,8,9],nextNum:10},methods:{randomIndex:function(){return Math.floor(Math.random()*this.items.length)},add:function(){this.items.splice(this.randomIndex(),0,this.nextNum++)},remove:function(){this.items.splice(this.randomIndex(),1)}}})

一般的文章做不到生成按钮,点击交互。那种就是我说的典型鸡肋,不如去看官网教程。BKY垃圾遍地,你也就在我这儿能点几下按钮玩玩儿,看看实际效果。搁别地儿的文章,上面的例子多半会变成这个德行:

(吧啦吧啦废话)
我们来看一个例子:
首先定义样式

.list-complete-item{
...

然后在HTML里写上

<div id="list-complete-demo"><button v-on:click="add">Add</button>...

最后在 script 标签里写上Vue代码

new Vue({el: '#list-complete-demo',data: {...

(一顿瞎几把分析)
各位读者可以自行新建一个网页,敲入上面的代码,看看实际的运行效果我看你 呢?……
(吧啦吧啦废话)

您要是读者,是不是觉得这种文章挺操蛋的?真当自己在写实体书呢?逼逼半天连个实际效果都秀不出来,老子看你这个还不如直接上官网。

几个关键

给文章加上interactive的内容,尤其是在第三方平台(比如BKY)发表的文章,没有插件功能,必须用到HTML权限。但是文章内的script已经被屏蔽了,直接写是不会解析的。所以为了让文章能交互,你得绕过去。

简易代码执行器

我在《如何绕过BKY对 script 的屏蔽》里提供了一个简易的解决方案,我称为简易代码执行器(ECE)。就目前的效果而言,正如你在这篇文章里看到的,还不错,至少够用了。通过每篇文章各自执行代码,你可以省去在全局设置里不断添加新代码的烦恼。相信我,当你写的文章越来越多,global maintenance会把你逼疯的。等到哪天不用这些代码了,直接删除文章就好,免去了在狭小的设置对话框的犄角旮旯里寻找作废代码的烦恼。

ECE会读取文章里所有可识别的代码块,然后分别执行它们。对我这个博客来说,一个标准的文章内嵌代码块是用 run 或者 runearly 标签包围的代码块:

<run><!-- some code -->
</run>

文章加载完毕后,ECE就会开始逐个执行代码块里的some code。拿一个简单的Vue官方代码举例:

《介绍:处理用户输入》

{{ message }}

逆转消息


var app5=new Vue({el:'#app-5',data:{message:'Hello Vue.js!'},methods:{reverseMessage:function(){this.message=this.message.split('').reverse().join('')}}})

整个page加载完成后,ECE开始运行,读取run内的文字$('run').text(),得到代码块,通过eval执行,更新{{message}},并绑定Vue函数,实现按钮功能。

前边儿我说过,普通的博客文章是没法做到这样真正使用Vue.js实现的交互效果。如果不用别的招,它们只能干瘪地罗列一堆代码,读者看了半天也是满头雾水,依然不知道这玩意儿到底是个什么样。有心的读者也许会按图索骥,摸到官网去看文档和交互演示,心中满是问号:为什么不从一开始就直接看官网。而意志薄弱的哥们儿,可能就此放弃阅读,关掉网页,顺便再骂上一句:辣鸡。

如果改成使用内嵌代码块这种methodology就能完美解决。比如上面的例子,只需要在文章正文写上HTML代码:

<div id="app-5"><p>{{ message }}</p><button v-on:click="reverseMessage">逆转消息</button>
</div>

然后把Vue代码写到一个run标签里

<run>
var app5 = new Vue({el: '#app-5',data: {message: 'Hello Vue.js!'},methods: {reverseMessage: function() {this.message = this.message.split('').reverse().join('')}}
})
</run>

ECE的实现很简单,它分为标准执行阶段runearly)和推迟执行阶段run)。标准执行阶段的代码块是在DOM树加载完即就开始执行,相当于:

$(function() {/* 代码块 */
});

推迟执行阶段的代码则需要等到文档全部载入后才执行,相当于:

$(window).load(function() {/* 代码块 */
});

这很好理解,如果想不明白,看看我前面提到的那篇文章。

多个代码块之间传递变量

ECE是用eval执行代码的,这带来一个问题:多个run代码块之间没法直接传递变量。比如我写:

<run>var a = 1;
</run>
<run>a = a + 1;
</run>

第二个run是没法执行的,浏览器会报错:

ReferenceError: a is not defined

a的生命周期只限于第一个run内。为了解决这个问题,我在全局设置里增加了一个数组型的variable bank和三个助手函数,分别用来读取/写入/删除需要共享的变量:

// cache
var bank = new Array();function getValue(key) {return bank[key];
}function setValue(key, value) {bank[key] = value;
}function removeValue(key) {bank.remove(key);
}

bank的生命周期是整个session。通过它,各个代码块之间可以互相传递变量。上面的那俩稍微修改一下就能正常工作:

<run>setValue("a", 1);
</run>
<run>setValue("a", getValue("a") + 1);
</run>

当然,变量定义的先后顺序还是需要你来保障的。这样一来,你在写文章尤其是长文章时就能把代码块分开写在文章不同的位置,而不用把所有的代码都挤在一个run里,影响写作思路。

要注意,代码块里定义的函数也受到生命周期的影响,你得把函数也缓存起来。

另外一种变量传递解决方案是使用cookie完成。Cookie优点在于可以在不同页面间传递值,这一点上面的方案是办不到的。但是它的缺点也和优点一样明显。Cookie没办法直接保存除了字符串和数字之外的变量,比如数组、函数。好在大部分网页内容和变量都可以通过序列化转换成JSON字符串进行保存/读取。Cookie的操作可以借用js-cookie完成,非常方便。

其他的骚操作

有了运行代码块的能力,你可以在讲解Vue的时候,引入其他的内容配合讲解。比如绘制精美的交互式图表,再搭配Vue的动态绑定、插槽等等特性,写一篇图文并茂的文章,自然完爆那些用着默认主题,呆板、无神的鸡肋文。

正在画图…
▲ 演示


function paintCanvas(canvas){var myChart=echarts.init(document.getElementById(canvas));myChart.showLoading();var json_data={"name":"flare","children":[{"name":"analytics","children":[{"name":"cluster","children":[{"name":"AgglomerativeCluster","value":3938},{"name":"CommunityStructure","value":3812},{"name":"HierarchicalCluster","value":6714},{"name":"MergeEdge","value":743}]},{"name":"graph","children":[{"name":"BetweennessCentrality","value":3534},{"name":"LinkDistance","value":5731},{"name":"MaxFlowMinCut","value":7840},{"name":"ShortestPaths","value":5914},{"name":"SpanningTree","value":3416}]},{"name":"optimization","children":[{"name":"AspectRatioBanker","value":7074}]}]},{"name":"animate","children":[{"name":"Easing","value":17010},{"name":"FunctionSequence","value":5842},{"name":"interpolate","children":[{"name":"ArrayInterpolator","value":1983},{"name":"ColorInterpolator","value":2047},{"name":"DateInterpolator","value":1375},{"name":"Interpolator","value":8746},{"name":"MatrixInterpolator","value":2202},{"name":"NumberInterpolator","value":1382},{"name":"ObjectInterpolator","value":1629},{"name":"PointInterpolator","value":1675},{"name":"RectangleInterpolator","value":2042}]},{"name":"ISchedulable","value":1041},{"name":"Parallel","value":5176},{"name":"Pause","value":449},{"name":"Scheduler","value":5593},{"name":"Sequence","value":5534},{"name":"Transition","value":9201},{"name":"Transitioner","value":19975},{"name":"TransitionEvent","value":1116},{"name":"Tween","value":6006}]},{"name":"data","children":[{"name":"converters","children":[{"name":"Converters","value":721},{"name":"DelimitedTextConverter","value":4294},{"name":"GraphMLConverter","value":9800},{"name":"IDataConverter","value":1314},{"name":"JSONConverter","value":2220}]},{"name":"DataField","value":1759},{"name":"DataSchema","value":2165},{"name":"DataSet","value":586},{"name":"DataSource","value":3331},{"name":"DataTable","value":772},{"name":"DataUtil","value":3322}]},{"name":"display","children":[{"name":"DirtySprite","value":8833},{"name":"LineSprite","value":1732},{"name":"RectSprite","value":3623},{"name":"TextSprite","value":10066}]},{"name":"flex","children":[{"name":"FlareVis","value":4116}]},{"name":"physics","children":[{"name":"DragForce","value":1082},{"name":"GravityForce","value":1336},{"name":"IForce","value":319},{"name":"NBodyForce","value":10498},{"name":"Particle","value":2822},{"name":"Simulation","value":9983},{"name":"Spring","value":2213},{"name":"SpringForce","value":1681}]},{"name":"query","children":[{"name":"AggregateExpression","value":1616},{"name":"And","value":1027},{"name":"Arithmetic","value":3891},{"name":"Average","value":891},{"name":"BinaryExpression","value":2893},{"name":"Comparison","value":5103},{"name":"CompositeExpression","value":3677},{"name":"Count","value":781},{"name":"DateUtil","value":4141},{"name":"Distinct","value":933},{"name":"Expression","value":5130},{"name":"ExpressionIterator","value":3617},{"name":"Fn","value":3240},{"name":"If","value":2732},{"name":"IsA","value":2039},{"name":"Literal","value":1214},{"name":"Match","value":3748},{"name":"Maximum","value":843},{"name":"methods","children":[{"name":"add","value":593},{"name":"and","value":330},{"name":"average","value":287},{"name":"count","value":277},{"name":"distinct","value":292},{"name":"div","value":595},{"name":"eq","value":594},{"name":"fn","value":460},{"name":"gt","value":603},{"name":"gte","value":625},{"name":"iff","value":748},{"name":"isa","value":461},{"name":"lt","value":597},{"name":"lte","value":619},{"name":"max","value":283},{"name":"min","value":283},{"name":"mod","value":591},{"name":"mul","value":603},{"name":"neq","value":599},{"name":"not","value":386},{"name":"or","value":323},{"name":"orderby","value":307},{"name":"range","value":772},{"name":"select","value":296},{"name":"stddev","value":363},{"name":"sub","value":600},{"name":"sum","value":280},{"name":"update","value":307},{"name":"variance","value":335},{"name":"where","value":299},{"name":"xor","value":354},{"name":"-","value":264}]},{"name":"Minimum","value":843},{"name":"Not","value":1554},{"name":"Or","value":970},{"name":"Query","value":13896},{"name":"Range","value":1594},{"name":"StringUtil","value":4130},{"name":"Sum","value":791},{"name":"Variable","value":1124},{"name":"Variance","value":1876},{"name":"Xor","value":1101}]},{"name":"scale","children":[{"name":"IScaleMap","value":2105},{"name":"LinearScale","value":1316},{"name":"LogScale","value":3151},{"name":"OrdinalScale","value":3770},{"name":"QuantileScale","value":2435},{"name":"QuantitativeScale","value":4839},{"name":"RootScale","value":1756},{"name":"Scale","value":4268},{"name":"ScaleType","value":1821},{"name":"TimeScale","value":5833}]},{"name":"util","children":[{"name":"Arrays","value":8258},{"name":"Colors","value":10001},{"name":"Dates","value":8217},{"name":"Displays","value":12555},{"name":"Filter","value":2324},{"name":"Geometry","value":10993},{"name":"heap","children":[{"name":"FibonacciHeap","value":9354},{"name":"HeapNode","value":1233}]},{"name":"IEvaluable","value":335},{"name":"IPredicate","value":383},{"name":"IValueProxy","value":874},{"name":"math","children":[{"name":"DenseMatrix","value":3165},{"name":"IMatrix","value":2815},{"name":"SparseMatrix","value":3366}]},{"name":"Maths","value":17705},{"name":"Orientation","value":1486},{"name":"palette","children":[{"name":"ColorPalette","value":6367},{"name":"Palette","value":1229},{"name":"ShapePalette","value":2059},{"name":"SizePalette","value":2291}]},{"name":"Property","value":5559},{"name":"Shapes","value":19118},{"name":"Sort","value":6887},{"name":"Stats","value":6557},{"name":"Strings","value":22026}]},{"name":"vis","children":[{"name":"axis","children":[{"name":"Axes","value":1302},{"name":"Axis","value":24593},{"name":"AxisGridLine","value":652},{"name":"AxisLabel","value":636},{"name":"CartesianAxes","value":6703}]},{"name":"controls","children":[{"name":"AnchorControl","value":2138},{"name":"ClickControl","value":3824},{"name":"Control","value":1353},{"name":"ControlList","value":4665},{"name":"DragControl","value":2649},{"name":"ExpandControl","value":2832},{"name":"HoverControl","value":4896},{"name":"IControl","value":763},{"name":"PanZoomControl","value":5222},{"name":"SelectionControl","value":7862},{"name":"TooltipControl","value":8435}]},{"name":"data","children":[{"name":"Data","value":20544},{"name":"DataList","value":19788},{"name":"DataSprite","value":10349},{"name":"EdgeSprite","value":3301},{"name":"NodeSprite","value":19382},{"name":"render","children":[{"name":"ArrowType","value":698},{"name":"EdgeRenderer","value":5569},{"name":"IRenderer","value":353},{"name":"ShapeRenderer","value":2247}]},{"name":"ScaleBinding","value":11275},{"name":"Tree","value":7147},{"name":"TreeBuilder","value":9930}]},{"name":"events","children":[{"name":"DataEvent","value":2313},{"name":"SelectionEvent","value":1880},{"name":"TooltipEvent","value":1701},{"name":"VisualizationEvent","value":1117}]},{"name":"legend","children":[{"name":"Legend","value":20859},{"name":"LegendItem","value":4614},{"name":"LegendRange","value":10530}]},{"name":"operator","children":[{"name":"distortion","children":[{"name":"BifocalDistortion","value":4461},{"name":"Distortion","value":6314},{"name":"FisheyeDistortion","value":3444}]},{"name":"encoder","children":[{"name":"ColorEncoder","value":3179},{"name":"Encoder","value":4060},{"name":"PropertyEncoder","value":4138},{"name":"ShapeEncoder","value":1690},{"name":"SizeEncoder","value":1830}]},{"name":"filter","children":[{"name":"FisheyeTreeFilter","value":5219},{"name":"GraphDistanceFilter","value":3165},{"name":"VisibilityFilter","value":3509}]},{"name":"IOperator","value":1286},{"name":"label","children":[{"name":"Labeler","value":9956},{"name":"RadialLabeler","value":3899},{"name":"StackedAreaLabeler","value":3202}]},{"name":"layout","children":[{"name":"AxisLayout","value":6725},{"name":"BundledEdgeRouter","value":3727},{"name":"CircleLayout","value":9317},{"name":"CirclePackingLayout","value":12003},{"name":"DendrogramLayout","value":4853},{"name":"ForceDirectedLayout","value":8411},{"name":"IcicleTreeLayout","value":4864},{"name":"IndentedTreeLayout","value":3174},{"name":"Layout","value":7881},{"name":"NodeLinkTreeLayout","value":12870},{"name":"PieLayout","value":2728},{"name":"RadialTreeLayout","value":12348},{"name":"RandomLayout","value":870},{"name":"StackedAreaLayout","value":9121},{"name":"TreeMapLayout","value":9191}]},{"name":"Operator","value":2490},{"name":"OperatorList","value":5248},{"name":"OperatorSequence","value":4190},{"name":"OperatorSwitch","value":2581},{"name":"SortOperator","value":2023}]},{"name":"Visualization","value":16540}]}]};myChart.hideLoading();myChart.setOption(option={tooltip:{trigger:'item',triggerOn:'mousemove'},series:[{type:'tree',data:[json_data],top:'18%',bottom:'14%',layout:'radial',symbol:'emptyCircle',symbolSize:7,initialTreeDepth:3,animationDurationUpdate:750}]})}paintCanvas('chart1');

或者做点小小的统计:

正在画图…
▲ 演示


function getVirtulData(year) {
year = year || '2019';
var date = +echarts.number.parseDate(year + '-01-01');
var end = +echarts.number.parseDate((+year + 1) + '-01-01');
var dayTime = 3600 * 24 * 1000;
var data = [];
for (var time = date; time < end; time += dayTime) {
data.push([
echarts.format.formatTime('yyyy-MM-dd', time),
Math.floor(Math.random() * 10000)
]);
}
return data;
}
function paintCanvas(canvas) {
var myChart = echarts.init(document.getElementById(canvas));
myChart.showLoading();
var data = getVirtulData(2018);
option = {
backgroundColor: '#f5f5f5',
title: {
top: 30,
text: '2018 年我每天的开销',
subtext: '数据纯属虚构',
left: 'center',
textStyle: {
color: '#333'
}
},
tooltip: {
trigger: 'item'
},
legend: {
top: '30',
left: '100',
data: ['金额', 'Top 10'],
textStyle: {
color: '#333'
}
},
calendar: [{
top: 100,
left: 'center',
range: ['2018-01-01', '2018-06-30'],
splitLine: {
show: true,
lineStyle: {
color: '#000',
width: 4,
type: 'solid'
}
},
yearLabel: {
formatter: '{start} 上半年',
textStyle: {
color: '#333'
}
},
itemStyle: {
normal: {
color: '#323c48',
borderWidth: 1,
borderColor: '#111'
}
}
}, {
top: 300,
left: 'center',
range: ['2018-07-01', '2018-12-31'],
splitLine: {
show: true,
lineStyle: {
color: '#000',
width: 4,
type: 'solid'
}
},
yearLabel: {
formatter: '{start} 下半年',
textStyle: {
color: '#333'
}
},
itemStyle: {
normal: {
color: '#323c48',
borderWidth: 1,
borderColor: '#111'
}
}
}],
series: [{
name: '金额',
type: 'scatter',
coordinateSystem: 'calendar',
data: data,
symbolSize: function (val) {
return val[1] / 500;
},
itemStyle: {
normal: {
color: '#ddb926'
}
}
}, {
name: '金额',
type: 'scatter',
coordinateSystem: 'calendar',
calendarIndex: 1,
data: data,
symbolSize: function (val) {
return val[1] / 500;
},
itemStyle: {
normal: {
color: '#ddb926'
}
}
}, {
name: 'Top 10',
type: 'effectScatter',
coordinateSystem: 'calendar',
calendarIndex: 1,
data: data.sort(function (a, b) {
return b[1] - a[1];
}).slice(0, 10),
symbolSize: function (val) {
return val[1] / 500;
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
itemStyle: {
normal: {
color: '#f4e925',
shadowBlur: 10,
shadowColor: '#333'
}
},
zlevel: 1
}, {
name: 'Top 10',
type: 'effectScatter',
coordinateSystem: 'calendar',
data: data.sort(function (a, b) {
return b[1] - a[1];
}).slice(0, 10),
symbolSize: function (val) {
return val[1] / 500;
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
itemStyle: {
normal: {
color: '#f4e925',
shadowBlur: 10,
shadowColor: '#333'
}
},
zlevel: 1
}]
};
myChart.hideLoading();
myChart.setOption(option);
}
paintCanvas('chart2');

反正都是刷刷存在感,为什么不用你脑中那些乱七八糟的JS知识,让你的文章更骚一点?你说呢,秀儿?

本该耀眼的文章,你怎么好意思让它丑陋不堪,寡淡无味,泯然于众?!

The End. \(\Box\)

转载于:https://www.cnblogs.com/conmajia/p/in-article-js.html

反正你们写的都是没有即时演示的鸡肋教程,我为什么不去看官方文档?相关推荐

  1. 什么!作为程序员你连英文版的官方文档都看不懂?

    目录 一.笔者英文基础介绍 二.为啥程序员需要阅读官方文档? 三.如何才能无障碍阅读英文文档? 四.坚持!坚持!坚持! 五.来个约定吧! 这篇文章不聊技术,我们来聊一个某种程度上比技术更重要的话题:一 ...

  2. 写最好的Docker安装最新版MySQL8(mysql-8.0.31)教程(参考Docker Hub和MySQL官方文档)

    一.前言   MySQL官方安装包下载地址:   https://dev.mysql.com/downloads/mysql/     Docker Hub官方网址:   https://hub.do ...

  3. 都在夸官方文档 Vue.js 2021 年度报告出炉!

    整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 作为前端开发框架三剑客之一,Vue 自 2014 年发布以来,成为很多开发者必备的工具. 近日,国外软件开发机构 Monterail 在对 ...

  4. 都在夸Vue文档简洁易懂?官方文档编写指南了解一下

    来源:Vue官方文档 编写文档是一种换位思考的练习.我们并不是在描述客观现实--源代码已经做到了.我们的工作是帮助塑造用户与 Vue 生态系统之间的关系.这份不断发展的指南提供了一些规则和建议,说明如 ...

  5. Tensorflow官方文档中文版——第二章(瞎奖杯写)

    包含如下几个部分: 1.面向机器学习初学者的 MNIST 初级教程 2.面向机器学习专家的 MNIST 高级教程 3.TensorFlow 使用指南 4.卷积神经网络 5.单词的向量表示(word e ...

  6. php怎么写官网,PHP - Manual: 简介 (官方文档)

    简介 pthreads 是一组允许用户在 PHP 中使用多线程技术的面向对象的 API. 它提供了创建多线程应用所需的全套工具. 通过使用 Thread, Worker 以及 Threaded 对象, ...

  7. 第3次翻译了 Pandas 官方文档,叒写了这一份R万字肝货操作!

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 今天,我继续为大家讲述Pandas如何实现R语言的相关操作. 由于 Pandas 旨在提供人们使用 R 进行的大量数据操作和分析功能,因此本页开始提供 ...

  8. 接入微信登录---(由于微信的官方文档写的有点散,特此记录一下)

    最近app上Goole市场,三方登录这块原先用的是mob的,但是Goole那边检测到mob会自动收集手机用户的手机号码信息并上传到mob的后台,所以App被下架了,没办法就让直接对接微信登录.下面就是 ...

  9. stm32f103控制舵机(数字舵机和模拟舵机都一样)双通道(代码改与官方文档)

    #include "stm32f10x.h" #include "bsp_GeneralTim.h" void delay(uint32_t count) { ...

最新文章

  1. 架构师写的BUG,非比寻常
  2. 中国电信天翼Live究竟胜算几何?
  3. UVa1587 Box(排序)
  4. CRUD-员工列表 大体流程
  5. C++ Vector 使用心得
  6. 基因组浏览器IGV的安装和图形解读
  7. 哈夫曼编解码原理与实现【转载】
  8. 抢红包概率是随机的吗_顺丰发5亿红包给员工:管理学的随机奖励还能这么玩...
  9. python np.cos 转化为角度_postman接口用例转化为python自动化测试用例(三)
  10. Atlassian JIRA 插件开发之三 创建
  11. UVa 10048 (Floyd变形) Audiophobia
  12. iOS:URL Scheme(完结)(18-1-3更)
  13. silverlight 地图轨迹回放
  14. Android计算器(仿小米计算器)
  15. 路由器的下一跳计算(网关)
  16. python 实现串口通信USB转232自闭环、USB转485测试
  17. 幼儿园计算机技能大赛,幼儿园教师技能大赛的心得体会.docx
  18. 微积分在金融投资的应用
  19. 给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
  20. 2021年全国大学生电子设计竞赛F题中数字识别这一技术分支实践与学习笔记

热门文章

  1. 店宝宝:透视拼多多财报 “拼”时代意味着什么?
  2. excel列分隔及数据填充处理
  3. 创建快捷方式(比如类注释,快捷语句.....)
  4. 为什么现在网安培训机构风评不行?
  5. win10不显示手机连接到服务器,手机连接win10系统热点显示无互联网连接的解决方法...
  6. PTA 习题3-5 三角形判断 (15分)
  7. Docker 的未来
  8. iPhone--iPhone6怎么激活?两种苹果iPhone6激活教程图文详解
  9. H5页面微信分享流程和实现(uni-app)
  10. 手机键盘九宫格 -- HW