前端工程师移动应用开发入门指南

前端工程师开发移动应用,首先需要厘清的就是当前移动应用开发的技术路线。目前主流的方法有渐进式 Web 应用和混合应用两种方式。

渐进式 Web 应用

渐进式 Web 应用( Progressive Web Application,简称 PWA )是一种完全基于浏览器的技术。通常在浏览器首次访问 PWA 之后,用户只要将页面固定在移动端桌面上,下次直接从桌面打开进行访问即可。但是 PWA 和普通 Web 应用的不同点在于,它在离线模式下仍能进行访问。其中的关键技术是 Web App ManifestService Worker。前者用于管理应用的资源,后者用于管理应用系统的缓存,以达到离线加载的目的。

混合应用

混合应用(Hybrid)是一种依托于 WebView (一种全屏的内置浏览器)和原生应用容器的开发技术。原生应用容器用来承载 WebView, 而 WebView 用来展现 HTML/CSS/JS 组合而成的前端内容。Ionic 就是目前流行的、用来开发混合应用的框架。

参考链接

Progressive Web Apps

TensorFlow Node 环境搭建入门

Photo by Artur Łuczka on Unsplash

准备工作

代理设置

大陆开发者若想使用 TensorFlow 的 Node 版本—— tfjs-node 不是件容易的事情。这是因为在 npm 安装过程中,需要 TF 的二进制文件。而由于此文件挂载在 Google Cloud Storage 上,因此需要设置代理方能下载。假如使用 VSCode,可以按照如下方式设置代理。设置完之后记得把代理软件设置为全局模式,并重启 VSCode。

继续阅读TensorFlow Node 环境搭建入门

宝宝出生日记

3月9日晚上10点左右,老婆被推入 LDR 分娩室,由于一开始宫缩并不强烈,人工破水后仍达不到分娩条件。过了一会儿,护士给打上了催产针。这一针下去,强烈且频繁的宫缩马上袭来,老婆直喊疼。护士说这才是能达到开指目的的宫缩强度,并要求继续进行宫缩观察。一段时间后,值班医生发现达到刺激开指的宫缩条件,就让麻醉师进行无痛麻醉。老婆遂感到疼痛缓解,闭目睡去。

凌晨两点左右,老婆感到有阵阵痛意来袭,助产师检查之后发现已经达到分娩的条件,随即开始指导老婆如何用力生产。经过大约1个多小时, 终于在凌晨3点32分,宝宝从妈妈的肚子里离开,来到了这个世界。

随着一声响亮的啼哭,我也终于见到了宝宝真实的模样。刚刚出生的宝宝全身有点泛白。眼睛也睁不太开,总是眯成一条细缝,却能看出是个大眼睛萌娃。但奇怪的是,她在保育箱里的时候却是不哭不闹,让我很难相信这是在妈妈肚子里不断折腾的小妖精。连护士医生也直说是个好脾气的宝宝。

裹在包被里的宝宝

宝宝出生的时候体重 3555 克,身长 51 厘米。可能是足月出生的缘故,宝宝的皮肤非常光滑干净,整体感觉也非常饱满。看到她如此这般健康可爱的模样,我们悬着的心也放了下来。

值得一提的是,老婆本身属于瘦弱型的女生。直到生产之前我们俩都还在担心是否能够平安顺产,是否会吃顺+剖两道苦。如此顺利的结果,让我们喜出望外,感觉真的是有如神助。在整个陪产的过程中,我也见识到了小生命的完整诞生过程,感觉神奇而又敬畏。也希望我们的宝宝能够和她的名字一样,平平安安,健康成长,能够体验人生的奇妙,收获一生的幸福。

Electron 开发环境搭建入门

Photo by Chris Henry on Unsplash

Electron 开发环境搭建对于大陆的开发者来说或多或少都会有些问题。有镜像源的问题,也有 VSCode 及操作系统终端的编码问题。这些问题对于新手来说比较繁琐,故写此篇入门文章帮助有问题的网友。

安装篇

镜像源及二进制文件配置

对于大陆的开发者来说,想要快速下载 Electron,需要配置镜像源和二进制文件下载地址。这两者的区别是前者只负责拉取 Electron 的代码,后者包含了 Electron 运行所需的二进制文件。因此完整的配置如下所示。

继续阅读Electron 开发环境搭建入门

利用 Electron 控制页面

Photo by Zdeněk Macháček on Unsplash

Electron 本质上是对 Chromium 与 Node 环境的封装,因此利用它来对页面进行控制,做一些自动化操作也是顺理成章的事情。而其中的关键是它自带的 preload 与 IPC 机制。

preload 机制

假如我们想在 Electron 中加载远程的一个 URL 页面,并且想控制这个页面的行为,那么preload(预加载)是必不可少的一步。通过 preload,我们可以在远程页面加载之前,预先加载本地的 preload 脚本,然后由它在浏览器端做一部分页面元素的控制操作。

继续阅读利用 Electron 控制页面

Angular 项目框架更新

Photo by Harley-Davidson on Unsplash

Angular 作为一个版本变化比较快的框架,其所应用的项目保持相应的更新是非常重要的一个任务。新的版本往往带来了新的功能,修补了一些漏洞,官方文档也建议及时对 Angular 项目进行更新。

安装 @angular/cli

@angular/cli 可以让更新变得更加容易。首先,我们需要安装 @angular/cli 的最新版本,这样我们可以拥有此工具的最新功能。

ng update 更新项目

使用 @angular/cli 的 ng update 指令可以方便地更新项目。键入此指令时,由于一些包的依赖与即将升级的 Angular 版本有冲突,此时它会提示你是否需要强制执行。这边推荐使用 ng update –force 指令强制升级,然后再依次更新有冲突的依赖包,最后检查一下项目运行是否正常。

推荐使用 nrm taobao 来加快更新的速度。

Angular 动态创建与操纵组件

Angular 除了可以动态创建嵌入式视图 ,亦可利用现有的组件类动态在组件中创建一个组件。这种方法常用在弹出层、对话框等场景下。

组件与编译器

大部分场景下我们使用的组件都像普通元素一样放在组件的模板中。在浏览器执行时,Angular 编译器会对组件模板进行解析,对其中包含的组件、指令、管道等 Angular 自定义对象进行编译,转化为可直接运行的前端代码。可以说,编译器充当了框架与可执行代码之间的桥梁。

继续阅读Angular 动态创建与操纵组件

DNS 解析与 DIG 工具

Photo by Caleb Kastein on Unsplash

当我们输入域名请求服务器真实 IP 或者用 DIG 工具排查域名相关时, 具体的解析过程以及 DNS 服务器解析原理 ,我想通过本文做个简单的阐述。

DNS 解析过程

我们可以通过在线 DIG 工具可以查看域名解析的结果甚至追踪域名解析的过程。假如我想查询某个 baidu.com 对应的 IP 地址,可以这样发出查询。

然后可以从服务器得到这样的响应。其中 ANSWER SECTION 返回两个 IP 地址,这就是 baidu.com 对应的 IP 地址。

继续阅读DNS 解析与 DIG 工具