脚本分几种,用途都是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本分几种,用途都是啥?相关的知识,希望对你有一定的参考价值。

脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。   脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。   脚本通常可以由应用程序临时调用并执行。各类脚本被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当点击网页上的Email地址时能自动调用Outlook Express或Foxmail这类邮箱软件,就是通过脚本功能来实现的。也正因为脚本的这些特点,往往被一些别有用心的人所利用。例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用 这类脚本,便会使用户的系统受到攻击。所以用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些本身内容就非法的网页,更不要轻易允许使用脚本。通过“安全设置”对话框,选择“脚本”选项下的各种设置就可以轻松实现对脚本的禁用和启用。 计算机语言是为了各种目的和任务而开发的,一个常见任务就是把各种不同的已有组件连接起来以完成相关任务。大多脚本语言共性是:良好的快速开发,高效率的执行,解释而非编译执行,和其它语言编写的程序组件之间通信功能很强大。   许多脚本语言用来执行一次性任务,尤其是系统管理方面。它可以把服务组件粘合起来,因此被广泛用于GUI创建或者命令行,操作系统通常提供一些默认的脚本语言,即通常所谓shell脚本语言。   脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。   有些脚本是为了特定领域设计的,但通常脚本都可以写更通用的脚本。在大型项目中经常把脚本和其它低级编程语言一起使用,各自发挥优势解决特定问题。脚本经常用于设计互动通信,它有许多可以单独执行的命令,可以做很高级的操作,(如在传统的Unix shell (sh)中,大多操作就是程序本身。)   这些高级命令简化了代码编写过程。诸如内存自动管理和溢出检查等性能问题可以不用考虑。在更低级或非脚本语言中,内存及变量管理和数据结构等耗费人工,为解决一个给定问题需要大量代码,当然这样能够获得更为细致的控制和优化。脚本缺少优化程序以提速或者降低内存的伸缩性。   综上所述,脚本编程速度更快,且脚本文件明显小于如同类C程序文件。这种灵活性是以执行效率为代价的。脚本通常是解释执行的,速度可能很慢,且运行时更耗内存。在很多案例中,如编写一些数十行的小脚本,它所带来的编写优势就远远超过了运行时的劣势,尤其是在当前程序员工资趋高和硬件成本趋低时。   然而,在脚本和传统编程语言之间的界限越来越模糊,尤其是在一系列新语言及其集成畅出现时。在一些脚本语言中,有经验的程序员可以进行大量优化工作。在大多现代系统中通常有多种合适的脚本语言可以选择,所以推荐使用多种语言(包括C或汇编语言)编写一种脚本。 常见的脚本语言:Scala、javascript,VBScript,ActionScript,MAX Script,ASP,JSP,php,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。 [编辑本段]与其他编程语言的关系及特点   1.脚本语言(JavaScript,VBscript等)介于html和C,C++,Java,C#等编程语言之间。   HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。   2.脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些.   3.与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。   注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。Python、JAVASCRIPT,ASP,PHP,PERL,Nuva都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。   4.脚本语言是一种解释性的语言,例如Python、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在.   脚本语言不需要编译,可以直接用,由解释器来负责解释。   5.脚本语言一般都是以文本形式存在,类似于一种命令.   举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件.   你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本。 计算机脚本语言程序举例   (1)JavaScript:   ①用于HTML中:   alert("Hello World")   ②用于WSH中:   WScript.Echo("Hello World")   (2)ASP:   <% Response.Write("Hello, world!") %>   或者:   <% strHelloWorld = "Hello, world!" %>   <%= strHelloWorld %>   或者简单地写成:   <%= "Hello, world!" %>   (3)PHP:   <?php   echo 'Hello, world!';   print 'Hello, world!';   ?>   或者   <?= "Hello World!"?>   (4)PERL:   #!/usr/local/bin/perl   print "Hello, world!\n";   (5)Nuva:   <.. "Hello, World!" Demo ..>   <.   //======================================   // Hello, World! (1)   //======================================   ?? 'Hello, World!'   /*======================================   Hello, World! (2)   ======================================*/   function HelloWorld()   ?? "Hello, World!";   end function   HelloWorld();   /*======================================   Hello, World! (3)   ======================================*/   class World()   function Hello()   ?? 'Hello, World!';   end function   end class   var n = World();   n.Hello();   .>   (6)ActionScript:   ①ActionScript 2.0版本:   trace("Hello, world!");   ②ActionScript 3.0版本:   package   import flash.display.TextField;   import flash.display.MovieClip;   import flash.filters.DropShadowFilter;   public class HelloWorld extends MovieClip   public function HelloWorld()   var shad:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 25, 3, 3, 2, 2);   var txt:TextField = new TextField();   txt.textColor = 0xFFFFFF;   txt.filters = [shad];   txt.width = 120;   txt.x = Math.random()*300;   txt.y = Math.random()*300;   txt.selectable = false;   txt.text = "Hello World! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]";   addChild(txt);            (7)PostScript:   PostScript是一种专门用来创建图像的语言,常用于打印机。   /font /Courier findfont 24 scalefont   font setfont   100 100 moveto   (Hello World!) show   showpage   (8)AppleScript:   say "Hello World!"   (9)Bash:   #!/usr/bin/env bash   myvar="hello"   myfunc()   local x   local myvar="one two three"   for x in $myvar   do   echo $x   done      myfunc   echo $myvar $x   (10)Ruby   #!/usr/bin/env ruby   puts "Hello, world!" 参考技术A 计算机网络的分类方式有很多种,可以按地理范围、拓扑结构、传输速率和传输介质等分类。

