PersonalBlog icon indicating copy to clipboard operation
PersonalBlog copied to clipboard

:memo: Nealyang personal blog

Results 104 PersonalBlog issues
Sort by recently updated
recently updated
newest added

## 前言 去年面试了很多前端的小伙伴,当然,结局是迟迟遇不到意中人~回头想想,其实前端面试,尤其是面试p6的题目,其实就那么些. 但话又说回来,就那么些。。。是哪么些呢? 在畅想自己未来技术方向的时候,愈发的感受到基础的重要性,所以想今年能够潜下心来,在学习新知识的同时能够总结所有,我认为我应该理解和掌握的知识。 **原文地址链接:[personal blog](https://github.com/Nealyang/PersonalBlog/issues/17)** ## 调用栈 我们都知道,JavaScript 是一门单线程语言,也就是说,在同一时间,他只能做一件事,同时这意味着他只有一个调用栈。 而所谓的调用栈,其实就是一种数据结构,我们大概可以理解为```LIFO```的栈结构。而他做的事情也非常的简单,就是维护我们运行的函数(这样说不准确,后面解释)。暂时,我们可以将调用栈做的事情简单理解为,当我们运行一个函数的时候,他会将其放置到栈顶,当这个函数运行结束后,再从栈顶弹出。 让我们看下下面的代码运行: ``` function cat(name){ } ``` ## 执行上下文 在介绍 JavaScript 的调用栈,其实不得不提到执行上下文,

JavaScript

## 前言 截止目前,我们完成了基本的页面UI编写,毕竟作为一款社区app,登陆功能也是必须的。但是登陆功能对接我们不同业务可能场景不同,无论是存储session还是token或者uid,都是根绝自己业务需求来的。所以这里我们大致简单的模拟一下 ## 登陆page 从掘金web版的开发api可以看出,登陆通过调用```https://juejin.im/auth/type/phoneNumber``` ,通过post请求去发送我们账号、密码。但是这里我们并没有必要去模拟,毕竟不同公司,不同业务对于敏感数据的处理是不同的。 - lib/pages/login.dart ``` Column( children: [ TextField( keyboardType: TextInputType.text, decoration: InputDecoration( contentPadding: const EdgeInsets.all(10.0), icon: Icon(Icons.person), labelText: '请输入用户名', ), onChanged: _userNameChange, autofocus: false,...

Flutter

## 前言 由于前面UI功能基本以及涵盖我们这一章节中所涵盖的知识点。所以活动和开源库的页面,我们将放到一小节中,将关键代码再熟悉一番。不再重复编写同样章节内容。完成该章节我们将完成如下功能开发: ![img](https://user-gold-cdn.xitu.io/2018/11/29/1675e3547719c562?w=355&h=740&f=gif&s=504120) 代码地址为:[代码地址](https://github.com/Nealyang/flutter/tree/da249cbb0e8a8529aa6b5724ae52153e61cc8b94/flutter_juejin?1542198569455) ## 定义数据model - lib/model/activity_cell.dart ``` import '../util/util.dart'; class ActivityCell{ String pic; String detailUrl; String title; String city; String time; ActivityCell({ this.city, this.detailUrl, this.pic, this.time, this.title...

Flutter

## 前言 如上,我们完成了首页、沸点的UI及功能的编写。小册这部分我们没有涉及到的知识点或许就是头部加上横切bar的效果。本篇完成,我们将实现如下效果: ![img](https://user-gold-cdn.xitu.io/2018/11/29/1675e341a54831d7?w=355&h=740&f=gif&s=470174) ## TabBar & TabBarView 横切bar的效果,我们使用widget:TabBar + TabBarView。由于我们的顶部导航栏是不确定的(从接口获取数据),所以这里我们需要新建有状态类```StatefulWidget```,并且需要实例化 TabController 来设置顶部导航栏的个数。 - lib/pages/book_page.dart ``` @override Widget build(BuildContext context) { if (_navData.length == 0) { return Center( child: CircularProgressIndicator(),...

Flutter

## 前言 上一章节中,我们完成了沸点页面部分UI的编写,这一章节,我们将完成沸点页面剩余页面的代码编写 ## cell组件编写 通过拿到的cell数据去判断为哪一类cell ``` widget.pinsCell.url == '' ? PinsCellPic( pics: widget.pinsCell.pictures, ) : PinsCellUrl( url: widget.pinsCell.url, urlPic: widget.pinsCell.urlPic, urlTitle: widget.pinsCell.urlTitle, ), ``` - 当cell中的数据包含url这个的时候,说明是link类型的cell cell类型的UI编写比较简单,我们将完成如下的UI编写 ![img](https://user-gold-cdn.xitu.io/2018/11/29/1675e33afba2a4ff?w=698&h=338&f=png&s=21096) -...

Flutter

## 介绍 这一章节代码量可能会比较大,我们将完成沸点的UI以及相应功能编写,完成此篇,你将得到如下的界面效果: ![](https://user-gold-cdn.xitu.io/2018/11/29/1675e32a4c41ff36?w=355&h=740&f=gif&s=1305946) ## 数据准备 由于之前的首页编写中已经介绍了关于本地数据model的使用,这里我们将直接使用线上数据来进行我们的代码编写 通过掘金web版的公开api我们可以知道沸点的请求api地址 - lib/api.dart ``` // 沸点 static const String PINS_LIST = 'https://short-msg-ms.juejin.im/v1/pinList/recommend'; ``` 从沸点的每一个cell中,我们需要去分析构成该UI,大致需要的字段,通常,在我们的项目开发中,这些也是与开发约束的。 通过分析,我们可以看到沸点的每一个cell分为两种,文字+图片 以及文字+链接的形式,当然,其中每一个沸点也可能没有图片,也有的沸点包含主题、文字中含有链接。这些,在我们定义 沸点的数据model的时候都应该包含进去,所以如下,我们提取我们需要字段 - lib/model/pins_cell.dart ``` Map user; String...

