你所熟知的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

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav