整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript的执行环境及作用域

JavaScript的执行环境及作用域

、执行环境

执行环境(execution context)是JavaScript中最为重要的一个概念。执行环境定义了执行环境有权访问的变量和函数。每个执行环境都有一个与之关联的变量对象(varibale object),环境中定义的所有变量或函数都保存在这个对象中。虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。

全局执行环境是最外围的一个执行环境。根据ECMAScript实现所在的宿主环境不同,表示执行环境的对象也不一样。在Web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。某个执行环境中的所有代码执行完毕后,该环境销毁,保存在其中的所有变量和函数定义也随之销毁(全局执行环境直到应用程序退出—例如关闭网页或浏览器—时才会被销毁)。

每个函数都有自己的执行环境。但执行流进入一个函数时,函数的环境就会被推入一个环境栈中。而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境。ECMAScript程序中的执行流正式由这个方便的机制控制着。

二、作用域链

当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终是当前执行的代码所在环境的变量对象。

如果这个环境是函数,则将其活动对象(activation object)作为变量对象。活动对象在最开始时只包含一个变量,即arguments对象(这个对象在全局环境中是不存在的)。作用域链中的下一个变量对象来自包含(外部)环境,而再下一个变量对象则来自下一个包含环境。这样,一直延续到全局执行环境,全局执行环境的变量对象始终都是作用域链中的最后一个对象。

标识符解析是沿着作用域链一级一级地搜索标识符的过程。搜索过程始终从作用域链的前端开始,然后逐渐地向后回溯,直到找到标识符为止(如果找不到标识符,通常会导致错误发生)。

var color="blue";
function changeColor(){
 var anotherColor="red";
 
 function swapColors(){
 var tempColor=anotherColor;
 anotherColor=color;
 color=tempColor;
 //这里可以访问color、anotherColor和tempColor
 }
 //这里可以访问color和anotherColor,但不能访问tempColor
 swapColors();
}
//这里只能访问color
changeColor();

以上代码共涉及3个执行环境:全局环境、changeColor()的局部环境和swapColors()的局部环境。对于例子中的swapColors()而言,其作用域链中包含3个对象:swapColors()的变量对象、changeColor()的变量对象和全局对象。

内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。这些环境之间的联系是线性、有次序的。每个环境可以向上搜索作用域链,以查询变量和函数名,但任何环境都不能通过向下搜索作用域链而进入另一个执行环境。

tml开发环境搭建

有一个好的编辑器我们可以方便地的开发项目,编写代码,配置和管理我们的项目。所以我们开始编写html代码之前需要搭建开发环境。

基于html项目的开发和代码编写现在网上有很多编辑器,也有免费的,也有收费的编辑器。基于在Windows系统环境下开发和编写html代码最简单的编辑器就是Windows自带的记事本,我们可以使用记事本编辑html代码。

使用记事本编写html的步骤是首先新建一个文本文档,按照html的语法规则编写相关的代码和保存文件,然后把文件的后缀名改为.html,使用电脑上的浏览器打开就可以查看我们代码的运行结果。

虽然记事本也能编写html代码,但是效率不高也不方便,所以我们使用专业的编辑器来开发项目,编写代码和管理项目。

常用html代码编写的免费软件有HBuilderX,vs code,Sublime Text 等等。

HBuilderX官网下载地址:

https://www.dcloud.io/hbuilderx.html

vs code的官网下载地址:

https://code.visualstudio.com/

Sublime Text官网下载地址:

http://www.sublimetext.com/

我们以后的教程都使用HBuilderX,所以下面为了同学们的学习方便,对HBuilderX的下载和安装做详细的教程。


一,下载

首先访问HBuilderX的官网网址:

https://www.dcloud.io/hbuilderx.html

打开上面的HBuilderX下载网址后点击页面上download,在弹出的对话框里选择适合自己电脑的HBuilderX版本下载。

在Windows10环境下下载后的文件是一个压缩的.zip文件。



二,安装

鼠标右击下载下来的压缩文件进行解压。

解压完成后是一个名为HBuilderX的文件夹。

解压完成后鼠标双击HBuilderX文件夹:

双击运行名为HBuilderX.exe的应用程序文件即可启动HBuilderX编辑器:

因为HBuilderX是一个绿色软件所以没有桌面快捷方式和开始菜单快速启动程序,我们可以右击HBuilderX.exe文件创建桌面快捷方式。



小百科:

绿色软件指一类小型软件,多数为免费软件,最大特点是软件无需安装便可使用,可存放于闪存中,移除后也不会将任何记录留在本机计算机上。通俗点讲绿色软件就是指不用安装,下载直接可以使用的软件。绿色软件不会在注册表中留下注册表键值,所以相对一般的软件来说,绿色软件对系统的影响几乎没有,所以是很好的一种软件类型。



