文档章节

六项令人兴奋的 web 技术

席道坤
 席道坤
发布于 2016/12/09 11:10
字数 1528
阅读 26
收藏 1
点赞 0
评论 0

一、Electron

Electron (GitHub) 让你能够用 web 技术构建跨平台的桌面应用。它有如下特性:

  • 自动更新

  • 崩溃报告

  • Windows 安装

  • 调试和分析

  • 原生菜单和通知

Electron 最初是被 GitHub 的作者 Atom 创建,现在已被多个公司使用,包括 Microsoft(见下文的 Visual Studio Code),Slack 和 Docker。

Electron 的架构包括 Node.js runtime 和嵌套的微型 Chromium 浏览器。Electron 应用在多个进程中运行:主进程运行的是应用的 package.json 声明的 main 脚本。为了显示一个用户界面,该脚本可以打开 窗口。这些脚本的每一个都运行在独立的进程中(一个所谓的 渲染进程 ),就像 web 浏览器的 tab 标签。

二、React Native

使用 React Native ,你可以通过 React 来构建 iOS 原生应用和 Android 原生应用。Virtual DOM 保持不变,你仍然可以使用 JSX 来创建它,但实际的 UI 是用原生的组件构建,例如 iOS 的 UITabBar 以及 Android 的 Drawer。你可以通过 Flexbox 来布局这些原生组件。

一方面,这意味着在 web、iOS、Android 这些不同的平台上, UI 层会有些不同。另一方面,如果你有这些原生平台的经验,你可以很大程度地重用你的代码。

通常,我对尝试将一个平台的原生语言移植到另一个平台是不看好的。但几个月前, 一个 iOS 开发者评估 React 后说到:

我可能再也不会用 Objective-C 或者 Swift 编写 iOS 应用了。

如果你考虑到他用 React Native 编程之前,还要学习 JavaScript 和 React,会认为这是非常了不起的。

另一个 有趣的引述 ,Andy Matuschak(他“在 UIKit 团队帮助构建 iOS 4.1–8”)说到:

作为 UIKit 作者的一员,我很自信的说:React 的 UI 层 model 要比 UIKit 的优秀很多。React Native 值得关注。

三、Progressive web apps

有些方面,native 应用已赶上了 web(如 deep linking, indexing)。 Progressive web apps 并不真的是一项技术,只是现代 web 应用特点的一个术语。这意味着 web 应用在一些方面正在追赶原生应用,甚至有的方面正走在原生应用的前面:

  • 渐进增强: 应用运行在尽可能多的环境中。它会使用任何可用的服务,如果没有可用的服务则会优雅降级。

  • 响应用户界面: 应用适应多种输入方式(触摸、 语言输入等)和多种输出方式(不同的屏幕尺寸、震动、音频、盲文显示等)。

  • 连接性、独立性:应用可在断网以及间歇性断网或低带宽环境下很好地工作。

  • 类应用 UI:应用采用原生平台的 UI 元素,包括快速加载用户界面(可以通过 service workers 获取重要的缓存资源)。

  • 持续更新(“时新性”):service worker API 定义一个进程用来将应用自动更新至新版。

  • 安全通信:应用使用 HTTPS 通信来提供服务,阻止网络劫持和攻击。

  • 应用发现:像 W3C 应用 manifest 元数据能使搜索引擎找到 web 应用。

  • 推送与互动:推送通知的特性,主动让用户了解最新动态。

  • 可本地安装:在一些平台上,你可以安装 web 应用使得它看起来像一个本地应用(将 icon 放在主屏,在应用程序切换器单独列出,chrome 浏览器可选)。所有这些应用不用经过本地应用商店。

  • 可连接性:通过 URL 可以轻松分享应用,不用安装即可运行。

我这提及 progressive web apps,是因为我喜欢上述所有的技术和技巧。但我不确定 “progressive web apps” 与简单的“现代 web 应用”有多大的区别。有一件事我很反对,就是 给 web 应用安装时的 banner 提示 (这是它们的杀手级功能,毕竟它们不需要这个功能。)

扩展阅读

四、Visual Studio Code

Visual Studio Code 是一个介于完备的 IDE 和文本编辑器之间的 JavaScript 代码编辑器。并且它是使用 JavaScript 基于 Electron 编写的。2015,VSC 成为 开源 项目并增加了 扩展 (一个通过 plugins 来扩展它的 API)。

五、Rollup

Rollup 是一个 模块打包工具 :它将多个 ES6 模块转化为一个独立的 打包文件 ,打包后的模块可以是 ES6、CommonJS、ES5…… 中的任一种格式。Rollup 为 JavaScript 模块带来了两大创新:

  • 通过名叫 “tree-shaking” 的技术使打包的结果只包括实际用到的 exports。Three-shaking 的关键在于依赖 ES6 模块的静态结构。“静态结构”意味着在编译时他们是可分解的,而不用执行它们的任何代码。有了这种死码删除是极好的,因为现在我们可以根据需要随意地使模块或大或小,而不用担心打包后的大小。

  • 它证明了 ES6 模块打包后是一种可用的 ES6 模块格式。

