上海 2017 JSConf 大会已经结束,整理的两天大会实录以下:javascript
首先是开场演讲,主要介绍了 JSConf 的一些往年活动以及所取得的成就,JSConf 在中国已经举办了 6 年,80 多个讲师参与。前端
简短的介绍以后,第一场主讲就开始啦。第一场讲的是 Programming the Universal Future with next.js。vue
首先一个大新闻就是 next.js 3.0 发布啦!!!java
先介绍了 now,一行命令搞定你的部署。一个很是不错的工具。node
now 支持 static projects、package.json(node 项目)、Dockerfile 项目配置部署。react
提出一系列开发中会遇到的需求:自定义 URL,服务端渲染、实时日志。es6
咱们能用一个命令来解决这些需求吗?答案是是的,那就是 nextweb
1.安装正则表达式
2.建立一个页面chrome
3.使用 next
命令启动,直接搞定手工。
启动以后无需配置直接具备如下功能:
现场代码演示,用了一个很酷的终端 —— Hyper,也是他们团队作的哟。
并提供了一个新的 API —— getInitialProps 用于异步加载数据。
现场展现了使用 next.js 开发的一个在线案例 —— next-news.now.sh
next.js 中提供了一个很是有用 head 组件。你能够在这个组件内写任何你须要添加的东西,好比是 link 一个样式,控制页面的 Title 。
典型的开发流程是:加载代码 —— 加载数据 —— 渲染页面。
有了 next.js 就能够很轻松的作服务端渲染,进一步提高页面体验。
服务器端渲染能够实现首屏秒开,而且能够函数式的懒加载代码。
想要了解更多信息能够查看如下连接哟:
这一场演讲干货满满,做者想要表达的内容也不少,总结了 web 开发领域的早期模式以及现代开发的趋势。感兴趣的同窗能够直接查看做者的 幻灯片。
Hax ,一个写了 20 年 JS 的人,有不少演讲。并调侃了明年的演讲计划
对比了各个浏览器和 babel 之间对 ES6 的支持程度以及演进时间过程。到 2016 年 3 月份,chrome 几乎所有实现了全部标准,形势一片大好。
只有 proper tail calls 尚未支持。其余厂商没有支持的缘由是对这一特性有其余意见,并提出了新想法 STC。
Array.prototype.values() 方法已经实现了,只是没有默认开启,缘由是在旧应用中可能存在兼容性问题。
已经几乎所有支持。
ES6 已落地,ES7+ ready
以前的语言规范像是憋大招,五年半憋出了一个大版本,厂商集中实现特性。
如今的策略是细水长流,根据提案推动实现,每一年 6 月份左右发新版本,并将版本号按年份命名。
从 stage 0 => 4,主要过程以下:
Strawman => Proposal => Draft => Candidate => Finished
核心是 正式版本发布前至少有两个实现
**
乘方tips:
[NaN].indexOf(NaN) // -1
[NaN].includes(NaN) // true复制代码
函数传参和调用时支持尾逗号,在参数比较复杂时很是好用。
f(
a,
b,
c,
)复制代码
回想起了 left-pad 事件,如今有标准支持啦。
Worker 之间是经过消息进行通讯,如今能够共享内存了。
Worker 其实就是相似线程。Worker 的通讯是消息传递的,message事件传递的。通常多线程编程里面是共享内存。
RTC ,run to completion,JS函数从头运行到底,通常都不会被打断的。JS 是使用 run to completion 语意的语言。在增长 Async/Await 打破了run to completion 语意,可是仍是可控的,只在标识了 Async/Await 的地方可能会有变量的改变,其余没有标识的地方还都是 run to completion 可控的。SharedArrayBuffer 也同理。在 JS 中默认全部变量都是『线程安全』的,只有在 await 或建立 SharedArrayBuffer 的地方不是。
node.js 没有 worker,不过node.js开发组已经考虑会加入相关的 API。
目前的使用方式是经过 babel 等方式编译为 script 而后运行的。
HTML 规范已经加入了 <script type="module">
用于支持 ESM 实现。还可使用 nomodule
作兼容处理。 Safari 10.一、Chrome 6一、Edge 15+、 已经支持。
引伸出 ESM 在 Node 中实现时面临的一些问题。
动态加载
支持私有属性
上周新提出的提案:Pattern Match
WebAssembly:web 上的汇编语言
编译的目的:为了让代码变得更小。
从源代码如何到目标代码:
源代码 - 抽象语法树 - 编译 - 压缩 - 目标代码
常见的压缩器:
早期,文件拼接 + 文件压缩
bundlers: 拆分模块进行打包,打包之后会产生新问题,难以压缩。
介绍了 rollup 的解决方案。
编译也会让代码变得更快。
以 React 为例举例说明在编译阶段的模板优化。 babel-react-optimize
目前在编译时优化只是一个起步阶段,还大有发展空间。
简要的介绍了历史以及目前的状态
目前大可能是基于 requestAnimationFrame + setState 实现的,官方提供了一个性能更好的 Animated 库,是基于 requestAnimation + setNativeProps 实现。
社区提供了更好的解决方案 Native Animated:
使用 useNativeDriver: true 直接启用 Native Animated。
缺陷:
只支持 transform, opacity, 不支持 flex, position 等属性
解决方案:
导航的问题,社区目前已有的解决方案
几个重要的特性介绍
还支持装饰器和注解。
为何使用 Angular
Angular 已经不是一个框架,而是一个平台。
三个支柱:
Angular 的核心
Angular 变化检测
Immutability & Observable
Angular 周边库
更小、更快、更方便的去使用
简单介绍了 Ionic Framework。
NativeScript 跨平台原理以下:
Ruff 是一个支持 JavaScript 开发应用的物联网操做系统。
直接现场演示 Demo。
(就问你这些代码像不像 jQuery? )
开发高效,而非执行高效。
Ruff 提供了很方便的 UI 界面,手把手教你怎么链接电路。
传统方式:
须要了解 GPIO 等一系列硬件基础知识
GPIO.output(11, GPIO.HIGT)复制代码
Ruff
$('#light').turnOn()复制代码
从生产视角拆分红了三层:
听完 Ruff 的演讲,终于能够用 jQuery 给孩子写玩具了!
本系列笔记是现场记录的,比较仓促,有些地方会存在误差或理解错误,还请关注官方后续发布的讲师 PPT 和大会视频。
JSConf 第一天的内容就这么多了,想要了解更多次日的干货,请持续保持关注哟。
整理者 @根号三、@一缕殇流化隐半边冰霜