Flutter

## 再回首 往事如梦... 截止目前,我们基本完成了一个app该有的功能了,甚至说一个项目该有的样子了。 后面一般的页面其实也就是如此,所以写到这的同学们,已经可以完成一些基本页面的编写了。简单的说,目前已经入门了。甚至说,已经可以做App了 其实学习技术也就是这样,我们需要掌握的是“抄袭”的技巧。如何查找自己需要的widget,如何查找我们需要的 package,以及 如何查看 “widget”的源码,查看他具有的属性、以及类型 学到这里,可能有些同学会心里犯怵,我就写了这么些功能,怎么可以胜任编写App的大旗呢,比如xxx我就不会,比如xxx我也不知道。 对,不可否认,随着项目的开发,你肯定会遇到一些你不知道知识点,那么,这不就是项目经验的积累么?遇到问题,解决问题不就是自身能力的提高么?我经常说给自己的一句话这里共享给大家:三年工作经验,不是 1\*1\*1,而应该是 1+1+1。 ## Everything is decided with you 对于后面的 - 小册 UI & 功能 编写 - 沸点 UI &...

Flutter

## 准备工作 > 笔者 Flutter 版本及环境信息:Channel beta, v0.11.9, on Mac OS X 10.14.1 18B75 版本更新向前兼容,笔者更新版本后,项目依旧运行如初。目前笔者的flutter版本信息为: ``` Flutter 1.0.0 • channel beta • https://github.com/flutter/flutter.git Framework • revision 5391447fae (5 days ago)...

Flutter

## 前言 Flutter的开发语言是Dart,就类似Android的开发语言是java一样,这个不需要过多介绍,本章节我们简单介绍下Dart中的一些语法,篇幅原因,不会谈及太深。笔者建议,官方Api浏览一遍即可,重在实操。涉及到不明白或者需要去查的部分可以再去翻阅文档。 这里我们会重点说下**类** ## 文档推荐 [Dart中文文档](https://www.kancloud.cn/marswill/dark2_document/709087) [Dart 官网](https://www.dartlang.org/) [Dart api](https://docs.flutter.io/flutter/dart-core/dart-core-library.html) ## 关键概念 - Dart中所有东西都是对象,每一个对象是类的实例,无论是数字、字符串、类还是函数 - Dart是强类型语言,但是也只是var声明,因为Dart会推断变量类型 - Dart支持通用类型,比如List``````也可以写成List`````` - Dart运行冲```main```函数开始,支持绑定到类或者对象的函数 - Dart没有空开、私有的关键字,但是可以通过对象里下划线_开头去定义一个变量,则为私有变量 ## 数据类型与修饰符 Dart语言支持如下数据类型 - number - string...

Flutter

![](https://user-gold-cdn.xitu.io/2019/1/14/1684af2def93896e?w=1629&h=1080&f=jpeg&s=102144) ## 介绍 国际惯例,先自我介绍下,我是[Nealyang](https://github.com/Nealyang),16年毕业于东北大学,目前在阿里巴巴任职前端er。 2018-01-01 离职于[环球网](http://www.huanqiu.com/),离京后带着妹子来到了杭州,准确的说,离职后,在家里准备面试准备了三天,大致梳理了自己的技术专长(发现没有专长,尴尬了不是)。 来杭州陆陆续续面试的公司不多,其实抱着大厂梦,所以小公司的面试都是不怎么去的,找工作大概花了一个月的时间,主要是阿里的流程实在太长了,好在遇到现在的主管,各种帮我[剑平](https://github.com/minghe)催面试进度,让我面试后有很长一段时间过年去浪。 在杭州分别拿下网易、滴滴、阿里的offer,说实话,感觉运气成分还是相当大的。沉淀出一份面经[《16年毕业的前端er在杭州求职ing》](https://juejin.im/post/5a64541bf265da3e2d338862),里面的面试题没有具体总结是大厂的还是小厂,当时也是现在宾馆没事,随笔一些。。。没想到上了个热门。 目前就职于[阿里拍卖](https://github.com/alibaba-paimai-frontend),司法组前端开发一枚 ## 我的 2018 ### 关于生活 2018 真的比我想象中过的要累很多,很多计划也在中途被打乱过。 来到杭州,入职阿里后可能没多久就买了个房,目前正每个月1w+的还贷中。。。当然,也感谢妹子能够陪我到了上海(实习),创了北京,在拼到杭州。 ![gif](https://img.alicdn.com/tfs/TB10.43B7voK1RjSZFDXXXY3pXa-480-480.gif) 2019 可能就要结婚啦~~ 关于个人呢,除了攒钱过日子学技术,还想好好锻炼身体~继续呼唤着六块腹肌,坚持每周能打一次篮球。 ![](https://user-gold-cdn.xitu.io/2019/1/14/1684aed0dba1789b?w=960&h=960&f=jpeg&s=51844) 这里放一张刚租到蒋村时候随手拍的一张果照吧~~ (╯▽╰) 当然,也飞到过广州参加中国首届React开发者大会,不能说收获满满,也是感慨万千。 ![](https://user-gold-cdn.xitu.io/2019/1/14/1684af15ce1070dd?w=1620&h=1080&f=jpeg&s=125270) 最后呢,美滋滋的可能今年加了好多好多国内外大牛的微信(虽然没啥卵用),but who Who knows  ...

杂谈