如何用通俗易懂的語言解釋腳本(script)是什麼?

在學習網站前端知識,對於腳本沒有很清楚的概念。它是什麼?用來幹什麼?為什麼用它?


假設你經常從網上下東西,全都放在 D 盤那個叫做 downloads 的文件夾里。而你有分類的癖好,每周都要把下載下來的圖片放到 pic 文件夾里,pdf 放到 book 文件夾里,mp3 和 wma 文件放到 music 文件夾里。手動分了一年之後你終於厭倦了,於是你打開記事本,寫了以下的三行字:

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

然後把它存成一個叫做 cleanupdownload.bat 的文件。想起來的時候你就雙擊一下這個文件,然後就發現 download 里的三類文件都被拷到它們該去的地方了。這就是個非常簡單的腳本。

類似於演戲時用到的腳本,script 其實就是一系列指令——演員看了指令就知道自己該表演什麼,說什麼台詞;計算機看了指令就知道自己該做什麼事情。所以 script 其實就是短小的、用來讓計算機自動化完成一系列工作的程序,這類程序可以用文本編輯器修改,不需要編譯,通常是解釋運行的。

在網站前端編程的語境下,腳本通常是指在瀏覽器里運行的小程序,就像劇本一樣,它可以用來控制網頁上的各類元素該怎麼表演給觀眾看——比如知乎主頁右邊那個回到頁首的小箭頭就是個演員,你可以用腳本告訴它只在屏幕下拉到某個特定長度的時候才出現。

(腳本並不是個很好的翻譯,問題就出在「腳」這個字上,相當地莫名其妙。Script 一詞的詞根是「書寫」。)


腳本的意思是從演藝界來的。


首先你考慮如果沒有腳本,該怎麼表演?沒有腳本,表演者只能即興發揮,或者靠導演的口述來進行。


有了腳本,帶來的最大變化是什麼?
1。可重複。也就是說,有了腳本,可以把我們既定的一個規程不斷重複。
2。腳本需要人來執行。因此腳本的執行效率與具體的執行人有關係。
3。如果在表演過程中,商定了某種大家認可的修改,會考慮對腳本進行修改,用以將我們修改的意圖記錄下來,將來的再現就可以反映這個修改。

對於 IT 行業,腳本這個詞,是個絕妙的翻譯。他非常貼切的表達了這幾個含義。

1。腳本的用意是為了可再現的重複一個設定好的規程。
2。腳本需要有一個解釋器來執行。
3。腳本能夠方便的,快速的,經常的被修改。


所以說,要是打比喻:
你打開資源管理器,用滑鼠把一個文件拖到另外一個地方,這是即興表演。
你寫幾行命令,把他保存下來, 一執行就做了上面的事情,這就是腳本。


即興表演,你重複100次,累死了。
腳本,你重複執行100次,全是計算機搞定了。


感謝邀請。在計算機領域裡,「腳本」是個非常含糊的概念,在不同上下文下可以有非常不一樣的定義。這個問題的上下文是「前端開發」,因此我就僅僅針對前端開發里涉及到的「腳本」來回答這個問題。

它是什麼?

如果沒有特殊說明的話,前端開發里說的腳本特指 JavaScript。雖然 IE 還支持用 VBScript 寫前端腳本,Chrome 即將原生支持 Dart 做前端腳本,Flash 里的 Action Script 某種意義上也可以被看作是「前端開發所使用的腳本」,但如果你想要討論那些「腳本」的話,都需要加以特殊說明。由於提問者沒有給出任何限定,因此我假設提問者提問的僅僅是 JavaScript。

因此,這個問題等價於問「JavaScript 是什麼」,而這個等價問題可以在維基百科上找到非常全面的回答:

http://zh.wikipedia.org/wiki/JavaScript
http://en.wikipedia.org/wiki/JavaScript

簡單地說,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 帶來的便利。

以上。


通俗, 就是說不需要編譯就可以運行的程序.

也就是說, 源代碼和運行的程序是一樣的, 比如說網站上的 Javascript, 你都能看到源代碼.
像運行的 exe 之類的, 需要編譯, 你用編輯器打開它什麼東西都看不出來.

腳本也是程序啊. 需要編程的地方就可以用腳本.

為什麼用腳本?
1. 寫起來簡單
2. 許可權低, 因此安全. 比如瀏覽器裡面的 JavaScript 就沒可能刪掉你的文件.


script的原意是「手寫的,區別於印刷的東西」。那麼,這樣就比較形象了。它是一種用戶至少能修改,或者更甚者是自己寫的小程序。這種小程序的運行需要解釋器,比如瀏覽器也算,而解釋器程序像是印刷的文字,你是不能修改的。


女朋友說餓了,男朋友就知道去幹什麼。——這是腳本
女朋友說餓了,男朋友問餓了怎麼辦要吃點什麼。——這不是腳本。
女朋友說餓了,男朋友開了袋速食麵自己吃。——這是 Bug.