三,新建项目

HBuilderX编辑器初次启动时的默认界面是下图所示:

按照下图所示可以创建一个新的名为demo1空白项目:

名为demo1的空白项目创建成功后的界面如下图所示:

接下来在刚我们新建的demo1项目下创建名为helloworld的html文件

鼠标右击创建的demo1项目选择新建在选择.html文件:

在弹出的对话框里填入html文件的名称:

编写一段代码:

运行:

在浏览器上观察效果:




好了,到这里html的开发环境搭建和HBuilderX的安装教程结束了。

下面再给大家教一下怎样修改HBuilderX的主题风格,HBuilderX自身提供了修改软件主题的功能,使用者可以自身需求和喜好修改HBuilderX的风格。在喜欢自己喜欢的环境下做开发也是令人羡慕的一件事。

按照以下步骤可以修改HBuilderX的主题,默认主题是绿柔,我们可以改成雅黑,雅蓝或者自定义主题:

雅黑主题:

雅蓝主题:


好了本节全部内容全部结束了,希望我准备的内容对你有所帮助

你的支持是我的最大动力,若觉得我的教程还可以或对你有帮助为我点赞加关注!谢谢!

要:在IT行业中,后端开发者发挥着至关重要的作用。尤其是在技术变革日新月异的时代,更需要后端开发者不断提升自我的技能,但是,无论技术迭代如何迅速,后端开发人员的“基本功”都不可以落下。本文展开讨论成为JavaScript堆栈后端开发人员,必须经历的那些事……

原文链接:

https://billypentester.medium.com/ultimate-10-stages-to-master-backend-development-f6f65f22a327

声明:本文为CSDN翻译,转载请注明来源。

作者 | Bilal Ahmad

译者 | 朱珂欣 责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

随着时代的发展,越来越多编程语言和开发工具的出现,让开发者能够方便且快捷地开发和部署应用程序。其中,后端开发多是指服务器端编程,开发人员通过创建应用程序体系结构和业务逻辑,以此处理和存储数据并输出有用的信息。

毋庸置疑,成为后端开发人员必然有门槛,掌握Web和操作系统的基础知识、了解数据库、计算机网络协议、数据结构和算法、开发工具等,逐渐成为后端开发人员的入门技能。后端编程语言、框架和堆栈也很多,例如JavaScript、Python、PHP、Java、Ruby等。那么,成为JavaScript堆栈后端开发人员,需要面临那几个必须经历的阶段呢?


第1阶段:掌握Web基础知识

在开发人员的初始阶段,学习Web的基础知识是至关重要的。因为拥有Web概念可以帮助开发人员更好地了解互联网的工作原理,例如使用哪些协议、如何传递消息等。

首当其冲的是了解Web中的一些基本概念,例如HTTP的概念、HTTP的基本方面、HTTP 请求的类型及作用、客户端和服务器模型、OSI 模型、DNS 工作原理等。


第2阶段:了解操作系统知识
操作系统,管理着计算机上的所有软件和硬件。它执行内存和进程管理,处理输入和输出等。通过运行操作系统,进一步运行完整 Web 应用的服务器。因此,开发人员有必要了解操作系统整体实现,以最大限度地提高性能并优化内存。
在此阶段,开发需要了解操作系统体系结构、文件系统、基本CLI命令、内存和进程管理、操作系统线程等。

第3阶段:学习后端框架和语言

在开发者学习要使用的后端框架和语言的过程中,第一步是学习JavaScript。学习JavaScript的基础知识,例如数据类型、循环、选择、函数、对象、类、数组、字符串、正则表达式等。
JavaScript 由ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)三个部分组成。ECMAScript是JavaScript所基于的脚本语言规范。它引入了新的JavaScript功能,如箭头函数,异步等待,模板文本等,这些功能可以对有效的编码很有帮助。
Node.js是一个开源的、跨平台的、后端的JavaScript运行时环境,它在JavaScript引擎上运行并执行JavaScript代码。开发人员可以学习基本的节点JavaScript模块,例如fs、path、os等。

第4阶段:使用服务器框架和API开发

