JavaScript极速入门 —— 内核与引擎—— 内核与引擎 主讲人与课程设计:耕耕 浏览器内核 主流浏览器内核 JavaScript 引擎 主流浏览器JavaScript 引擎 浏览器内核与JavaScript 引擎关系 最初内核的概念包括渲染引擎与JS引擎,目前习惯直接称渲染引擎为内核,JS引擎独立。 浏览器内核 渲染引擎 JavaScript引擎 最初状态 浏览器内核 渲染引擎 JavaScript引擎 目前状态 JavaScript引擎独立了 渲染引擎与JavaScript 引擎 渲染引擎:Rendering Engine,一般习惯将之称为“浏览器内核”,主要功能是解析HTML/CSS进 行渲染页面,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。 JavaScript 引擎:专门处理JavaScript脚本的虚拟机、解释器,用来解释执行js代码。在早期内 核也是包含js引擎的,而现在js引擎越来独立了,可以把它单独提出来。 了,可以把它单独提出来。 总结:渲染引擎(浏览器内核)处理html/css,JavaScript引擎处理JavaScript代码,有js引擎的 地方就能解析js代码 浏览器 渲染引擎(内核) 解析html/css JavaScript引擎 解析JavaScript代码 JavaScript和java什么关系 JavaScript 在刚诞生的时候,它的名字叫 “LiveScript”。但是因为当时0 码力 | 8 页 | 394.47 KB | 1 年前3
前终端统⼀一⽅方案Hippy-Vue 设计和实现Text... Component Node Render Portable UI Hippy Buffer Bridge Text Component Network... Module X5 V8/JSC JS Executor Native Framework JS2Native Bridge JavaScript Native2JS Bridge Console Global Module X5 V8/JSC JS Executor Native Framework JS2Native Bridge JavaScript Native2JS Bridge Console Global Console... Global Method Hippy Buffer ⼆二进制传输协议,编解码性能更更好。 X5 V8 X5 团队特供 V8 引擎。 Hippy Layout Layout iOS、Android 共享布局引擎, 纯 C 开发,只有 50kb。 项⽬目架构 Hippy SDK 采⽤用三层设计,其中: • JavaScript 层:提供业务代码运⾏行行时的前端上下⽂文环境; • Native Framework 层:负责前终端通讯与 Javascript VM,并提供 Native 相关模块; • Portable UI 层:提供基础 UI 组件与0 码力 | 19 页 | 556.32 KB | 1 年前3
廖雪峰JavaScript教程,每个语句以 ; 结束,语句块用 {…} 。但是,JavaScript 并不强制要求在每个语句的结尾加 ; ,浏览器中负责执行JavaScript代码的引擎会自动在每个语句 的结尾补上 ; 。 注意:让JavaScript引擎自动加分号在某些情况下会改变程序的语义,导致运行结果与期望不一致。 在本教程中,我们不会省略 ; ,所有语句都会添加 ; 。 例如,下面的一行代码就是一个完整的赋值语句: 会大大增加看懂代码的难度。遇到这种 情况,需要把部分代码抽出来,作为函数来调用,这样可以减少代码的复杂度。 以 // 开头直到行末的字符被视为行注释,注释是给开发人员看到,JavaScript引擎会自动忽略: 1. // 这是一行注释 2. alert('hello'); // 这也是注释 另一种块注释是用 /…/ 把多行字符包裹起来,把一大“块”视为一个注释: 1. /* 从这里开始是块注释 100) = ' + sum.apply(null, args)); 20. } else { 21. alert('测试通过!'); 22. } 前面我们讲到了JavaScript引擎有一个在行末自动添加分号的机制,这可能让你栽到return语句的 一个大坑: 1. function foo() { 2. return { name: 'foo' }; 3. }0 码力 | 264 页 | 2.81 MB | 10 月前3
electron中文教程
本文档使用 书栈(BookStack.CN) 构建 Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译原生模块,则 需要手动设置 Electron 的 headers 的位置。 当 Node 开始换新的V8引擎版本时,原生模块可能“坏”掉。为确保一切工作正常,你需要检查你想要使用的原生模 块是否被 Electron 内置的 Node 支持。你可以在这里查看 Electron 提供了 —debug 和 —debug-brk 开关。 使用如下的命令行开关来调试 Electron 的主进程: 当这个开关用于 Electron 时,它将会监听 V8 引擎中有关 port 的调试器协议信息。默认的 port 是 5858 。 就像 —debug 一样,但是会在第一行暂停脚本运行。 备注: Electron 目前对 node-inspector 确认你已经安装了 node-gyp 所需工具 2. 安装 node-inspector 3. 安装 node-pre-gyp 的一个修订版 4. 为 Electron 重新编译 node-inspector v8 模块(将 target 参数修改为你的 Electron 的版本号) 主进程调试 - 20 - 本文档使用 书栈(BookStack.CN) 构建 [How to install native0 码力 | 203 页 | 2.72 MB | 1 年前3
前端开发者指南(2017)DNS) 学习 HTTP/Networks(包括 CORS 和 WebSockets) 学习网页寄存(通称虚拟主机) 学习前端开发 学习用户界面/交互设计 学习 HTML 和 CSS 学习搜索引擎优化 学习 JavaScript 学习 Web 动画 学习 DOM、BOM 和 jQuery 学习网页字体 & 图标 2 1.6.1.14 1.6.1.15 1.6.1.16 1.6 DNS) 学习 HTTP/Networks(包括 CORS 和 WebSockets) 学习网页寄存(通称虚拟主机) 学习前端开发 学习用户界面/交互设计 学习 HTML 和 CSS 学习搜索引擎优化 学习 JavaScript 学习 Web 动画 学习 DOM、BOM 和 jQuery 学习网页字体 & 图标 学习可访问性相关知识 学习 web/浏览器 API 学习 JSON js (通常用于桌面应用) Electron (通常用于桌面应用) 基于 WEB 技术的原生应用 最终,前端开发者从 WEB 浏览器开发中得到经验,并可以脱离浏览器引擎环境编码。近来, 人们正在构思如何脱离 web 引擎,用 web 技术(比如 CSS 和 JS)来构建原生应用。 该环境的例子: NativeScript React Native 前端开发者是什么? 12 注:0 码力 | 164 页 | 6.43 MB | 1 年前3
Web的未来
新技术和新语言带来的改变3. Web App 应该更像 App 而不是一个浏览器 Tab 4. 用户并不关心背后用的是什么技术。 a. App做壳,Web做核 b. Web 会与 OS 更紧密集成,直接提供 Web引擎支持 Chrome App Launcher Chrome Apps Chrome App vs 桌面 App 技术上: ● 独立的窗口 ● 离线使用 ● 通知栏 ● App Launcher 各种技术所做的改进 1. Web的演化 2. 语言篇 a. 语言的发展 b. Dart 介绍 3. 技术篇(Web Components) 大纲 ● 2011年10月对外宣布 ● Chrome V8 团队打造 ● 主要成员包括:Lars Bak、Kasper Lund、Gilad Bracha等 ● 以大量编程语言实现的经验为基础 Dart 语言的诞生 Dart 并非颠覆,而为实用 Dart Tree-shaking ● 语言的设计影响性能 ● 使用snapshot启动速度快10倍 ● 运行时不能改变对象结构有利于VM优化 ● Dart VM 性能已超越 JavaScript V8 ● …… 高性能 性能测试 http://www.dartlang.org/performance/ Dart 语法特性 ● 纯面向对象:类 ● 范型 ● 函数、闭包 ● 库:import0 码力 | 91 页 | 3.44 MB | 1 年前3
阮一峰 JavaScript 教程语言本身,虽然是一种解释型语言,但是在现代浏览器 中,JavaScript 都是编译后运行。程序会被高度优化,运行效率接 近二进制程序。而且,JavaScript 引擎正在快速发展,性能将越来 越好。 此外,还有一种 WebAssembly 格式,它是 JavaScript 引擎的中 间码格式,全部都是二进制代码。由于跳过了编译步骤,可以达到接近 强大的性能 导论 - 15 - 本文档使用 书栈(BookStack 普通的硬件就 可以承受很大的访问量。 JavaScript 是一种开放的语言。它的标准 ECMA-262 是 ISO 国 际标准,写得非常详尽明确;该标准的主要实现(比如 V8 和 SpiderMonkey 引擎)都是开放的,而且质量很高。这保证了这门语 言不属于任何公司或个人,不存在版权和专利的问题。 语言标准由 TC39 委员会负责制定,该委员会的运作是透明的,所有 讨论都是开放的,会议记录都会对外公布。 24 - 本文档使用 书栈(BookStack.CN) 构建 发出 HTTP 请求,为后来大行其道的 Ajax 应用创造了条件。 2000年,KDE 项目重写了浏览器引擎 KHTML,为后来的 WebKit 和 Blink 引擎打下基础。这一年的10月23日,KDE 2.0发布,第一次将 KHTML 浏览器包括其中。 2001年,微软公司时隔5年之后,发布了 IE 浏览器的下一个版本 Internet0 码力 | 540 页 | 3.32 MB | 10 月前3
阮一峰 《ECMAScript 6入门》 第三版i 其实都是一个新的变量,所以最后输出的是 6 。你可能会问,如果每一 轮循环的变量 i 都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本 轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的 变量 i 时,就在上一轮循环的基础上进行计算。 另外, for 循环还有一个特别之处,就是设置循环变量的那部分是一个父作用 域,而循环体内部是一个单独的子作用域。 如果要将一个已经声明的变量用于解构赋值,必须非常小心。 // 错误的写法 let x; {x} = {x: 1}; // SyntaxError: syntax error 上面代码的写法会报错,因为 JavaScript 引擎会将 {x} 理解成一个代码块,从而 发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才 能解决这个问题。 // 正确的写法 let x; ({x} = over the h goes \u{h}ere // 报错 ` 上面代码中,变量 document 内嵌的模板字符串,对于 LaTEX 语言来说完全是合 法的,但是 JavaScript 引擎会报错。原因就在于字符串的转义。 模板字符串会将 \u00FF 和 \u{42} 当作 Unicode 字符进行转义,所 以 \unicode 解析时报错;而 \x56 会被当作十六进制字符串转义,所0 码力 | 679 页 | 2.66 MB | 1 年前3
Gulp 入门指南- 2 - 本文档使用 看云 构建 安装 Node 和 gulp gulp 是基于 node 实现的,那么我们就需要先安装 node。 Node 是一个基于Chrome JavaScript V8引擎建立的一个平台,可以利用它实现 Web服务,做类似 PHP的事。 打开 https://nodejs.org/ 点击绿色的 INSTALL INSTALL 按钮下载安装 node。 使用终端/命令行0 码力 | 36 页 | 275.87 KB | 1 年前3
Introducing NativeScriptNativeScript runs JavaScript on a JavaScript VM • JavaScriptCore on iOS • V8 on Android • JavaScriptCore on Windows • Runs on V8 • Runs on JavaScriptCore Gathering Native APIs • NativeScript uses app package at build time. Injecting native APIs • V8/JavaScript Core have APIs to inject global variables Invoking native APIs • V8/JavaScriptCore have C++ callbacks for JS function calls NativeScript uses Android’s JNI (Java Native Interface) to make the bridge from C++ to Java. • 1) The V8 function callback runs. • 2) The NativeScript runtime uses its metadata to know that Time() means0 码力 | 47 页 | 3.36 MB | 1 年前3
共 37 条
- 1
- 2
- 3
- 4













