你所熟知的javascript?从基础原理开始认识JS语言

2024-06-03 10:38

本文主要是介绍你所熟知的javascript?从基础原理开始认识JS语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

javascript是一种具有面向对象能力的、解释型的程序设计语言。它是基于对象和时间驱动,并具有相对安全性的客户端脚本语言。因为它并不需要在一个语言环境下运行,只需要有支持它的浏览器即可,它的主要目的是验证发往服务器断的数据,增加web互动,加强用户体验。

解释型语言与编译型语言的区别

解释型语言:这种是在运行的时候就将程序编译成机器语言。

编译型语言:这种是在运行程序前有一个编译过程,但是并不是将程序编译成机器语言,而是编译成字节码。例如java语言在运行的时候,由JVM将字节码在翻译成机器语言。JVM是java虚拟机,是一个虚构出的计算机。

但是解释型语言在编译的效率上要比编译型语言要慢,javascript是一种解释型语言。它在将程序放在浏览器上解析的时候,js在浏览器上自己的解释引擎。javascript v8引擎。浏览器核心把js编译成view要进行“词法分析”,“语法分析”,“代码生成”三个阶段。这是明显的编译型语言特征。详见《犀牛书第二章》《你不知道的javascript》第一章。

java代码由JVM执行

javascript是由javascript解释器执行

每个浏览器的并不一样,一般都包含在各浏览器的内核中

浏览器内核一般包含两个引擎:页面排版引擎 和 JS引擎

IE的 使用的自己的Trident 内核

FireFox 是Gecko内核

Opera 是Presto内核

Safari 使用的Webkit 内核

Chrome 是Google自己的 javascript V8引擎 而其页面排版采用的Webkit 内核

javascript是脚本语言,脚本语言也是解释型语言,脚本语言不需要编译,直接由解释器来解释即可。从刚才的javascript是编译型语言的论据来看,javascript也是编译型语言。就不能一概而论是脚本语言。认识脚本语言的方式很简单。

编写一个程序叫xxx.exe,点击.exe可以打开.aa为扩展名的文件。那么你就是为.aa的文件编写指定了规则,这就是脚本所做的事情与关系,通过指令去让程序按照顺序执行。

javascript在浏览器内核的关系与原理认识

浏览器解析渲染页面原理:

说起这个肯定要提到大家比较熟悉的webkit,谷歌浏览器的渲染引擎。在其他浏览器中的渲染引擎并不相同,每个浏览器的内核引擎都不一致,所以导致了现在我们在编写html代码做页面结构布局的过程中要做很多关于各大浏览器的兼容性问题。

浏览器最重要最核心的部分则是解释引擎也就是浏览器内核。一个网页正常的工作需要用到两个引擎:渲染引擎和解释引擎。兼容性的各种写法都是针对于这些浏览器内核引擎去做的。于是现在的主流浏览器内核有哪些呢?

目前市场上的四大主流浏览器

IE

所使用的浏览器内核为 Trident(四大内核中处理速度最慢)

由于window市场的占有率,IE浏览器借助其地位造成了Trident内核一家独大的情况,因为这种情况出现,微软也长时间没有去对Trident做过更新,Trident出现了与W3C标准的脱节问题与大量BUG和安全性问题无法解决,直接导致了FireFox浏览器的崛起。但是因为其市场占有率的原因,现在作为前端开发工程师最头痛的兼容处理还是针对于IE的一些低版本。

FireFox

所使用的浏览器内核为 Gecko

开放源码,运行处理速度快。开源的东西总是容易受到广大猿类的欢迎!而且使用Gecko的浏览器也非常多,一般是用在一些国外的浏览器上。国内不作多的考虑!

Opera

所使用的浏览器内核为 presto

最凶残解释引擎!网页排版引擎。为了渲染速度的提高做了极高优化,简单来讲就是为了效率为了速度不顾一切。但是有得必有失,速度是牺牲了兼容性才得来的。毋庸置疑,它是在所有浏览器内核解析javascript速度是最快的。但是到如今因为前端的发展速度太快,一切以用户体验为先,不能在以牺牲兼容性换取速度。Opera停用了presto改用了谷歌的Blink内核。

Chrome

所使用的浏览器内核为 webkit渲染引擎 javascript v8解释引擎

应该讲的在上面都已经解释过了,这里就不作多解释了。这个也是很多人开始学习前端和广大前端工程师比较喜好的一个浏览器Chrome浏览器的内核。它是苹果公司自己的内核。

