/

记录零碎技术栈

0x00 前言

好久没有写东西做总结了,应该时时更新,日日总结,保持对新事物的好奇心,回顾所学旧的知识,融汇贯通。因为实训接触了一些新的玩意儿,如: Vuejs,Flutter, Kotlin 等,也刚好有时间,就干脆多了解一些,顺便做了一点笔记,丰富一下自己的认知。没有实际干货,也不算是技术栈,不管以后会不会深入学习,先记录一下吧。

0x01 Vue.js

Vue.js 是以数据驱动和组件化思想构建的一个JavaScript MVVM库,提供了简洁和易于理解的的API,能够快速上手。

什么是MVVM(Model-View-ViewModel),简单来说就是一种设计模式,借鉴了MVC的思想,在前端页面中,将Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离,对于现在多功能的前端和复杂业务逻辑的后端,以及技术分工的划分,这其实是技术发展的一个必然趋势。把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。对于MVVM,我们并不用关注DOM,而是直接操作JavaScript对象,去除操作DOM的繁琐步骤。

使用Vue其实就是一个定义MVVM各个组成部分的过程,可以归结为:定义View,定义Model,创建Vue实例(连接View 和Model)。目前只是做一个简单了解,要是想要更深入的了解或是使用,还得好好学习一番。下面是一个简单例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>

<body>
<!--这是View-->
<div id="app">
{{ message }}
</div>
</body>

<script src="js/vue.js"></script>
<script>
// 这是Model
var exampleData = {
message: 'Hello World!'
}

// 创建一个 Vue 实例或 "ViewModel"
// 它连接 View 与 Model
new Vue({
el: '#app',
data: exampleData
})
</script>

</html>

0x01 Flutter框架

Flutter 是 Google推出并开源的移动应用开发框架,开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。

之前一直没有了解和关注移动开发这一块,最近也是因为实训内容涉及到Android开发,所以特意去了解了一下。对于移动开发需要区分原生开发和跨平台技术,原生应用程序是指某一移动平台(比如iOS 和安卓)所特有的应用,使用相应平台支持的开发工具和语音,并直接调用系统提供的SDK API。比如Android原生应用就是指使用Java或Kotlin语言直接调用Android SDK开发的应用程序;而iOS原生应用就是指通过Objective-C或Swift语言直接调用iOS SDK开发的应用程序。

原生开发的优势在于速度快、性能高、可以实现复杂动画及绘制,整体用户体验好,但存在动态化和开发成本较大的问题,因此诞生了一些跨平台的动态化框架,而Flutter就是其中之一,可以看一下官网给的框架图:

flutter

属于一种自绘UI+原生的技术模式,性能比较好,开发效率也比较高,而且也是一种很新的框架,由Google在2017年的 I/O 大会上首次推出,至今短短两年的时间,其生态系统快速增长,相信未来发展也很值得期待。

由于目前Flutter仍处于快速发展的阶段,其应用场景的资讯和参考资料并不是很多,想要深入了解可以通过官网和源码等渠道进行学习,包括Dart 语言,这些对于我个人来说都是很陌生的东西,现在发现可以学习的东西太多了,需要学习的东西也很多,保持一颗好奇心,不断去尝试,技术人就是要不断学习的。

0x02 Kotlin 语言

是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言,主要原因可能还是因为Google 和 Oracle 的官司纠纷,导致Google不得不推出Kotlin,当然作为Android开发的核心语言Java,在未来的发展中依然具有巨大影响力。

另外值得一提的是Oracle公司,近些年对于开源界并不友好,收购了Sun公司(Java,MySQL),开源社区因为担心MySQL被闭源,另外维护了MariaDB作为其分支,之前在数据库课程实验时使用的就是MariaDB,因此顺便了解了Sun公司及其整个发展历程,从兴起到巅峰再到衰亡,也是十分感叹,信息技术行业真的是一个不断更新变换的行业,无论是技术还是产业,整个生态都是快节奏的,真的需要把握时机,顺应变换,更新迭代,否则将会被淘汰。

对于开源,在计算机行业也只有在计算机行业才能实现和发展的,这是一种行业特性,对于传统行业是无法做到的,开源是一种精神,开源不等于免费,知识产权也是需要保护,在现实利益的趋势下,到底该如何定义开源,真的不是一两句能够说清楚的,对于开发者来讲当然应高喊开源万岁。

0x03 Gradle 工具

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。

这个东西主要是在使用Android Studio开发应用时,发现在使用Gradle构建项目,不太清楚到底是个啥就查了一下,简单来说gradle就是一个基于JVM的构建工具,支持局部构建,支持多方式依赖管理,与ant、maven、ivy有良好的相容相关性,gradle适用于任何结构的工程。

0x04 小结一下

唉~搞计算机的要学的东西还真多啊,关于硬件嵌入式Linux的学习还没有总结呢,那个好像也很多,等下一篇更新吧。