首先,服务器端框架作为后端开发中的主要角色,它是前端和后端(节点应用)之间的通信网关,使编写、维护和扩展Web应用更加容易。
服务器端框架提供工具和库来实现简单、常见的开发任务,包括路由处理,数据库交互,会话支持和用户验证,格式化输出,提高安全性应对网络攻击,也能使开发人员完全控制传入和传出的请求/响应,提供端点,执行中间件功能等。
其次,API开发作为一种实践阶段,开发人员将学习如何使用Express JS和节点JS创建简单的REST API并执行CRUD操作。使用快速中间件验证传入请求,使用路由器处理端点等。
Postman 在测试 API 端点方面很有帮助。添加更多内容并了解 swagger 和 Open API。

第5阶段:使用模板引擎

通常,前端(React应用程序)和后端(快速应用程序)之间的通信是使用MERN堆栈中的API调用完成的。客户端从服务器请求数据,服务器将请求的数据发送回客户端。
但是,如果开发人员的项目很小,并且对 React 或其他前端框架不了解,可以使用模板引擎。
模板引擎可帮助开发人员创建静态HTML模板文件,并在运行时将模板文件中的变量替换为实际值,这使其成为动态网站。模板引擎与Express JS的集成一起工作。它从数据库获取数据值,并可以通过HTML 模板文件呈现这些值。


第6阶段:了解数据库

数据库在后端开发中发挥着巨大的作用。数据库用于以结构化方式存储数据以及访问和维护数据。

后端应用程序可以通过使用MongoDB,MySQL等第三方npm包查询数据库来直接与数据库交互。如果开发人员不了解SQL或数据库语言,则需要学习任何ORM/ODM作为中间件,将对象方法转换为复杂的数据库查询,这些中间件为开发人员提供了一个名为模型的完整结构,用于在将数据输入数据库之前验证数据。此外,它在对象模型之上提供了一个额外的安全层。


第7阶段:关注安全性

安全性是企业级 Web 应用程序的一大关注点。单个漏洞会导致数据泄露或应用程序故障。Web 应用中应有适当的验证、身份验证和授权。

因此,开发人员在该阶段可能会涉及促进应用更安全的一些技术,例如:
  • JWT:使用令牌防止对受保护资源的意外访问;
  • Cookie:用于存储有关访问网页的信息;
  • 会话:用于维护与服务器的安全连接;
  • CORS:使用CORS从一个网站向另一个网站发出请求;
  • 哈希:使用中间件通过salt对密码进行哈希处理;
  • 加密/解密:使用中间件加密和解密重要数据;
  • SSL:使用SSL认证来保护事务;
  • 限制:使用中间件应用请求限制,防止DDOS攻击。


第8阶段:使用消息代理

现代应用程序非常复杂,由于时间复杂度大,CPU密集型操作、大量数据处理以及多个服务之间的API通信存在耗时的问题,会带来糟糕的用户体验。

消息代理成为帮助克服其中一些困难的解决方案之一消息代理由 3 个组件组成:

  • 制作人:生产者发送有关主题的消息。一个或多个发布者可以针对同一主题发布内容;

  • 消费者:订阅者订阅主题,发布到该主题的所有消息都将由该主题的所有订阅者接收;

  • 队列/主题:队列保存由生产者发布并由消费者访问的消息。


第9阶段:测试完整的API

在实时服务器上部署Web应用程序之前,为了减少单个错误的输入或缺少数据导致正在运行的服务器出现故障,需要进行测试。

测试可以根据多个标准在多个级别上进行,开发人员可以检查Web应用是否返回了正确的状态代码、错误消息、数据等。

在这个阶段,开发人员的主要任务是使用Jest测试完整的API。Jest是一个著名的单元测试框架,用于测试Web应用程序和API。它提供了多种方法来自动化测试过程,检查对错误或缺失数据的响应等。

第10阶段:实时服务器/云上部署Web应用程序

在部署Web应用之前,开发人员需要学习Git、GitHub的操作以及版本控制工具的使用,以使部署灵活且可扩展。

Git可以用于版本控制,通过创建多个分支,跟踪源代码中的更改,并使多个开发人员能够协同工作。GitHub是一个用于版本控制和协作的代码托管平台,可以允许开发人员和其他人共同处理项目。GitHub操作可帮助您自动执行软件开发工作流。单个操作是可重用的代码段,可用于在 GitHub上生成、测试、打包或部署项目。它还可用于自动执行工作流程的任何步骤。部署完整的Web应用非常复杂。开发者还需要一个专用服务器来响应HTTP请求,并使用在线数据库。

总的来说,从应用程序开发最初阶段的掌握Web基础知识,到最后阶段在实时服务器/云上部署Web应用程序。JavaScript堆栈后端开发者在点滴的积累中,学习和掌握了与应用开发相关的实践经验。然而,无论是对于后端开发的初学者还是对有经验工程师,无论迈过多少个阶段,学习之路都不会中断。