壳浏览器:

使用IE内核而非IE浏览器,这类浏览器被称之为“套壳浏览器”。出现的原因是因为Trident是一款开放的内核,所以国内市场上出现了大量的这种壳浏览器。例如360、腾讯TT、猎豹、遨游之类,采用双核内甚至多核的方式,在其中有一个为Trident内核,其他的在添加其他内核。国内的浏览器厂商一般把这种情况分为两种,“高速浏览模式”与“兼容浏览模式”,以供用户来回切换使用,其中IE内核Trident则是“兼容浏览模式”,因为国内的厂商所套用的IE内核版本都不会很高,跟不上Trident的迭代更新的速度,低版本的IE内核体积过小,方便用户下载。所以从发展之初便被广泛捆绑安装使用,直到发展到现在,安全性也会有一定的问题。

诸如以上众多问题的提出,一步一步的解决和认知。我们知道了什么是解释型语言,什么是编译型语言。通过解释型语言认识了浏览器内核,它们之间的一些区别与我们平时写代码的过程中息息相关的事情。在web前端的学习过程中或者说是在不断的提升自己的过程中,理解并且认识javascript一定是最为重要的。在javascript的发展过程中,也许在之前很多的朋友认为javascript有没有必要去潜心学习?从当下开始,如果有人像你咨询,想要学习一门语言或者是想要掌握一门新的语言,你需要向他推荐javascript,一定是javascript。从jQuery的出现第一次带动javascript的发展,到html5让javascript真正的做到让人们认识,再到现在的nodejs。彻底的颠覆了之前大部分人对于javascript的一些看法。这些新型的框架出现让javascript真正的潜力无限!

html5就是javascript的高级内容进阶部分

现在还是有很多人把html5与html相关联,它们之间有相关性吗?不过是做了一些优化,添加了一些新的标签,新的标签也不难理解方便使用,为什么就被定义成html基础部分了呢?

html5的真正威力是在于你能通过javascript来创建标签,利用内核的两种特性去分别解释与渲染,canvas被人所熟知也是因为其功能强大,动画、特效、游戏、数据的可视化。都是需要通过javascript与后台的支持才能有其效果。所有的一切都要归功与javascript。webgl支持html5画布绘制3D图像效果。html5的地理位置支出在浏览器中显示则是LBS应用等等。javascript与文档型数据库的对接做到了太多的不可能。ECMAscript版本的不断迭代更新,出现了太多太多以其为基础的js框架,vuejs、angularjs、reactjs...


这篇关于你所熟知的javascript?从基础原理开始认识JS语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026754

相关文章

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

SpringBoot整合Zuul全过程

《SpringBoot整合Zuul全过程》Zuul网关是微服务架构中的重要组件,具备统一入口、鉴权校验、动态路由等功能,它通过配置文件进行灵活的路由和过滤器设置,支持Hystrix进行容错处理,还提供... 目录Zuul网关的作用Zuul网关的应用1、网关访问方式2、网关依赖注入3、网关启动器4、网关全局变

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

基于SpringBoot实现分布式锁的三种方法

《基于SpringBoot实现分布式锁的三种方法》这篇文章主要为大家详细介绍了基于SpringBoot实现分布式锁的三种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、基于Redis原生命令实现分布式锁1. 基础版Redis分布式锁2. 可重入锁实现二、使用Redisso

SpringBoot的全局异常拦截实践过程

《SpringBoot的全局异常拦截实践过程》SpringBoot中使用@ControllerAdvice和@ExceptionHandler实现全局异常拦截,@RestControllerAdvic... 目录@RestControllerAdvice@ResponseStatus(...)@Except

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

Java 接口定义变量的示例代码

《Java接口定义变量的示例代码》文章介绍了Java接口中的变量和方法,接口中的变量必须是publicstaticfinal的,用于定义常量,而方法默认是publicabstract的,必须由实现类... 在 Java 中,接口是一种抽象类型,用于定义类必须实现的方法。接口可以包含常量和方法,但不能包含实例

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Springboot的配置文件及其优先级说明

《Springboot的配置文件及其优先级说明》文章介绍了SpringBoot的配置文件,包括application.properties和application.yml的使用,以及它们的优先级,还讨... 目录配置文件内置配置文件yml与properties的比较优先级比较外置配置文件springboot