現在的計算機術語中,腳本已經司空見慣,PHP, Python, Javascript, VBscript等等。但是,你是真正了解為什麼Script叫腳本,腳本又是什麼意思??

  腳色的來歷

  要了解腳本,先要了解腳色,也就是角色!「角色」一詞來源於「腳色」,而「腳色」一詞最初與演藝行當可能並無多大關係。

  「腳色」在宋代的官場是一個被廣泛應用的辭彙。比如在范仲淹的尺牘《與韓魏公》中:「其子得殿侍左班……曾申腳色狀,今上呈,如有指示安排處,乞留意。」這裡的「腳色狀」,就是一種履歷表,宋代人要進入仕途,都必須提交腳色狀。那麼宋代的腳色狀都填寫哪些內容呢?據宋代趙升《朝野類要》卷三記載:「初入仕,必具:鄉貫、戶頭、三代名銜、家口、年齒、出身履歷。若注授轉官,則又加舉主。有無過犯,崇觀間,即雲不系元祐黨籍;紹興間,即雲不系蔡京、童貫、朱勔、王黼等親屬;召保官結罪,慶元間人,加即不是偽學。」從中可以看出,腳色狀中包含了個人的主要履歷信息以及政治立場。

  個人履歷及政治立場之所以用「腳色」這個詞,可能與「履歷」一樣都與「腳」有關,一個人所走過的路即是履歷,一個人腳所站的地方就是立場。而「色」指種類、類別,比如我們常說的「諸色人等」。腳色決定了一個人的身份、背景、立場,成為一個人的身份標識。

  「腳」與「角」在現在的普通話里是同音字,但在古代有區別,據《說文解字》:角,古岳切,讀音相當於jue。腳,居勺切。讀音相當於jiao。但這兩種讀音即使在古代也是不太分明的,寫法上也會出現混亂。宋代朱熹《答任行甫書》說:「休致文字,不知要錄白繳申角色之類否?」這條宋人記載中的「角色」其實就是「腳色」,指代履歷。

  戲曲中的腳色

  「腳色」出現在戲曲中是非常自然的事情,演員所扮演的特定人物叫做腳色。如清代李斗的《揚州畫舫錄》記載:「梨園以副末開場,為領班,副末以下,老生、正生……謂之男腳色;老旦、正旦……謂之女腳色。」在戲曲中,「腳色」普遍寫為「角色」是比較晚的事情。雖然在朱熹書信、部分元曲以及清代的部分書籍中可以看到「角色」一詞,如清代黃旛綽《梨園原》中有所謂「王大梁詳論角色」等,但從辭彙的使用上來說不佔主流、不夠普及。直到19世紀末,上海《申報》對戲曲的報道仍採用「腳色」一詞,而1907年8月22日的《申報》出現了「李春來慎重角色」,此後《申報》的報道多採用「角色」一詞。漸漸地,「角色」逐漸替代了「腳色」,成為更通行、更標準的寫法。

  腳色與腳本

  腳本有「腳色之本」的意思,是演員演出前劃分腳色的演出底本。 腳本是劇本的泛稱。一般指排演過程中的使用的底本,腳本也可稱「演出本」。為什麼這樣叫?因為一部劇本問世,有的可能適合舞台演出,有的卻並不適合演出。那些不適合演出的劇本就永遠停留在「文學劇本」的階段,這類戲劇文本就不叫「腳本」,稱為案頭戲(也叫書齋劇)。

  程序腳本

  動態程序一般有兩種實現方式,一是二進位方式,一是腳本方式。 二進位方式是先將我們編寫的程序進行編譯,變成機器可識別的指令代碼(如.exe文件),然後再執行。這種編譯好的程序我們只能執行、使用,卻看不到他的程序內容。腳本簡單地說就是一條條的文字命令,這些文字命令是我們可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進位程序執行效率要稍低一些。

  這樣就不難理解,在計算機中,腳本執行就好像戲劇里的演員在「演繹」已經寫好的劇本,把它渲染出來。程序腳本就是程序讀出這些文字並把它執行處接過來。

  參考:

http://www.ieeye.com/post/070129-script.html

腳色與角色_雲弓的超短群

何謂"腳本"、「藍本」?來歷?


腳本語言是內置於軟體,並且直接作用於軟體視圖層的語言。
舉例:
bash,shell的原意就是外殼。(直接作用於操作系統的外殼)
php,直接生成web頁(以插件形式內置於伺服器軟體中,由於運行於伺服器所以是後端腳本)
javascript,直接改變html文檔內容。(內置於瀏覽器,由於運行於客戶機,所以是前端腳本)


不請自來。

以前上學時隔壁自動化專業的總被我們稱作腳本專業,所以反過來,腳本就是自動化。


腳本就是寫個劇本,提出若干(合理或不合理)要求後,自己不幹(或不會幹),讓演員來實現。

假設S想在某某會上作發言,他把叫P過來說:「你把公司近幾個月的銷售數據整理一下,做個PPT出來。」 S的這一指令就是「腳本」(script)。
P首先要能聽懂S說的話(比如懂S說的爪哇語),還要知道如何如果調取銷售數據,並具備製作出PPT的能力。P所做的工作就是腳本解釋器(parser)。

想實現script的預期目標, 一定要有能理解S的意圖並有能力完成的Parser才行。

