解读移动端的跨平台开发:TypeScript + Angular

内容来源:2017年7月15日,Google Engineering Manager陈亮在“2017 JavaScript中国开发者大会”进行《TypeScript, Angular, 和移动端的跨平台开发》演讲分享。IT 大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2027 | 3分钟阅读

获取嘉宾演讲视频及PPT,请点击:http://t.cn/Redo7OC

摘要

Google技术经理陈亮将为大家介绍TypeScript和Angular是什么以及如何利用TypeScript和Angular进行移动端的跨平台介绍。

What’s TypeScript?

TypeScript是凌驾于ES5、ES6,具备静态类型的JavaScript的超集。它为我们带来的优势包括未来JavaScript的一些特征在TypeScript里都有。并且它有一个非常强大的类型系统,通过这个强大的类型系统,能够和IDE进行很好的整合。

TypeScript在2012年的时候做了发布,当时的创始人Anders HejIsberg是微软的一个架构师,用他的话来说,TypeScript makes JavaScript scale.当我们用TypeScript来写程序的时候,我们做更多的模版扩展,扩展software,能够有更强的可读性。同时我们看到的一些接口也会更加明了,对于我们的开发有很大帮助。当我们用TypeScript来写程序的时候,可读性得到了大量的提高,所有的API接口更清晰明了,以帮助我们更好的扩展庞大应用的开发。TypeScript的研发理念也希望我们无论在什么浏览器、什么工作系统上都能运行一个稳定可延性强的语言。

TypeScript Type System

TypeScript自带了一个编译器,通过一些简单的配置tsconfig.json就可以把TypeScript转换成ES5或ES6。它除了进行基本类型的检测之外,还能帮我们做一些重构。

当一个变量的类型改变了之后,很有可能在项目里其它地方也需要改动。它的tsc的compiler可以帮助我们修改,不用手动去改每个地方。

虽然TypeScript希望大家尽量在每个地方都能标注它的类型,但其实这个类型是可选的。原因有两个,其中一个原因就是当我们需要和很多其它第三方程序库进行整合的时候,我们并不能保证它有这个型别的定义。另一个原因就是TypeScript对于很多开发团队来说还是比较新的,很多时候需要逐步地更改project来和TypeScript进行整合,所以它在设计的时候就已经把这个考虑进去了。

现在很火的三个框架都和TypeScript进行了整合,它们的类型定义在网上都可以下载。

TypeScript Typing

TypeScript本身其实有一些非常细微但很有用的机制,这些机制可以帮助我们在写前端代码的时候更加有效。

StrictNullCheck可以防止在整个流程中出现常见错误。

对于开发者来说我们很多时候需要一定的控制,TypeScript提供了类型的转换和类型的断言。

在TypeScript里有一个非常特别的类型叫any,用于描述我们在编译时的未知类型Type。

TypeScript Type Definition

真正使TypeScript强大的还是要归根于类型定义文件。类型定义文件里有接口、函数定义等等。在一般的前端构造里,浏览器和DOM有非常多的类型。

当你在用npm去安装这些模块的时候,假如它已经具备了这些类型的定义,那么编辑的环境就可以马上意识到,帮助你在编程过程中做到自动完成的功能,有效的提高了开发者的效率。

Why Angular?

速度和性能是选择Angular的重要原因之一。

Angular很强大的一点在于他的模板编译是跨平台的,和传统的DOM做了一个脱钩的理念,让用户界面能更好的的呈现在用户面前。另外Angular 的强大选染引擎也在应用最终发布的时候能把APP压缩到是原来的60%左右。

Angular从一开始构建的时候就非常注重Scalability。在Google内部,当一个工程师改了一行Angular代码的时候有成千上万的单元测试都会被运行。我们希望平台是一个稳定的平台,新出的版本不会破坏以前现有产品的开发。

Angular还有三个支柱,一个是核心,一个是围绕核心衍生出的程序库,还有一个是工具。

Angular Core

鉴于我们现在的渲染器完全脱离了DOM,这样的渲染让我们的表达非常expressive。不管是组件、指令、内容投放还是“管道”都能让我们的开发者更方便地去描述想要做的事情。

还有就是依赖注入,这个对于写过很多单元测试的朋友应该不陌生。它能帮助我们在Angular组件里去更好地和服务以及内部一些API进行连接,我们作为开发者就不用太过担心怎样管理这样的一些关系。

Zones是非同步处理的执行环境。我们的程序里有很多非同步的一些事件或函数,Zones会直接把它进行复写,复写之后通过对事件和函数的监测,能更有效的提高模板局部更新的速度。

Angular的变化检测跟很多前端框架一样,有一个模版需要被渲染,渲染的时候内部组件有一个物件的改变,就需要进行检测。

在Angular里面有一个非同步执行的context,它复写了所有非同步的函数和事件,当每次结束的时候都需要在每个组件里做一个变化的检测。

Angular Animation

Angular的动画是基于standard Web Animation的API,所以它可以利用到很多浏览器自带的硬件加速对它进行支持,让它跑得更快。

Angular Tooling

Angular的工具也很强大,有AOT、Angular Universal和Angular CLI帮助大家去快速开发项目。

Future:Smaller,Faster,Easier to Use

Angular的下一代是Angular5,在今年稍晚就会推出。它的理念是让整个框架容量更小,在各个平台上跑得更快,各租件和API更通俗明了,容易上手。

Native Script

NativeScript是一个提供runtime编译转码的运行层框架,可以让你的JavaScript和Angular模板直接转化成相对应的原生函数和租件。每一个元素都会最终成为一个原生的元素,而因为它用的是Angular的语法,广大的前端开发同学们可以很熟悉的上手,一目了然。NativeScript在运行过程时,用Angular的渲染器去编译模板,parse把它转换成protoview,protoview再经过Native Script run-time把它转换成原生的控件。

每一个元素都会最终成为一个原生的元素。要注意的是,它所有的语法和Angular是一样的,所以在渲染的过程中不会有任何问题。

Native Script渲染

用Angular的渲染器去编译XML,prase完成后,编译器会把它转换成protoview,protoview再经过Native Script run-time把它转换成原生的控件。

我觉得今天给大家展示的还只是一些毛皮,我建议大家一定要看看TypeScript,因为它能帮助大家写出更好的程序。今天很高兴能和大家分享Google的一些技术,也希望大家能多多思考一下前端未来的发展,谢谢大家!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 一觉醒来,发现该吃晚饭了。为什么做什么都是我自己呐!真找不到有什么能让我注意力集中的事情。不爱逛街,因为一个人步伐...
    流风霜阅读 453评论 0 0
  • 一 活阎王曾经对我说,那比挨枪子疼。 我看也还行,疼归疼,好得比挨枪子快。 二 我最后一次见郑晓燕是在去开往苏联的...
    xuu小虾米阅读 202评论 0 0
  • 行走在消逝中,我,应该怎样,安放,我的灵魂? 三五把凉风夹杂些六月的感伤与我擦肩而过。那不曾为谁逗留的,应该叫时间...
    门前折柳阅读 177评论 0 0
  • 看一个公司的风水情况,首先要看他的“山”与“向”。 “山”就是公司办公楼或者办公室的“背后”,我们经常讲背有靠山,...
    自心经阅读 1,133评论 0 0