⑴按地理范围分类

①局域网LAN(Local Area Network)

局域网地理范围一般几百米到10km之内,属于小范围内的连网。如一个建筑物内、一个学校内、一个工厂的厂区内等。局域网的组建简单、灵活,使用方便。

②城域网MAN(Metropolitan Area Network)

城域网地理范围可从几十公里到上百公里,可覆盖一个城市或地区,是一种中等形式的网络。

③广域网WAN(Wide Area Network)

广域网地理范围一般在几千公里左右,属于大范围连网。如几个城市,一个或几个国家,是网络系统中的最大型的网络,能实现大范围的资源共享,如国际性的Internet网络。

⑵按传输速率分类

网络的传输速率有快有慢,传输速率快的称高速网,传输速率慢的称低速网。传输速率的单位是b/s(每秒比特数,英文缩写为bps)。一般将传输速率在Kb/s—Mb/s范围的网络称低速网,在Mb/s—Gb/s范围的网称高速网。也可以将Kb/s网称低速网,将Mb/s网称中速网,将Gb/s网称高速网。

网络的传输速率与网络的带宽有直接关系。带宽是指传输信道的宽度,带宽的单位是Hz(赫兹)。按照传输信道的宽度可分为窄带网和宽带网。一般将KHz—MHz带宽的网称为窄带网,将MHz—GHz的网称为宽带网,也可以将kHz带宽的网称窄带网,将MHz带宽的网称中带网,将GHz带宽的网称宽带网。通常情况下,高速网就是宽带网,低速网就是窄带网。

⑶按传输介质分类

传输介质是指数据传输系统中发送装置和接受装置间的物理媒体,按其物理形态可以划分为有线和无线两大类。

①有线网

传输介质采用有线介质连接的网络称为有线网,常用的有线传输介质有双绞线、同轴电缆和光导纤维。

●双绞线是由两根绝缘金属线互相缠绕而成,这样的一对线作为一条通信线路,由四对双绞线构成双绞线电缆。双绞线点到点的通信距离一般不能超过100m。目前,计算机网络上使用的双绞线按其传输速率分为三类线、五类线、六类线、七类线,传输速率在10Mbps到600Mbps之间,双绞线电缆的连接器一般为RJ-45。

●同轴电缆由内、外两个导体组成,内导体可以由单股或多股线组成,外导体一般由金属编织网组成。内、外导体之间有绝缘材料,其阻抗为50Ω。同轴电缆分为粗缆和细缆,粗缆用DB-15连接器,细缆用BNC和T连接器。

●光缆由两层折射率不同的材料组成。内层是具有高折射率的玻璃单根纤维体组成,外层包一层折射率较低的材料。光缆的传输形式分为单模传输和多模传输,单模传输性能优于多模传输。所以,光缆分为单模光缆和多模光缆,单模光缆传送距离为几十公里,多模光缆为几公里。光缆的传输速率可达到每秒几百兆位。光缆用ST或SC连接器。光缆的优点是不会受到电磁的干扰,传输的距离也比电缆远,传输速率高。光缆的安装和维护比较困难,需要专用的设备。

②无线网

采用无线介质连接的网络称为无线网。目前无线网主要采用三种技术:微波通信,红外线通信和激光通信。这三种技术都是以大气为介质的。其中微波通信用途最广,目前的卫星网就是一种特殊形式的微波通信,它利用地球同步卫星作中继站来转发微波信号,一个同步卫星可以覆盖地球的三分之一以上表面,三个同步卫星就可以覆盖地球上全部通信区域。

⑷按拓扑结构分类

计算机网络的物理连接形式叫做网络的物理拓扑结构。连接在网络上的计算机、大容量的外存、高速打印机等设备均可看作是网络上的一个节点,也称为工作站。计算机网络中常用的拓扑结构有总线型、星型、环型等。

①总线拓扑结构

