热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

邂逅NodeJS

邂逅NodeJS浏览器的内核与JS引擎不同浏览器的不同内核什么是浏览器的内核渲染引擎的工作过程什么是NodeJSNodeJS的使用Node的版本管理工具Node的REPL浏览器的内

邂逅NodeJS

    • 浏览器的内核与JS引擎
      • 不同浏览器的不同内核
      • 什么是浏览器的内核
      • 渲染引擎的工作过程
    • 什么是NodeJS
    • NodeJS的使用
      • Node的版本管理工具
    • Node的REPL


浏览器的内核与JS引擎


不同浏览器的不同内核


  • Gecko 火狐浏览器
  • Trident 微软开发,用于 IE浏览器,不久前微软也停止开始对 IE的维护。
  • Blink Google Chrome浏览器,微软新型浏览器 Edge, Opera浏览器
  • Webkit 苹果公司 开发,用于Safari

什么是浏览器的内核

浏览器内核指的是 浏览器的排版引擎

排版引擎又叫浏览器引擎,页面渲渲染引擎

渲染引擎的工作过程

也就是浏览器拿到HTML文件后如何渲染。

浏览器在解析HTML代码是从上到下进行解析,若碰到了 script标签,会停止解析HTML,而是会加载 Javascript代码。WHY 不是异步加载呢。

因为Javascript会可以操作 DOM,浏览器会让 HTML生成的DOM和Javascript操作的DOM 一起形成 DOM树,这样浏览器就不要反复去生成新的 DOM树
在这里插入图片描述

而Javascript代码是交给Javascript引擎来执行的

我了解的一点点关于Javascript引擎的知识是关于 V8引擎的。

1_Da6ylguo0X6aIKW1v51YcQ

  • parser解析器,将Javascript代码源代码 解析成抽象语法树。
  • ignition解释器,将抽象语法树 转换成 字节码,其实此时就可以执行了。
  • TurboFan解释器,V8具有如下的机制,为了提高执行效率,如果某个方法经常被调用,那么这个函数挥别标记成热点函数,并将其转换为机器码再执行,以提高执行效率。但是若这个热点函数有改变,机器码又会反过来影响 字节码。

什么是NodeJS

NodeJS 是 一个基于 V8 Javascript引擎的Javascript运行环境。

已经知道浏览器可以执行JS代码,NodeJS也可以执行JS代码,那么两个有什么不同?

浏览器再执行JS的基础上,还要解析HTML,CSS之类的。但是NodeJS不要。

图解基于Node.js实现前后端分离| 亚里士朱德的博客

NodeJS的使用

安装:官网点击下载

image-20210616175033090

安装完Node之后,Node自带一个包管理工具 npm

理论上一台机器只能安装一个版本的Nodejs。要是我们想要多个呢?

Node的版本管理工具


  • mac 电脑可以安装 nvmn安装npm install 工具名字 -g进行全局安装。
  • window 可以安装另一个版本的 nvm。以下演示:

我是window系统,就以window的版本管理工具演示:

  • 安装工具 好像是没有直接命令安装的,只能在Github上下载, nvm-windows仓库地址
  • image-20210616180055759

使用

  • nvm -v查看当前nvm版本
  • nvm -h 查看使用帮助
  • nvm list本机上安装了哪些版本的 NodeJS
  • nvm list available 查看当前可以的node版本有哪些,如何可以对应下载版本。
  • nvm install 版本号 安装对应版本的Node
  • nvm use 版本号 使用本机安装好且版本号为输入值得Node

在Node环境下执行JS代码

image-20210616181101548

在Node环境下传递参数给JS文件

image-20210616181422450

Node的REPL

REPL是一个简单的、交互式的编程环境

浏览器也存在 REPL

image-20210616182012123

L

REPL是一个简单的、交互式的编程环境

浏览器也存在 REPL

在这里插入图片描述


推荐阅读
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • PyCharm 作为 JetBrains 出品的知名集成开发环境(IDE),提供了丰富的功能和强大的工具支持,包括项目视图、代码结构视图、代码导航、语法高亮、自动补全和错误检测等。本文详细介绍了 PyCharm 的高级使用技巧和程序调试方法,旨在帮助开发者提高编码效率和调试能力。此外,还探讨了如何利用 PyCharm 的插件系统扩展其功能,以满足不同开发场景的需求。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 在Bugku Web CTF实战演练中,通过细致的源代码检查,我们发现了一个隐藏的滑稽笑脸图标,进一步分析后成功找到了flag。此外,还探讨了如何利用计算器功能进行安全测试,提升了对Web漏洞的识别和利用技巧。 ... [详细]
  • 地图集成方法与应用 ... [详细]
  • 本文详细探讨了OpenCV中人脸检测算法的实现原理与代码结构。通过分析核心函数和关键步骤,揭示了OpenCV如何高效地进行人脸检测。文章不仅提供了代码示例,还深入解释了算法背后的数学模型和优化技巧,为开发者提供了全面的理解和实用的参考。 ... [详细]
  • 在处理分享功能时,以往通常会首先考虑使用第三方SDK,如友盟等。然而,通过实际项目经验发现,利用iOS原生的UIActivityViewController不仅可以实现高效、稳定的分享功能,还能更好地控制用户体验。本文将详细介绍如何利用iOS原生技术缓存HTML内容,并结合URL分享的最佳实践,帮助开发者在实际开发中提升应用性能和用户满意度。 ... [详细]
author-avatar
小勺年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有