扩展阅读

六、Web Assembly

Web Assembly 是静态格式语言(源自 asm.js)的一种二进制格式,它可被输入到(支持它的) JavaScript 引擎来创建快速的可执行文件。这是一种比字节码要高级一些的语言,因此容易发展它。它运行在和JavaScript相同的语义空间,因此很方便集成它。asm.js 到底有多快?C++ 编译成 Web Assembly 运行的时间比将 Web Assembly 编译成原生代码要快大约 70%。

Web Assembly 最终可能得到 JavaScript OOP 的支持。到那时,它将真的成为一个通用的 web 虚拟机。

扩展阅读

本文转载自:https://www.w3ctech.com/topic/1667?utm_source=tuicool&utm_medium=referra

共有 人打赏支持
席道坤
粉丝 12
博文 215
码字总数 166591
作品 0
徐汇
程序员
雅虎开源 Mojito Javascript 框架

雅虎去年在Product Runway上发布了一款Web开发技术,被称作“Cocktails”(鸡尾酒),并透露将在今年一季度实现开源,公司已经为这款令人兴奋的先进技术投入了几个月的时间来完成,这一被业界...

红薯 ⋅ 2012/04/03 ⋅ 11

推荐7本不错的HTML5书籍

HTML5是HTML的下一代。HTML5引进了各种新元素,无论是针对内容结构还是媒体。 你可以找到很多关于HTML5信息的网站,包括介绍、教程以及使用技巧。但市面上也有一些好的书籍,集中介绍了HTML5...

随影求是 ⋅ 2012/03/15 ⋅ 0

世界性壮举!五名中国儿童获得由自身细胞培养的耳朵

  近日,中国科学家表示,他们已经完成了再生医学领域一直以来的目标——通过实验室技术赋予患者一个崭新且完全不“排斥”的耳朵。为什么说这是一个世界性的壮举呢?最重要的一点是这种耳朵...

DeepTech深科技 ⋅ 02/02 ⋅ 0

css3 边框背景-边框背景

一个令人兴奋的新特征是边框图片。有了这项功能您可以定义一个图像被用来代替正常的边框的一个组成部分。这项功能实际上是分成了几个属性:边框和边框角的形象。这两个值是: : : 代码: bor...

沉恋 ⋅ 2012/11/09 ⋅ 0

Vaadin 6.8 发布,RIA 富客户端框架

Vaadin 6.8 发布了,不过目前最令人兴奋的是计划于 9 月份发布的 Vaadin 7 。Vaadin 6.8 修复了 45 个问题。 详细内容请看发行说明: http://vaadin.com/download/release/6.8/6.8.0/release...

oschina ⋅ 2012/06/11 ⋅ 1

ELSE 技术周刊(2017.11.13期)

团队分享 魔幻语言 JavaScript 系列之 call、bind 以及上下文 从一行代码来看看 JavaScript 是一门多么魔幻的语言,顺便谈谈 JavaScript 中的 call、apply 和 bind 以及上下文。 前端开发 Pr...

风清洋ELSE ⋅ 2017/11/14 ⋅ 0

Java EE 7 新特性由你来决定

Java EE 7即将于明年第2季度发布,该版本包含了诸多令人兴奋的新特性。 但由于开发时间问题,一些新特性有可能会推迟到未来的版本中。近日Java EE 7专家组通过SurveyMonkey网络调查公司发起了...

oschina ⋅ 2012/11/20 ⋅ 13

是的,Safari 支持 Service Worker 了

12月 20日,Apple 发布的 Safari 46 技术预览版里,Mac 端的 Safari 将默认打开 Service Worker, 是的,Safari 支持 Service Worker 了,PWA 时代不远了。 其实回顾一下, 2017 年 7 月 14...

⋅ 2017/12/21 ⋅ 0

2018年垃圾邮件可能会“死”在AI手里!

  【IT168 资讯】毫无疑问,人工智能几乎可以对所有的行业产生巨大的影响。虽然许多公司已经认识到人工智能是一种竞争优势,但随着技术的成熟以及组织对其功能和潜力的深入了解,这种认识只...

it168网站 ⋅ 2017/12/22 ⋅ 0

Alfresco 宣布开始Activiti业务流程管理BPM引擎开发项目

Alfresco软件今天宣布开发Activiti业务流程管理(BPM)开源项目的开始,其首席架构师由业务流程管理BPM的专家,汤姆.贝延斯担任。该Activiti计划是一项新的基于Apache许可的开源BPM平台,从基...

YipChooli ⋅ 2010/06/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 46分钟前 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部