总线拓扑结构是一种共享通路的物理结构。这种结构中总线具有信息的双向传输功能,普遍用于局域网的连接,总线一般采用同轴电缆或双绞线。

总线拓扑结构的优点是:安装容易,扩充或删除一个节点很容易,不需停止网络的正常工作,节点的故障不会殃及系统。由于各个节点共用一个总线作为数据通路,信道的利用率高。但总线结构也有其缺点:由于信道共享,连接的节点不宜过多,并且总线自身的故障可以导致系统的崩溃。

②星型拓扑结构

星型拓扑结构是一种以中央节点为中心,把若干外围节点连接起来的辐射式互联结构。这种结构适用于局域网,特别是近年来连接的局域网大都采用这种连接方式。这种连接方式以双绞线或同轴电缆作连接线路。

星型拓扑结构的特点是:安装容易,结构简单,费用低,通常以集线器(Hub)作为中央节点,便于维护和管理。中央节点的正常运行对网络系统来说是至关重要的。

③环型拓扑结构

环型拓扑结构是将网络节点连接成闭合结构。信号顺着一个方向从一台设备传到另一台设备,每一台设备都配有一个收发器,信息在每台设备上的延时时间是固定的。

这种结构特别适用于实时控制的局域网系统。

环型拓扑结构的特点是:安装容易,费用较低,电缆故障容易查找和排除。有些网络系统为了提高通信效率和可靠性,采用了双环结构,即在原有的单环上再套一个环,使每个节点都具有两个接收通道。环型网络的弱点是,当节点发生故障时,整个网络就不能正常工作。

④树型拓扑结构

树型拓扑结构就像一棵“根”朝上的树,与总线拓扑结构相比,主要区别在于总线拓扑结构中没有“根”。这种拓扑结构的网络一般采用同轴电缆,用于军事单位、政府部门等上、下界限相当严格和层次分明的部门。

