暂时未有相关云产品技术能力~
暂无个人介绍
ES6之前的JavaScript面向对象比较不好理解,涉及到很多知识和思想。 ES6增加了class和extends来实现类的封装和继承,但是通过babel转换成ES5之后还是之前的一套逻辑。 这里,我打算用四篇文章,来讲解一下关于ES5中面向对象的知识体系,一起学习一下吧!
JavaScript防抖和节流
this是JavaScript中的一个关键字,但是又一个相对比较特别的关键字,不像function、var、for、if这些关键字一样,可以很清楚的搞清楚它到底是如何使用的。 this会在执行上下文中绑定一个对象,但是是根据什么条件绑定的呢?在不同的执行条件下会绑定不同的对象,这也是让人捉摸不定的地方。 这一次,我们一起来彻底搞定this到底是如何绑定的吧!
某些应用程序可能需要使用移动设备进行拍照或者选择相册中的照片,Flutter官方提供了插件:image_picker
某些应用程序可能需要使用移动设备进行拍照或者选择相册中的照片,Flutter官方提供了插件:image_picker
Flutter打包发布
单元测试是针对一个函数或者类进行测试
开发一个App,如果我们的App需要面向不同的语种(比如中文、英文、繁体等),那么我们需要对齐进行国际化开发
真正开发一个完成的跨平台App需要针对不同的平台设置不同的应用信息 比如应用标识、应用名称、应用图标、应用启动图等等
目前移动端的设备已经非常多,并且不同的设备手机屏幕也不相同。 目前做移动端开发都要针对不同的设备进行一定的适配,无论是移动原生开发、小程序、H5页面。 Flutter中如何针对不同的手机屏幕来进行适配呢?我们一起来聊聊这个话题。
在Flutter开发中,我们可以通过定义 Theme,复用颜色和字体样式,从而让整个app的设计看起来更一致。
对于一个前端的App来说,添加适当的动画,可以给用户更好的体验和视觉效果。所以无论是原生的iOS或Android,还是前端开发中都会提供完成某些动画的API。 Flutter有自己的渲染闭环,我们当然可以给它提供一定的数据模型,来让它帮助我们实现对应的动画效果。
我们通常会用屏(Screen)来称呼一个页面(Page),一个完整的App应该是有多个Page组成的。 在之前的案例(豆瓣)中,我们通过IndexedStack来管理了首页中的Page切换: 首页-书影音-小组-市集-我的 通过点击BottomNavigationBarItem来设置IndexedStack的index属性来切换 除了上面这种管理页面的方式,我们还需要实现其它功能的页面跳转:比如点击一个商品跳转到详情页,某个按钮跳转到发送朋友圈、微博的编辑页面。 这种页面的管理和导航,我们通常会使用路由进行统一管理。
在大前端的开发中,必然存在各种各样和用户交互的情况:比如手指点击、手指滑动、双击、长按等等。
状态管理是声明式编程非常重要的一个概念,我们在前面介绍过Flutter是声明式编程的,也区分声明式编程和命令式编程的区别。 这里,我们就来系统的学习一下Flutter声明式编程中非常重要的状态管理
Flutter的Widget-Element-RenderObject
在学习Flutter的过程中,我们知道Widget只是最终渲染对象(RenderObject)的配置文件,它会在build的时候频繁的销毁和创建,那么,我们不需要担心他的创建和销毁带来的性能问题吗? 其实大可不必,因为Dart针对Flutter的Widget的创建和销毁专门做过优化,这也是Flutter在多种语言中选择Dart的一个重要因素,甚至我们还可以刻意利用这一点。 下面这篇文章解析了Dart的GC(Garbage Collector),对它做了个翻译以及部分内容的解析,包括一些排版,有不对的地方大家多多指正。 原文地址:https://medium.com/flutter/flu
在开发中,服务端通常给我们返回的是JSON数据,我们需要将JSON数据转成我们的模型对象来使用。 在Flutter中,有几种JSON转模型的方式,我们还是以豆瓣为例,来进行一个演练;
项目中展示的大部分数据都是来自服务器,我们需要向服务器请求数据,并且对他们进行解析展示。 向服务器发出请求就需要用到网络请求相关的知识。
接口是TypeScript中一个非常重要的概念,在其他很多语言中已经有了并且被大量使用。本来这个章节我打算更新其他的内容,但是发现很多东西都依赖接口,所以我们先来学习一下接口相关的知识吧!
这个章节我们来学习如何在TypeScript中定义变量,以及JavaScript类型在TypeScript中的变化以及TypeScript中新增的类型
学习任何的开发,我们都需要对应的环境:包括TypeScript的编译环境和开发工具。这个章节里面,我们就来完成它们的搭建,后续就可以愉快的来写TypeScript代码了。
当你点开这篇文章时,我相信你已经在很多地方都已经听说过或者见过TypeScript了。但是可能对TypeScript依然有很多问号:TypeScript到底是什么?为什么每个人都在说TypeScript怎么怎么好,到底好在哪里?Angular、Vue3接连使用TypeScript进行了重构是否意味着我们必须掌握TypeScript,它们又为什么要选择TypeScript?我需要什么样的基础才能学会或者说学好TypeScript呢?没有关系,在这个章节中我们就来解答上面的疑惑,并且我希望大家学完这个章节可以对一个概念有深入的理解,就是 类型思维。不着急,下面就让我们和TypeScript有一场美
学习完列表渲染后,我打算做一个综合一点的练习小项目:豆瓣Top电影排行列表;
列表是移动端经常使用的一种视图展示方式,在Flutter中提供了ListView和GridView。 为了可能展示出更好的效果,我这里提供了一段Json数据,所以我们可以先学习一下Json解析。
列表是移动端经常使用的一种视图展示方式,在Flutter中提供了ListView和GridView。 为了可能展示出更好的效果,我这里提供了一段Json数据,所以我们可以先学习一下Json解析。
为了实现界面内组件的各种排布方式,我们需要进行布局,和其他端不同的是,Flutter中因为万物皆Widget,所以布局也是使用Widget来完成的。 Flutter中的布局组件非常多,有31个用于布局的组件,Flutter布局组件[1]; 在学习的过程中,我们没必要一个个全部掌握,掌握最常用的,一些特殊的组件用到时去查文档即可; Flutter将布局组件分成了 单子布局组件(Single-child layout widgets) 和 多子布局组件(Multi-child layout widgets)
这个章节本来打算讲解Flutter的渲染原理,但是学习初期过多的讲解原理性的内容,并不利于大家快速入门和上手,做出一些带效果的内容; 所以,我打算换一种思路,先讲解一些组件的用法,让大家习惯Flutter的开发过程和模式,再回头去巩固原理性的知识; 另外,在讲解这些Widget的时候,我并不打算将所有的属性一一列出,因为没有意义,也记不住; 我后面打算有一个专题是关于Flutter布局的,会选出一些好看的布局界面带着大家一起来完成:美团页面、京东页面、B站页面等等,某些我目前没有讲到的属性,后面应用的会再进行讲解;
这个章节本来打算讲解Flutter的渲染原理,但是学习初期过多的讲解原理性的内容,并不利于大家快速入门和上手,做出一些带效果的内容; 所以,我打算换一种思路,先讲解一些组件的用法,让大家习惯Flutter的开发过程和模式,再回头去巩固原理性的知识; 另外,在讲解这些Widget的时候,我并不打算将所有的属性一一列出,因为没有意义,也记不住; 我后面打算有一个专题是关于Flutter布局的,会选出一些好看的布局界面带着大家一起来完成:美团页面、京东页面、B站页面等等,某些我目前没有讲到的属性,后面应用的会再进行讲解;
在开发中,某些Widget情况下我们展示的数据并不是一层不变的: 比如Flutter默认程序中的计数器案例,点击了+号按钮后,显示的数字需要+1; 比如在开发中,我们会进行下拉刷新、上拉加载更多,这时数据也会发生变化; 而StatelessWidget通常用来展示哪些数据固定不变的,如果数据会发生改变,我们使用StatefulWidget;
Flutter开发初体验
Flutter开发初体验
在写这篇文章之前,我一直在犹豫,要不要在这里讲解Dart的异步相关话题,因为这部分内容很容易让初学者望而却步: 1、关于单线程和异步之间的关系,比较容易让人迷惑,不过我一定会用自己的方式尽可能让你听懂。 2、大量的异步操作方式(Future、await、async等),目前你看不到具体的应用场景。(比如你学习过前端中的Promise、await、async可能会比较简单,但是我会假设你没有这样的基础)。 不过,听我说:如果这一个章节你学完之后还有很多疑惑,没有关系,在后面用到相关知识时,回头来看,你会豁然开朗。
在写这篇文章之前,我一直在犹豫,要不要在这里讲解Dart的异步相关话题,因为这部分内容很容易让初学者望而却步: 1、关于单线程和异步之间的关系,比较容易让人迷惑,不过我一定会用自己的方式尽可能让你听懂。 2、大量的异步操作方式(Future、await、async等),目前你看不到具体的应用场景。(比如你学习过前端中的Promise、await、async可能会比较简单,但是我会假设你没有这样的基础)。 不过,听我说:如果这一个章节你学完之后还有很多疑惑,没有关系,在后面用到相关知识时,回头来看,你会豁然开朗。
这里,我只列出来相对其他语言比较特殊的运算符,因为某些运算符太简单了,不浪费时间,比如+、-、+=、==。 你可能会疑惑,Dart为什么要搞出这么多特殊的运算符呢? 你要坚信一点:所有这些特殊的运算符都是为了让我们在开发中可以更加方便的操作,而不是让我们的编码变得更加复杂。
这里,我只列出来相对其他语言比较特殊的运算符,因为某些运算符太简单了,不浪费时间,比如+、-、+=、==。 你可能会疑惑,Dart为什么要搞出这么多特殊的运算符呢? 你要坚信一点:所有这些特殊的运算符都是为了让我们在开发中可以更加方便的操作,而不是让我们的编码变得更加复杂。
这里,我只列出来相对其他语言比较特殊的运算符,因为某些运算符太简单了,不浪费时间,比如+、-、+=、==。 你可能会疑惑,Dart为什么要搞出这么多特殊的运算符呢? 你要坚信一点:所有这些特殊的运算符都是为了让我们在开发中可以更加方便的操作,而不是让我们的编码变得更加复杂。
Google为Flutter选择了Dart就已经是既定的事实,无论你多么想用你熟悉的语言,比如JavaScript、Java、Swift、C++等来开发Flutter,至少目前都是不可以的。 在讲解Dart的过程中,我会假定你已经有一定的编程语言基础,比如JavaScript、Java、Python、C++等。
这个章节我们学习如何安装Flutter,并且写第一个Flutter程序。 之后在iOS模拟器和Android模拟器上分别跑起来我们的应用程序(之后我会讲解如何跑在真机上)。 当然,这个程序中的很多代码你可能并不是特别理解,里面涉及到一些dart知识,也涉及到一些flutter的东西。这些都没有关系,我们的目的是把这个工程跑起来,就表示你的环境是OK的。