整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          H5播放器源碼解讀 (video.js)

          在前面

          現(xiàn)在視頻業(yè)務(wù)越來(lái)越流行了,播放器也比較多,作為前端工程師如何打造一個(gè)屬于自己的播放器呢?最快最有效的方式是基于開(kāi)源播放器深度定制,至于選擇哪個(gè)開(kāi)源播放器仁者見(jiàn)仁智者見(jiàn)智,可以參考開(kāi)源播放器列表(https://www.awesomes.cn/subject/videos)選擇適合自己業(yè)務(wù)的播放器。

          我們的播放器選擇了排名第一的video.js播放器,截至目前該播放器在Github擁有13,991 star, 4,059 fork,流行程度可見(jiàn)一斑。為了讓大家更多的了解它,我們細(xì)數(shù)下優(yōu)點(diǎn):

          1. 免費(fèi)開(kāi)源

            這個(gè)意味著什么就不多說(shuō)了,附上項(xiàng)目地址(https://github.com/videojs/video.js)

          2. 兼容主流瀏覽器

            在國(guó)內(nèi)的前端開(kāi)發(fā)環(huán)境往往需要支持到低級(jí)版本的IE瀏覽器,然后隨著Flash的退化,很多公司沒(méi)有配備Flash開(kāi)發(fā)工程師,video.js提供了流暢的Flash播放器,而且在UI層面做到了和video的效果,實(shí)屬難得,比如全屏。

          3. UI自定義

            不管開(kāi)源項(xiàng)目在UI方面做的如何漂亮,對(duì)于各具特色的業(yè)務(wù)來(lái)說(shuō)都要自定義UI,一個(gè)方便簡(jiǎn)單的自定義方式顯得格外重要,更何況它還自帶了編譯工具,只能用一個(gè)”贊“字形容。具體怎么實(shí)現(xiàn)的,這里先簡(jiǎn)單描述下是使用JavaScript(es6)構(gòu)建對(duì)象,通過(guò)Less編寫(xiě)樣式規(guī)則,最后借助Grunt編譯。

          4. 靈活插件機(jī)制

            video.js提供一個(gè)插件定義的接口,使插件開(kāi)發(fā)簡(jiǎn)單易行。而且社區(qū)論壇也提供了一些好用的插件供開(kāi)發(fā)者使用。附插件列表

          5. 比較完善的文檔

            完善的文檔對(duì)于一個(gè)穩(wěn)定的開(kāi)源項(xiàng)目是多么的重要,video.js提供了教程、API文檔、插件、示例、論壇等。官方地址

          6. 項(xiàng)目熱度

            開(kāi)源作者對(duì)項(xiàng)目的維護(hù)比較積極,提出的問(wèn)題也能很快給予響應(yīng)。開(kāi)發(fā)者在使用過(guò)程中出現(xiàn)問(wèn)題算是有一定保障。

          書(shū)歸正傳,要想更自由的駕馭video.js,必然要了解內(nèi)部原理。本文的宗旨就是通過(guò)核心代碼演示講解源碼運(yùn)行機(jī)制,如果有興趣,不要離開(kāi),我們馬上開(kāi)始了……

          組織結(jié)構(gòu)

          由于源碼量較大,很多同學(xué)不知道從何入手,我們先來(lái)說(shuō)下它的組織結(jié)構(gòu)。

          其中control-bar,menu,popup,slider,tech,tracks,utils是目錄,其他是文件。video.js是個(gè)非常優(yōu)秀的面向?qū)ο蟮牡湫停械腢I都是通過(guò)JavaScript對(duì)象組織實(shí)現(xiàn)的。

          video.js是個(gè)入口文件,看源碼可以從這個(gè)文件開(kāi)始。

          setup.js處理播放器的配置安裝即data-setup屬性。

          poster-image.js處理播放器貼片。

          plugins.js實(shí)現(xiàn)了插件機(jī)制。

          player.js構(gòu)造了播放器類也是video.js的核心。

          modal-dialog.js處理彈層相關(guān)。

          media-error.js定義了各種錯(cuò)誤描述,如果想理解video.js對(duì)各語(yǔ)言的支持,這個(gè)文件是必看的,它是橋梁。

          loading-spinner.js實(shí)現(xiàn)了播放器加載的標(biāo)志,如果不喜歡默認(rèn)加載圖標(biāo)在這里修改吧。

          fullscreen-api.js實(shí)現(xiàn)各個(gè)瀏覽器的全屏方案。

          extend.js是對(duì)node 繼承 and babel's 繼承的整合。

          event-target.js 是event類和原生事件的兼容處理。

          error-display.js 主要處理展示錯(cuò)誤的樣式設(shè)置。

          component.js 是video.js框架中最重要的類,是所有類的基類,也是實(shí)現(xiàn)組件化的基石。

          close-button.js 是對(duì)關(guān)閉按鈕的封裝,功能比較單一。

          clickable-component.js 如果想實(shí)現(xiàn)一個(gè)支持點(diǎn)擊事件和鍵盤(pán)事件具備交互功能的組件可以繼承該類,它幫你做了細(xì)致的處理。

          button.js 如果想實(shí)現(xiàn)一個(gè)按鈕了解下這個(gè)類是必要的。

          big-play-button.js 這個(gè)按鈕是視頻還未播放時(shí)顯示的按鈕,官方將此按鈕放置在播放器左上角。

          utils目錄顧名思義是一些常用的功能性類和函數(shù)。

          tracks目錄處理的是音軌、字幕之類的功能。

          tech目錄也是非常核心的類,包括對(duì)video封裝、flash的支持。

          slider目錄主要是UI層面可拖動(dòng)組件的實(shí)現(xiàn),如進(jìn)度條,音量條都是繼承的此類。

          popup目錄包含了對(duì)彈層相關(guān)的類。

          menu目錄包含了對(duì)菜單UI的實(shí)現(xiàn)。

          control-bar目錄是非常核心的UI類的集合了,播放器下方的控制器都在此目錄中。

          通過(guò)對(duì)組織結(jié)構(gòu)的描述,大家可以,想了解video.js的哪一部分內(nèi)容可以快速入手。如果還想更深入的了解如何正確使用這些類,請(qǐng)繼續(xù)閱讀繼承關(guān)系一節(jié)。

          繼承關(guān)系

          video.js是JavaScript面向?qū)ο髮?shí)現(xiàn)很經(jīng)典的案例,你一定會(huì)好奇在頁(yè)面上一個(gè)DOM節(jié)點(diǎn)加上data-setup屬性簡(jiǎn)單配置就能生成一個(gè)復(fù)雜的播放器,然而在代碼中看不到對(duì)應(yīng)的HTML”模板“。其實(shí)這都要?dú)w功于”繼承“關(guān)系以及作者巧妙的構(gòu)思。

          在組織結(jié)構(gòu)一節(jié)有提到,所有類的基類都是Component類,在基類中有個(gè)createEl方法這個(gè)就是JavaScript對(duì)象和DOM進(jìn)行關(guān)聯(lián)的方法。在具體的類中也可以重寫(xiě)該方法自定義DOM內(nèi)容,然后父類和子類的DOM關(guān)系也因JavaScript對(duì)象的繼承關(guān)系被組織起來(lái)。

          為了方便大家查閱video.js所有的繼承關(guān)系,整理了兩個(gè)圖表,一個(gè)是完整版,一個(gè)是核心版。

          • 完整版

          • 核心板

          運(yùn)行機(jī)制

          video.js源碼代碼量比較大,我們要了解它的運(yùn)行機(jī)制,首先確定它的主線是video.js文件的videojs方法,videojs方法調(diào)用player.js的Player類,Player繼承component.js文件的Component類,最后播放器成功運(yùn)行。

          我們來(lái)看下videojs方法的代碼、Player的構(gòu)造函數(shù)、Component的構(gòu)造函數(shù),通過(guò)對(duì)代碼的講解基本整個(gè)運(yùn)行機(jī)制就有了基本的了解,注意里面用到的所有方法和其他類對(duì)象參照組織結(jié)構(gòu)一節(jié)細(xì)細(xì)閱讀就可以掌握更多的運(yùn)行細(xì)節(jié)。

          • videojs方法

          • Player的構(gòu)造函數(shù)

          • Component的構(gòu)造函數(shù)

          這里通過(guò)主線把基本的流程演示一下,輪廓出來(lái)了,更多細(xì)節(jié)還請(qǐng)繼續(xù)閱讀。

          插件機(jī)制

          一個(gè)完善和強(qiáng)大的框架都會(huì)繼承插件運(yùn)行功能,給更多的開(kāi)發(fā)者參與開(kāi)發(fā)的機(jī)會(huì)進(jìn)而實(shí)現(xiàn)框架功能的補(bǔ)充和延伸。我們來(lái)看下video.js的插件是如何運(yùn)作的。

          • 插件的定義

          如果之前用過(guò)video.js插件的同學(xué)或者看過(guò)插件源碼,一定有看到有這句話videojs.plugin= pluginName,我們來(lái)看下源碼:

          不難看出,原理就是將插件(函數(shù))掛載到Player對(duì)象的原型上,接下來(lái)看下是怎么執(zhí)行的。

          • 插件的運(yùn)行

          在Player的構(gòu)造函數(shù)里判斷是否有插件這個(gè)配置,如果有則遍歷執(zhí)行。

          UI"繼承"的原理

          在繼承關(guān)系一節(jié)中有提到video.js的所有DOM生成都不是采用的傳統(tǒng)模板的方式,都是通過(guò)JavaScript對(duì)象的繼承關(guān)系來(lái)實(shí)現(xiàn)的。

          在Component基類中有個(gè)createEl方法,在這里可以使用DOM類生成DOM實(shí)例。每個(gè)UI類都會(huì)有一個(gè)el屬性,會(huì)在實(shí)例化的時(shí)候自動(dòng)生成,源代碼在Component的構(gòu)造函數(shù)中:

          每個(gè)UI類有一個(gè)children屬性,用于添加子類,子類有可能扔具有children屬性,以此類推,播放器的DOM結(jié)構(gòu)就是通過(guò)這樣的JavaScript對(duì)象結(jié)構(gòu)實(shí)現(xiàn)的。

          在Player的構(gòu)造函數(shù)里有一句代碼this.initChildren();啟動(dòng)了UI的實(shí)例化。這個(gè)方法是在Component基類中定義的,我們來(lái)看下:

          通過(guò)這段代碼不難看出大概的意思是通過(guò)initChildren獲取children屬性,然后遍歷通過(guò)addChild將子類實(shí)例化,實(shí)例化的過(guò)程會(huì)自動(dòng)重復(fù)上述過(guò)程從而達(dá)到了”繼承“的效果。不得不為作者的構(gòu)思點(diǎn)贊。如果你要問(wèn)并沒(méi)看到DOM是怎么關(guān)聯(lián)起來(lái)的,請(qǐng)繼續(xù)看addChild方法的源碼:

          這段代碼的大意就是提取子類的名稱,然后獲取類并實(shí)例化,最后通過(guò)最關(guān)鍵的一句話this.contentEl().insertBefore(component.el(), refNode);完成了父類和子類的DOM關(guān)聯(lián)。相信inserBefore大家并不陌生吧,原生的DOM操作方法。

          總結(jié)

          至此,video.js的精華部分都描述完了,不知道大家是否有收獲。這里簡(jiǎn)單的總結(jié)一些閱讀video.js框架源碼的心得:

          1. 找準(zhǔn)播放器實(shí)現(xiàn)的主線流程,方便我們有條理的閱讀代碼

          2. 了解框架代碼的組織結(jié)構(gòu),有的放矢的研究相關(guān)功能的代碼

          3. 理解類與類的繼承關(guān)系,方便自己構(gòu)造插件或者修改源碼的時(shí)候知道從哪個(gè)類繼承

          4. 理解播放器的運(yùn)行原理,有利于基于Component構(gòu)造一個(gè)新類的實(shí)現(xiàn)

          5. 理解插件的運(yùn)行機(jī)制,學(xué)會(huì)自己構(gòu)造插件還是有必要的

          6. 理解UI的實(shí)現(xiàn)原理,就知道自己如何為播放器添加視覺(jué)層面的東西了

          7. 看看我的源碼解讀吧,能幫一點(diǎn)是一點(diǎn),哈哈

          1272208556@qq.com

          1、HTML + CSS + UI

          2、Javascript

          3、HTML5CORE + AJAX + Jquery

          4、Bootstrap,Angular JS + 其他框架

          1、HTML + CSS3BASIC + PRO + UI + PRO + CSS3CORE + PRO

          ======================================================

          1、Internet

          1、什么是Internet

          是全球性計(jì)算機(jī)互聯(lián)網(wǎng)絡(luò),是由若干終端(PC,移動(dòng)端)以及特殊的傳輸介質(zhì)而組成的一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)

          PC:Personal Computer

          2、提供的服務(wù)

          信息共享

          Telnet : 遠(yuǎn)程連接

          Email : 電子郵件

          WWW : 萬(wàn)維網(wǎng) www.baidu.com

          BBS : 電子公告板 ,論壇

          FTP : 上傳和下載服務(wù)

          3、實(shí)現(xiàn)技術(shù)

          1、分組交換原理:數(shù)據(jù)通過(guò)數(shù)據(jù)包進(jìn)行傳遞,到達(dá)目的地后,對(duì)數(shù)據(jù)包進(jìn)行重組

          2、TCP/IP 協(xié)議簇

          2、WEB

          1、什么是WEB

          就是 WWW(World Wide Web)

          w3c : www consortium 萬(wàn)維網(wǎng)聯(lián)盟

          2、能干什么

          能夠?qū)⒏黝惖男畔⒑头?wù)進(jìn)行連接,提供圖形用戶界面

          信息:文字、圖片、音頻、視頻

          服務(wù):Telnet, FTP , Mail , HTTP ...

          3、萬(wàn)維網(wǎng)就是無(wú)數(shù)的文檔集合(網(wǎng)頁(yè)文檔),文檔會(huì)駐留在世界(互聯(lián)網(wǎng))的任何一個(gè)角落

          3、WEB的工作原理

          WEB是基于Internet的多媒體信息服務(wù)系統(tǒng)

          1、基于 瀏覽器 / 服務(wù)器 模式

          B / S : Browser / Server

          在服務(wù)器上,主要以網(wǎng)頁(yè)的形式發(fā)布多媒體信息

          2、由WEB服務(wù)器、瀏覽器、通信協(xié)議組成

          3、WEB 相關(guān)技術(shù)

          1、服務(wù)器端技術(shù)(后臺(tái))

          PHP,JSP,ASP 。。。 。。。

          2、客戶端技術(shù)(前端技術(shù))

          HTML,

          CSS,

          Javascript

          =========================================================

          1、HTML 入門(mén)

          1、什么是HTML

          HTML(Hyper Text Markup Language),超級(jí)文本標(biāo)記語(yǔ)言

          超文本:

          a

          標(biāo)記 : 超文本都是由標(biāo)記組成的

          <a>

          語(yǔ)言 : 包含自己獨(dú)特的語(yǔ)法

          HTML最終由瀏覽器負(fù)責(zé)解釋

          HTML總可以嵌入一些腳本語(yǔ)言編寫(xiě)的程序段:Javascript,VBScript

          2、HTML版本

          超級(jí)文本標(biāo)記語(yǔ)言(第一版)

          HTML2.0

          HTML3.2

          HTML4.0

          HTML4.01

          XHTML1.0

          HTML5

          3、標(biāo)簽(標(biāo)記)

          1、標(biāo)簽語(yǔ)法

          1、必須使用尖括號(hào)擴(kuò)起來(lái)

          <a>,<div> ...

          <A>,<a>

          2、有封閉類型的標(biāo)簽,也有非封閉類型的標(biāo)簽

          1、封閉類型

          也稱作雙標(biāo)記,則必須成對(duì)出現(xiàn)

          <標(biāo)記>文本內(nèi)容</標(biāo)記>

          不同的標(biāo)記,決定了"文本內(nèi)容"的不同表現(xiàn)形式

          eg:<a></a>,<p></p>,<div></div>

          2、非封閉類型

          也稱作單標(biāo)記、空標(biāo)記

          <標(biāo)記>

          或者

          <標(biāo)記/>

          eg:

          <hr>,<br>,<img>

          3、元素

          標(biāo)記就是元素,元素也稱為標(biāo)記

          4、元素嵌套(標(biāo)簽嵌套)

          標(biāo)簽之間相互嵌套,形成復(fù)雜的語(yǔ)法結(jié)構(gòu)

          <body>

          <p>

          <a></a>

          </p>

          </body>

          5、屬性

          屬性是出現(xiàn)在開(kāi)始標(biāo)記中的內(nèi)容,作用是修飾元素

          <p 屬性名="屬性值"></p>

          <p 屬性名='屬性值'></p>

          <p 屬性名=屬性值></p>

          標(biāo)準(zhǔn)屬性:每個(gè)元素都會(huì)具備的通用屬性

          id : 定義每個(gè)標(biāo)簽的唯一標(biāo)識(shí)

          title:提示文本

          class:樣式相關(guān),類樣式

          style:樣式相關(guān),行內(nèi)樣式

          操作1:定義一對(duì)p標(biāo)簽,id屬性設(shè)置為program

          <p id="program"></p>

          多屬性:

          <p 屬性1="值" 屬性2="值"></p>

          注意:多屬性之間,排名不分先后

          2、創(chuàng)建HTML文檔

          開(kāi)發(fā)工具:任何一個(gè)文字編輯軟件都可以開(kāi)發(fā)HTML

          EditPlus : 超級(jí)記事本

          運(yùn)行環(huán)境:任何一個(gè)瀏覽器都能運(yùn)行HTML

          Google Chrome,Mozilla Firefox,Microsoft IE,Safari,Opera

          超文本文件(HTML文檔):

          是一個(gè)以.html或.htm結(jié)尾的文檔

          3、文檔結(jié)構(gòu)

          1、文檔類型聲明

          聲明使用的html版本和風(fēng)格

          <!doctype html>

          2、html頁(yè)面

          1、文檔根元素

          每個(gè)文檔有且僅有一對(duì)根元素 , html

          2、在根元素的內(nèi)部,包含兩對(duì)子元素

          1、head : 頁(yè)面的頭部?jī)?nèi)容

          定義頁(yè)面全局信息

          包含:

          <title></title> : 網(wǎng)頁(yè)標(biāo)題

          <meta />:聲明元數(shù)據(jù)(編碼,關(guān)鍵字,描述)

          <style></style>:聲明內(nèi)部樣式表

          <link />:引入外部樣式表

          <script></script>:定義或引入腳本文件

          2、body : 頁(yè)面的主體內(nèi)容

          任何一個(gè)標(biāo)簽,都可能會(huì)出現(xiàn)在body中

          3、head元素

          1、聲明網(wǎng)頁(yè)標(biāo)題

          <title></title>

          2、定義網(wǎng)頁(yè)文本編碼格式

          默認(rèn):ISO-8859-1,只支持英文以及英文狀態(tài)下的標(biāo)點(diǎn)符號(hào)

          utf-8:支持中英文,標(biāo)點(diǎn)符號(hào)

          <meta charset="utf-8" />

          3、... ...

          4、body元素

          屬性:

          text : 文本的顏色

          bgcolor : 背景顏色

          練習(xí)1:

          1、為body添加兩個(gè)屬性,text,bgcolor

          2、文本顏色 : 紅色(red)

          背景顏色 : 銀色(silver)

          3、在body中隨意寫(xiě)上一段文本,觀察頁(yè)面顯示效果

          5、文本標(biāo)記

          1、特殊的文本

          轉(zhuǎn)義字符:

          空格:&nbsp;

          < : &lt; less than

          > : &gt; greater than

          版權(quán)標(biāo)識(shí):&copy;

          2、文本標(biāo)記

          1、文本樣式

          <b>...</b> : 加粗文本

          <i>...</i> : 斜體文本

          <u>...</u> : 下劃線

          <s>...</s> : 刪除線

          <sup>...</sup> : 上標(biāo)

          <sub>...</sub> : 下標(biāo)

          2、標(biāo)題元素

          1-6級(jí)6個(gè)標(biāo)題

          <hn></hn> n:1-6

          一級(jí)最大

          六級(jí)最小

          3、段落元素

          提供了結(jié)構(gòu)化文本的表現(xiàn)方式

          語(yǔ)法:<p></p>

          注意:

          1、每對(duì)p標(biāo)簽單獨(dú)成一個(gè)段落

          2、段落與其他元素有垂直空白,段落間距

          常用屬性:

          align : 水平對(duì)齊方式

          取值:left center right

          4、換行元素

          在代碼的任何位置處,實(shí)現(xiàn)回車的效果

          <br />

          5、水平線

          又叫分割線

          <hr />

          屬性:

          1、size : 水平線的粗細(xì),通常以像素(px)為單位

          2、width: 寬度

          3、align: 水平線的水平對(duì)齊方式

          4、color: 顏色

          6、分區(qū)元素

          目的:為元素進(jìn)行分組,多數(shù)用在布局中

          塊分區(qū)元素:<div></div> 層

          行內(nèi)分區(qū)元素:<span></span>

          注意:

          div :主要用在布局上

          span:修改其內(nèi)部?jī)?nèi)容的樣式

          7、預(yù)格式化

          保留源文檔中的空格和回車

          <pre>

          文本內(nèi)容

          </pre>

          3、注釋

          可以寫(xiě)在html源碼中,但不被瀏覽器解釋的文本

          語(yǔ)法:

          <!-- 注釋內(nèi)容 -->

          4、行內(nèi)元素與塊級(jí)元素

          塊級(jí)元素:默認(rèn)情況下,塊級(jí)元素獨(dú)占一行,元素的前后都會(huì)自動(dòng)換行 div,hn,hr,p

          塊級(jí)元素作用:布局

          行內(nèi)元素:默認(rèn)情況,多個(gè)元素位于同一行,不會(huì)換行

          span,文本標(biāo)記... ...

          行內(nèi)元素作用:修改內(nèi)部?jī)?nèi)容的樣式

          文:https://mp.weixin.qq.com/s/yUoVBTmdMt8knxlRn2mGVA

          1 科學(xué)的上網(wǎng)

          學(xué)習(xí)前端過(guò)程中,最基本和經(jīng)常的操作就是:搜索和檢查。

          1.1 搜索

          1.1.1 工具:Chrome 瀏覽器

          • 官網(wǎng)、或百度搜索安裝。

          1.1.2 讓 Chrome 瀏覽器可以登錄國(guó)外網(wǎng)站(特別重要的一步)

          1.2 檢查

          后邊無(wú)論學(xué) HTML、CSS、JS 還是 Ajax 等,這個(gè)檢查的動(dòng)作都是最經(jīng)常用到的動(dòng)作。

          1. 在瀏覽器中的任何網(wǎng)頁(yè)上,鼠標(biāo)右鍵,然后彈出的選項(xiàng)中選擇“檢查”;

          2. 會(huì)出現(xiàn)我們本頁(yè)面的相關(guān)代碼——DOM 樹(shù)(Document Object Model 文檔對(duì)象模型);

          • 我們通過(guò) JS 操作頁(yè)面的元素,進(jìn)行添加、移動(dòng)、改變或移除的方法和屬性,都是 DOM 提供的。


          3. 通過(guò)點(diǎn)擊代碼框左上角圖標(biāo),可以實(shí)時(shí)查看網(wǎng)頁(yè)內(nèi)任意模塊對(duì)應(yīng)的代碼(鼠標(biāo)放在任意地方,代碼框里就會(huì)顯示與之對(duì)應(yīng)的代碼);

          4. 按建盤(pán)上 Esc 鍵,或直接點(diǎn)擊代碼框的 Console,就可以打開(kāi) Console ;

          • 作用:用于調(diào)試 JS 的;
          • 比如:有一個(gè)樣式?jīng)]有出來(lái),那么代碼框與之對(duì)應(yīng)的代碼會(huì)報(bào)錯(cuò),可以讓我們知道錯(cuò)在哪里。

          2 Git 的安裝

          Git 中文使用文檔——作為參考手冊(cè),需要時(shí)翻翻(https://git-scm.com/book/zh/v2)

          2.1 安裝方式

          谷歌搜索安裝(點(diǎn)擊 DOWNLOAD 后,直接下一步)——注:macOS 系統(tǒng)在安裝了 Xcode 后會(huì)自帶 Git 。

          2.2 注意事項(xiàng)

          針對(duì) windows 用戶,Git 最好直接安裝在 C 盤(pán)。因?yàn)?windows下這些軟件總會(huì)出現(xiàn)些莫名的小問(wèn)題,直接安裝在 C 盤(pán)會(huì)支持的相對(duì)好一些。

          2.3 安裝完成

          安裝完成后,里邊會(huì)相應(yīng)附帶有 Git Bash 。可以打開(kāi) Git Bash 客戶端(蘋(píng)果電腦用戶打開(kāi)自有終端),初次使用需要輸入相關(guān)命令行(先照做,后邊文章會(huì)具體談到):

          git config --global user.name xxx →方便產(chǎn)品經(jīng)理找你(xxx 是輸入我們自己的用戶名)
          git config --global user.email yyy →方便產(chǎn)品經(jīng)理找你(yyy 是輸入你的郵箱)
          git config --global push.default simple
          git config --global core.quotepath false →防止文件名變成數(shù)字
          git config --global core.editor "vim" →使用 vim 編輯提交信息
          

          2.4 外觀設(shè)置

          (針對(duì) windows 用戶)設(shè)置一下 Git Bash 客戶端的外觀。

          2.4.1 將操作界面設(shè)置成透明,方便操作、觀察變化

          2.4.2 將界面滾動(dòng)條設(shè)置在右側(cè)

          2.4.3 設(shè)置編碼方式

          3 Node.js安裝

          3.1 安裝方式

          谷歌搜索安裝(點(diǎn)擊 DOWNLOAD 后,直接下一步);

          3.2 注意事項(xiàng)

          針對(duì) windows 用戶,Node.js 最好直接安裝在 C 盤(pán)。因?yàn)?windows 下這些軟件總會(huì)出現(xiàn)些莫名的小問(wèn)題,直接安裝在 C 盤(pán)會(huì)支持的相對(duì)好一些。

          3.3 安裝完成

          裝了 Node.js 之后我們就可以在 Git Bash 里面使用 node 和 npm 這兩個(gè)命令了(下載安裝 Node.js 后,其附帶了 npm),打開(kāi) Git Bash 試試看:

          3.3.1 查看 node 和 npm 在電腦的哪個(gè)位置

          which node
          which npm
          


          3.3.2 查看 node 和 npm 的版本號(hào)

          node -v
          npm -v
          或
          node --version
          npm --version
          

          3.3.3 試著用 npm 做一個(gè)命令行的翻譯工具(這個(gè)小工具的名字叫做 fanyi)

          npm i -g fanyi
          

          3.3.4 加載完成后,輸入

          fanyi hello
          

          相關(guān)中文解釋就會(huì)出來(lái),還會(huì)給你發(fā)音。

          ??注意:

          • 如果遇到以下“權(quán)限問(wèn)題”:


          • 請(qǐng)如下操作:(參考:處理 npm 權(quán)限問(wèn)題——https://www.kancloud.cn/shellway/npm-doc/199985)


          3.3.5 試著用 node 做個(gè)算數(shù)

          node
          

          回車后便進(jìn)入了 node 運(yùn)行環(huán)境,這時(shí)候我們就可以用 node 寫(xiě) JS 了:

          1+2
          


          4 編輯器的安裝

          4.1 安裝方式

          谷歌搜索安裝(點(diǎn)擊 DOWNLOAD 后,直接下一步)。

          4.2 編輯器的選擇

          推薦 Sublime Text 和 VC 。

          4.3 Emmet 語(yǔ)法

          針對(duì)代碼編輯器,會(huì)引入一個(gè)名詞: Emmet 語(yǔ)法 。目前所有的前端編輯器都支持 Emmet 。提高代碼錄入效率。


          主站蜘蛛池模板: 九九久久99综合一区二区| 日韩精品一区二区三区视频| 精品人妻一区二区三区浪潮在线| 亚洲国产成人久久一区二区三区| 精品视频在线观看你懂的一区| 亚洲日韩国产欧美一区二区三区| 亚洲综合无码精品一区二区三区| 国产萌白酱在线一区二区| 人妻体体内射精一区二区| 中文字幕在线观看一区| 一区二区三区波多野结衣| 成人免费视频一区| 亚洲日韩国产欧美一区二区三区 | 亚洲AV成人一区二区三区观看 | 中文字幕精品一区| 久久久久国产一区二区| 国产美女av在线一区| 国产精品视频一区二区三区不卡| 精品人妻一区二区三区四区在线| 亚洲日韩AV无码一区二区三区人| 亚洲日本乱码一区二区在线二产线| 亚洲高清日韩精品第一区 | 日韩精品人妻av一区二区三区| 无码中文字幕乱码一区| 无码av中文一区二区三区桃花岛| 亚洲一区在线免费观看| 亚洲国产精品一区二区三区在线观看| 色妞色视频一区二区三区四区| 日本免费电影一区二区| 中文字幕精品一区影音先锋| 在线播放偷拍一区精品| 欧美日韩精品一区二区在线视频 | 久久精品无码一区二区日韩AV| 一区二区三区高清视频在线观看| 久久精品人妻一区二区三区 | 国模少妇一区二区三区| 精品人妻中文av一区二区三区| 国产福利一区二区三区视频在线| 成人无号精品一区二区三区| 亚洲av午夜精品一区二区三区| 国产一区二区三区久久|