树型拓扑结构的特点:优点是容易扩展、故障也容易分离处理,缺点是整个网络对根的依赖性很大,一旦网络的根发生故障,整个系统就不能正常工作。
参考技术B 脚本语言有很多种,比如VBScript / JavaScript等,完成的功能也有很多。至于怎么写脚本,每个脚本都有自己的语言规范,按照语言规范来写吧,一般脚本都是纯文本格式,所以使用系统自带的笔记本软件就可以完成这项工作。 参考技术C 脚本,是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本一般都是有应用程序提供的编程语言,应用程序包括浏览器(javascript、VBScript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言,也可以归入脚本之类。
1、常见的脚本语言:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。
2、脚本与其他编程语言的关系及特点:
(1) 脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间。   
(2)脚本语言其函数与编程语言比较相象,也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂。 
(3)脚本与程序代码的关系:脚本同样由程序代码组成。  
(4)脚本语言是一种解释性的语言。
(5)脚本语言一般都是以文本形式存在,类似于一种命令。
3、脚本通常可以由应用程序临时调用并执行,各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。
当点击网页上的E-mail地址时,能自动调用Outlook Express或Foxmail这类邮件软件,这就是通过脚本功能来实现的。一些网页的英文新闻内容旁会有一个三角符号,点击它就可以听到英文诵读,这也是脚本在起作用。
正因为脚本的这些特点,往往被一些别有用心的人所利用。在脚本中加入一些破坏计算机系统的命令,当用户浏览网页时,一旦调用这类脚本,便会使用户的系统受到攻击。所以用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些本身内容就非法的网页,更不要轻易允许使用脚本。通过“安全设置”对话框,选择“脚本”选项下的各种设置,就可以轻松实现对脚本的禁用和启用。

如果默认为 text/javascript,脚本元素的 HTML “nomodule” 属性的用途是啥?

【中文标题】如果默认为 text/javascript,脚本元素的 HTML “nomodule” 属性的用途是啥?【英文标题】:What’s the purpose of the HTML “nomodule” attribute for script elements if the default is text/javascript?如果默认为 text/javascript,脚本元素的 HTML “nomodule” 属性的用途是什么? 【发布时间】:2018-02-07 04:03:47 【问题描述】:

我不清楚为什么在支持 ES6 模块的新浏览器中存在 nomodule 属性。

在 HTML 5 中,type 属性是可选的,defaults to text/javascript:

type 属性给出了脚本的语言或数据的格式。如果该属性存在,则其值必须是有效的 MIME 类型。不得指定 charset 参数。如果该属性不存在,则使用默认值是“text/javascript”。

它不默认为&lt;script type="module" src="module.js"&gt;&lt;/script&gt;。此默认设置是否已更改?如果不是,为什么需要nomodule?我可以只使用&lt;script src="bundle.js"&gt;&lt;/script&gt; 而不使用nomodule 吗?

【问题讨论】:

【参考方案1】:

purpose of the nomodule attribute 是为了让支持module scripts 的新浏览器忽略特定的script 元素:

nomodule 属性是一个布尔属性,可防止脚本在支持模块脚本的用户代理中执行。

规范has a good example:

此示例展示了如何为现代用户代理包含一个模块脚本,以及为旧用户代理包含一个经典脚本:

<script type="module" src="app.js"></script>
<script nomodule src="classic-app-bundle.js"></script>

在支持模块脚本的现代用户代理中,具有nomodule 属性的script 元素将被忽略,而具有“module”类型的script 元素将被获取和评估(作为模块脚本)。相反,较旧的用户代理将忽略类型为“module”的script 元素,因为这对它们来说是未知的脚本类型——但它们在获取和评估另一个script 元素(作为经典脚本),因为它们没有实现 nomodule 属性。

这就是它的工作原理。

在 HTML 5 中,type 属性是可选的,默认为 text/javascript... 这个默认值是否已更改?

默认值没有改变——它仍然是text/javascript。但是type 属性现在也可以具有值module,这意味着浏览器仍然可以将其解析并执行为text/javascript——但也特别是module script。

如果没有,为什么需要nomodule

这是为了防止支持模块脚本的新浏览器执行仅适用于不支持模块脚本的旧浏览器的脚本,如上例所示。

我可以只使用&lt;script src="bundle.js"&gt;&lt;/script&gt;而不使用nomodule吗?

是的,如果 bundle.js 不使用模块。如果它使用模块,你想把type=module放在它上面(在这种情况下,旧浏览器会忽略它,因为它们无法识别typemodule值)。

【讨论】:

这是否意味着最好有 2 个脚本?一个用于新浏览器,一个用于旧浏览器? @IrfandyJip 您在哪里使用新功能,是的。它可以帮助您针对较新的浏览器进行优化,因为它们不必处理大量仅用于与旧浏览器兼容的代码。 Angular 8 做到了这一点并将其称为“差异加载”。在我正在进行的一个项目中,它使我们能够将现代浏览器的代码大小减少近一半。 哪些浏览器(市场份额> 1%)会使用旧的(nomodule)方式?【参考方案2】:

nomodule 属性

nomodule 属性是一个布尔属性,用于指示浏览器确实支持某个脚本标签不需要加载的模块。

nomodule 属性的目的是为不支持&lt;script type="module"&gt; 的旧浏览器提供一个备份脚本,因此将忽略它​​们。由于旧版浏览器既不支持 &lt;script type="module"&gt; 也不支持 nomodule 属性,可能会出现以下情况:


较新的浏览器,支持&lt;script type="module"&gt; & &lt;script nomodule type="text/javascript"&gt;

浏览器可以加载并执行&lt;script type="module"&gt;脚本 浏览器识别 nomodule 属性并且不加载&lt;script nomodule type="text/javascript"&gt;

旧版浏览器支持&lt;script type="module"&gt; & &lt;script nomodule type="text/javascript"&gt;

浏览器将忽略&lt;script type="module"&gt;,因为它的实现无法处理它。不会下载和执行任何脚本。 浏览器将忽略 nomodule 属性,并继续下载并执行 &lt;script nomodule type="text/javascript"&gt; 脚本。

【讨论】:

【参考方案3】:

nomodule 属性

正如其他答案所述,此布尔属性设置为指示 该脚本不应在支持 ES2015 的浏览器中执行 模块——实际上,这可以用来提供后备脚本到 不支持模块化 JavaScript 代码的旧浏览器。

现在让我们通过一个例子来理解。

我正在使用 es6/ES2015 功能,需要包含 core.js 才能在 IE 浏览器中运行应用程序,其他主流浏览器如 chrome、firefox、safari 都支持 es6/ES2015 功能。您可以看到 IE 浏览器的总供应商大小为 150kb。

<script src="core.js"></script> // around 45kb after gzip
<script src="obserPoly.js></script> // around 5kb after gzip
<script src="vender.js></script> // around 100kb after gzip 

为什么要在其他浏览器中加载 core.js 和 obserpoly.js (45kb+5kb = 50kb)。我在我的脚本中使用了 nomodule 属性,它就像一个冠军。现在,Core.js 和 obserPoly.js 脚本仅在 IE 浏览器中加载。

<script nomodule src="core.js"></script> // around 45kb after gzip
<script nomodule src="obserPoly.js></script> // around 5kb after gzip
<script src="vender.js></script> // around 100kb after gzip 

【讨论】:

以上是关于脚本分几种,用途都是啥?的主要内容,如果未能解决你的问题,请参考以下文章

脚本语言分几种

VBS用途是啥?

JavaScript的主要用途是啥

受保护继承的实际用途是啥?

C语言中的enum是啥用途的?

css的calc方法主要用途是啥呢?