什么是脚本

作者:涛吴
链接:https://www.zhihu.com/question/19901542/answer/13298706
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

假设你经常从网上下东西,全都放在 D 盘那个叫做 downloads 的文件夹里。而你有分类的癖好,每周都要把下载下来的图片放到 pic 文件夹里,pdf 放到 book 文件夹里,mp3 和 wma 文件放到 music 文件夹里。手动分了一年之后你终于厌倦了,于是你打开记事本,写了以下的三行字:

copy /Y D:\download\*.jpg D:\pic\
copy /Y D:\download\*.pdf D:\book\
copy /Y D:\download\*.mp3 D:\music\

然后把它存成一个叫做 cleanupdownload.bat 的文件。想起来的时候你就双击一下这个文件,然后就发现 download 里的三类文件都被拷到它们该去的地方了。这就是个非常简单的脚本

类似于演戏时用到的脚本,script 其实就是一系列指令——演员看了指令就知道自己该表演什么,说什么台词;计算机看了指令就知道自己该做什么事情。所以 script 其实就是短小的、用来让计算机自动化完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。

在网站前端编程的语境下,脚本通常是指在浏览器里运行的小程序,就像剧本一样,它可以用来控制网页上的各类元素该怎么表演给观众看——比如知乎主页右边那个回到页首的小箭头就是个演员,你可以用脚本告诉它只在屏幕下拉到某个特定长度的时候才出现。

(脚本并不是个很好的翻译,问题就出在“脚”这个字上,相当地莫名其妙。Script 一词的词根是“书写”。)


作者:滇狐
链接:https://www.zhihu.com/question/19901542/answer/13302875
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

感谢邀请。在计算机领域里,“脚本”是个非常含糊的概念,在不同上下文下可以有非常不一样的定义。这个问题的上下文是“前端开发”,因此我就仅仅针对前端开发里涉及到的“脚本”来回答这个问题。

它是什么?

如果没有特殊说明的话,前端开发里说的脚本特指 JavaScript。虽然 IE 还支持用 VBScript 写前端脚本,Chrome 即将原生支持 Dart 做前端脚本,Flash 里的 Action Script 某种意义上也可以被看作是“前端开发所使用的脚本”,但如果你想要讨论那些“脚本”的话,都需要加以特殊说明。由于提问者没有给出任何限定,因此我假设提问者提问的仅仅是 JavaScript。

因此,这个问题等价于问“JavaScript 是什么”,而这个等价问题可以在维基百科上找到非常全面的回答:

zh.wikipedia.org/wiki/J
en.wikipedia.org/wiki/J

简单地说,JavaScript 就是一段可以运行的代码,或者嵌入在 HTML 中,或者作为单独的文件被 HTML 引用,用以实现某种动态的功能

用来干什么?

既然 JavaScript 是一段可以运行的代码,那么它在运行的时候,就能实现一些编写者期望的功能。

首先,也是最重要的一点,就是 JavaScript 能够动态改变网页的内容。在 JavaScript 发明出来之前,一张网页显示出来之后,它的内容就不能再改变了,假如网页上有个地方显示了一个数字 1,你想把它变成 2,唯一的方式就是让服务器重新写整张新的网页,把有数字 1 的地方改成 2,然后浏览器再将新生成的网页整个重新显示一遍。有了 JavaScript 之后,它能够动态修改网页的内容,因此你可以通过 JavaScript 直接把网页指定位置的 1 改成 2,而不需要把整张网页都重新写一遍。

其次,JavaScript 能够和用户的操作进行交互。当你的鼠标经过网页上的某个按钮的时候,或者你拖拽了网页上的某个图片的时候,JavaScript 可以知道你做的操作,并作出相应的处理。在 JavaScript 发明出来之前,网页是无法和用户直接进行交互的,用户想要和网站交互,唯一的方式就是填写表单,点提交,然后网站生成一张新的网页送回来,在用户的浏览器上重新显示。这样的交互方式不但单调枯燥,而且每次都这么一来一回一刷新,效率也是很成问题的。

最后,JavaScript 能够控制浏览器实现一些特殊的效果和功能。譬如,JavaScript 可以模拟你点击了浏览器的“后退”的效果,自动把你带到你访问过的前一张网页里;譬如,JavaScript 能够弹出一个小窗口,在弹出的小窗口里显示一些小工具;又譬如,JavaScript 能够获取用户机器上的一些信息,譬如屏幕分辨率、色彩、操作系统、时区等信息,通过这些信息为用户优化网页的显示效果等等……有了这些方便的功能,网页可以做得更加方便更加贴心。

为什么用它?

首先,任何时候只要你需要动态改变网页的内容,你都必须使用 JavaScript。举个例子,你写了张网页,上面有个按钮,点击之后会出现一个下拉菜单,这就涉及到网页内容动态改变的问题了。如果不使用 JavaScript,那么生成下拉菜单的唯一方法就只有一开始显示一张没有下拉菜单的网页,点击了那个按钮之后把整张网页都重新刷新一遍,显示另外一张带有下拉菜单的网页,这是无论是对于用户还是对于网站开发者,都是很糟糕的一件事情。

其次,使用 JavaScript 可以把一些工作放到用户的电脑上,减轻服务器的负担。譬如你写了一个调查问卷,让用户填写自己的生日,你想要验证生日的是不是一个合法的日期,如果不使用 JavaScript,你就必须把用户填写的整张调查问卷的全文都发到服务器上,让服务器验证生日的格式,如果不合法的话,再生成一整张网页,把用户已经填好的所有其它问题都原样再抄进去,并在日期的框旁边写上提示说日期不合法,这样一来一回需要浪费很多资源。而有了 JavaScript 之后,你可以把问卷格式的验证都放到 JavaScript 里,直接在用户自己的电脑上进行验证,所有验证通过后才发给服务器,服务器就只需要做一次最终验证就可以了,这样就大大减轻了服务器的负担。

最后,使用 JavaScript 可以让你的网页用起来更像本地应用程序。由于 JavaScript 功能越来越强大,能实现的效果越来越丰富,因此今天越来越多的网站,把很多复杂的功能直接做进了 JavaScript 里面,整个成为了一个应用程序的客户端,从服务器上获取数据,在浏览器上生成界面并运行,而不再像传统网站那样整个界面都在服务器上生成,浏览器仅仅做展示和一些简单的数据验证。使用这样的网站时,用户不再能够体会到明显的页面切换和刷新,整个操作都会变得非常流畅,这都是 JavaScript 带来的便利。

以上。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值