如果只是在學習網站前端知識的階段,知道一些腳本語言就行了,不要試圖了解parser具體是怎樣讓計算機執行那些工作的(除非你肯花費5-10年時間來搞清楚這個問題)。


腳本就是不需要編譯的程序。


從文件的角度來看,你可以想像簡化成2個文件,腳本文件和腳本解析程序;script這裡就相當於腳本文件;


從功能的角度來看,腳本就相當於命令集,上面是一些你希望計算機做的事情;腳本解析程序就是根據命令集來執行命令的對象;


可以這樣比喻,你的領導給了一張紙條,這裡紙條就相當於腳本文件,紙條上有讓你完成的若干工作,你肯定是要聽話的去完成它,這裡你就是腳本解析程序了,你按照紙條一件一件的去做;


最後從具體流程上來說:
1 腳本解析程序 打開 腳本文件;
2 讀取一條命令;
3 解析分析命令;
4 執行該條命令;
5 如果有下一條命令,讀取,進入3;
如果沒有結束;


看@濤吳的評論很受啟發,根據script的原意及意譯「腳本」來理解,可能能夠通俗的解釋其意思。電影劇本你看過吧,比較粗略,所以看這劇本,怎麼發揮則由演員和導演等等工作人員來確定,腳本語言就是這樣,通俗,真正的執行是靠後台的解釋器來「解釋」(請聯想「編譯」來對比)。腳本語言就是這樣一種語言。比如python、shell、javascript等(@濤吳 提到的批處理也算)都是這樣的語言,他們的書寫簡單直觀,運行略曲折,所以效率完成同樣的事情比C慢了2-3個數量級。但是,腳本語言還是犀利的,你知道你的cpu有多快?用C測試下一秒完成的自加運算吧,閑著也是閑著,javascript正好運行在這種被嚴重資源浪費的CPU上,緩解了伺服器壓力而且豐富了客戶端表現,提高了團隊的生產效率(無論是團隊任務分配還是單個前端)。


做了一個相關總結
PHP-認識腳本語言


腳本本質上就是一種程序,不過通常是用一種號稱是腳本語言的很爛的編程語言寫出來的。


可以用記事本打開


為了快速,省去了一些繁瑣的步驟(測試),所以通常腳本語言會感覺寫起來很快,很爛(大霧)


script

n.腳本,手跡; 書寫體鉛字; 劇本、廣播稿或者電影劇本;

vt.為電影(或戲劇等)寫劇本; 編造;

腳本、劇本、台本

把前端作為舞台的話,

腳本,兩個字:腳和本。

腳,就是腿,就是根據編劇/編程設計寫好的內容,執行表演/表示這些內容的演員角色/腳色

本,就是事先設計好的劇情、對白、人物表情動作等。

哪裡要跳幾下,哪裡要唱什麼。

所以編程對應於編劇(大家都是苦逼碼字鍵盤俠),腳本裡面就是各種指令命令,告訴這個腳本,在什麼情況下什麼時候要做什麼觸發什麼執行輸出什麼結果到哪裡等。

Script

有很多種就像戲裡有生旦凈末丑,

生角 有老生小生書生……

我們按英文的倒敘叫

角 生

JavaScript

除此之外還有其他旦凈末丑不同語言但是都在京劇這個戲台上。

Java

爪哇,是一種腳本語言,相當於這種語言的「姓」

就比如說:靠譜雲,阿里雲,騰訊雲,牛逼雲,阿寶雲,普通雲,渣雲,垃圾雲…… 都是雲,八仙過海特色主打不一樣。

JavaScript

簡稱

JS

一些高級的複雜的頁面交互一些動作,功能指令都是通過腳本語言來實現的。


我覺得回答這個問題要解釋一方面要解釋它的引申意思,還要說一下它在計算機中產生的原因,也會就是它的發展變化史。相對的靜態網頁的弊端是什麼,如何去解決這些弊端,需求是什麼?在上面的回答中,提到了我們如果想要即時讓計算機去執行一些命令,並且這些命令具有隨機容易編寫、查看,可以嵌入到網頁或其它系統程序中的功能,實現我們想要的效果。避免了一般程序繁雜的編寫過程,難易修改的的問題。


我覺得腳本就是一個劇本。程序就是一個電影。就像電影需要按照劇本來進行。同樣,程序需要按照腳步進行。


腳本,就是程序語言。與傳統程序的區別就是不一定需要(深層的)編譯與完整的結構。


據說是關於腳的本子(足控?)#滑稽


濤吳解釋得很詳細。不過樓主在補充說明裡提到是在學習前端知識的時候想知道什麼是腳本,那麼樓主可以指的是JavaScript。建議學習一下HTML和DOM結構,然後再看看JavaScript是怎麼控制這些DOM元素的。


推薦閱讀:

網站開發流程,用什麼語言,先從哪編程?
WordPress 如何實現用戶訂閱郵件列表的功能?
為什麼書大多是左右翻,而不是上下翻? 為什麼網頁大多是上下翻卻又不是左右翻?
有哪些做得比較好的國內政府部門網站?

TAG:前端開發 | JavaScript | 網站開發 | 腳本 | 如何通俗易懂地解釋X |