整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          初始R語言

          初始R語言

          、R 語言是什么?

          R 語言是一個專門為統計而開發出來的一個計算機編程語言,它是一種解釋性型的面向數學理論研究工作者的語言。類似于MATLAB,他在語言層面提供了更加豐富的數據結構,且能夠十分方便地輸出文字和圖形信息,所以廣泛應用于數據分析,尤其是統計學領域。

          我們使用R 語言一般都會搭配 Rstudio 使用(它是一款 R 語言的操作界面,具有代碼調試、可視化等功能)

          Rstudio操作界面介紹

          2、R 語言能做什么?

          現在的 R 語言可以做 統計分析、數據可視化、機器學習(包括深度學習)。

          —— R 語言的系統學習可以參考[R 語言教程](https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/intro.html#intro-hist-char)

          • 統計分析:R 的統計分析能力尤為突出,它內嵌了許多實用的統計分析函數(比如,線性回歸等)。分析的結果也可以直接顯示在界面上。
          • 數據可視化:內置了多個作圖函數,同時還有大量的作圖函數包(package),比如,ggplot2NatureScienceCell上有大量的圖表都是使用 R 語言繪制的)。這些工具的存在使得 R 可以做出各種美觀漂亮的圖表(比如,熱圖、動態統計圖等),而且可以保存為 jpg、png、bmp、ps、pdf、emf 等多種格式文件。

          R語言出的圖

          ——(關于 R 語言學術表格的繪制方法可以參考[《R 語言數據可視化之美》](https://read.douban.com/reader/ebook/130453795/))

          同時R 語言還能實現地理可視化(GIS),通過“arcgisbinding”包可以實現在 R 語言中導入、轉化和導出 ArcGis 數據集。還有專門為 R 和 ArcGis 開發的軟件[R-ArcGis](https://r.esri.com/)

          • 機器學習:得益于 R 的開源社區(CRAN),許多的機器學習“package”被開發出來供人們免費使用(比如 nnet、randomForst等),可以實現神經網絡,隨機森林等**各種機器學習**模型等建模。通過與 keras(深度學習框架)的結合,使得 R 還可以實現深度學習建模,讓 R 的應用范圍又更進一步拓寬。

          ```

          如果你想做 Bayesian,只要在 R 里面調用 OpenBUGS,WinBUGS,JAGS 等這些已經成熟的 package 來進行貝葉斯分析。

          ```

          怎么樣R 語言是不是非常有用,那我們趕快學起來吧!

          下篇文章來教大家怎么利用R語言進行簡單 BP神經網絡 建模

          R 語言幾乎不需要編程,大部分的操作只需要調用 package 來執行就可以了.我們只需要了解R的基礎語法

          家好,這是從知乎《一個大學生的日常筆記》中遷移過來的R語言教程的第一篇。

          這一份筆記follow了兩本非常優秀的R語言教材,分別是Robert I.Kabacoff的《R語言實戰》和Peter Dalgaard的《R語言統計入門》,兩本教材的思路有所不同,我會根據我自己的思路盡量降低學習門檻,綜合來寫教程。(畢竟提高了門檻,我就不知道自己在寫什么了……那就真的沒卵用了……)

          閱讀教程的時候我有自己的思路,看過我的LaTeX入門筆記的同學們會明白,如果我想到了一些可能會讓入門新手迷糊的地方,我會以注意:這樣的形式去標記出來,而且有的時候,可能這些小插曲更加重要,請不要忽略它們。

          例子大部分都是摘抄的,但是我會做一些解釋和細節上的調整,同時考慮到代碼規范的問題,我很多例子不會提供符號可選的余地,比如"和',用于標記字符都可以,但是代碼規范推薦使用"

          目前我已經是準大二學生,統計的先修課只有一門學校上的《概率論與數理統計》,事實上,這門課學完之后,R的大部分內容就已經可以上手操作了。因此我們不會在這門課程已有的理論部分下功夫去解釋。但是,礙于我自己本科生的視野,我們不會把太復雜,或者根本不可能涉及到的的內容搬到這里,因此這對于真正的statistician,或者是統計學專業的大牛來說,可能最多只是一份入門筆記而已。

          不過也還是有些亮點的,我可能會在教程里夾雜點別的語言的新奇玩意做些互相的對比2333

          引言到此為止,下面我們開始正題。

          目錄

          • R語言環境初探
          • 一些基本的素養和操作
            • 賦值
            • 向量
            • 索引
            • 矩陣
            • 數組
          • 小結

          R語言環境初探

          細心的同學可能已經看到了封面的那個圖,那個就是我們推薦下載的R語言編輯器——Rstudio,但是這僅僅是個編輯器,必須下載安裝真正的R語言編譯器才能夠運行。至于如何下載——百度搜索R和Rstudio關鍵字就好。那兩個玩意的圖標大概長這樣



          我們主要使用的編輯器是Rstudio,但是為了教程的完整性(integrity),這里展示一張R語言的打開界面


          輸入一行命令試試?

          plot(rnorm(1000))

          (居然沒提供R語言的選項……)

          系統會為你畫一張圖


          這是一張含有1000個按正態分布排列的隨機數的圖。

          R的環境到此結束,下面我們回到Rstudio來看看


          我們可以看到Rstduio有四個區域。分別的功能是

          1. 左上角,是Rstudio的腳本區域(但是遠不止寫腳本那么簡單,其實還可以用來寫Rmarkdown,RNotebook等,這些是很實用的插件,但這里我們不詳談)
          2. 左下角,是命令行(command)窗口,剛才我們在R中展示的窗口就是這個。
          3. 右上角是R的目前的變量環境
          4. 右下角是R的畫圖,裝包,瀏覽文件的區域。

          可以看出,綜合的功能是比R要強大很多的,而且根據我們網站組的大佬的反應,這玩意其實是一個html……也就是說你會JS你就可以惡搞它的界面啦

          對了,在你關掉R/Rstudio的時候,系統會問你是否要保存空間映像,那個其實就是保存歷史記錄,方便以后繼續使用而設置的。

          一些基本的素養和操作

          R語言是一個統計語言。統計數據離不開一個良好的用于儲存的結構和標識。我們會先從它的基本操作講起,在其中夾雜著數據類型,數據框等大量的結構和細節。

          首先說說幫助文檔

          R語言和C++/python不一樣,R語言非常瑣碎,因此seek for help是必要的,但是R的official document很難懂,因此不推薦拿那個去當作你學習的教程。我們推薦的是以下三種尋求幫助的命令

          help("function") or ?function
          help.search("function") or ??function
          example("function")

          第一個是查函數的幫助文檔,第二個是以某一個function為關鍵字搜索幫助文檔。第三個會給出某一個函數的使用示例。在對函數不熟悉的時候一定要學會使用它。

          不管是什么樣的計算機語言,賦值都是最基礎的工作。但是賦值符號不是C++里的=,而是<-,比如

          r <- 2

          注意:用=賦值是不會被編譯器報錯的,但是由于這個語法不標準,所以有的時候會出問題。

          隨著賦值而來的就是數值運算,但是我們不強調那種單變元的數值運算,R有個很強大的功能是向量化操作(當然matlab也有)。(向量理解為一系列變量的按序組合(比如數值向量可以理解為數列)就好)比如說給予五個人身高體重的例子,我們計算一個BMI。

          A <- c(1.84,1.74,1.65,1.58,1.81)
          B <- c(86.2,65,51.5,45,56)
          BMI <- (B/(A^2))
          BMI

          最后顯示的結果是


          確實是一個向量。

          注意:R語言構造向量的方法是c(...)

          注意:如果不輸入某一個變量的名稱,R默認是不顯示結果的,因此我最后一行又加了一個BMI變量名顯示它。

          注意:我們推薦寫多行R代碼的時候使用腳本,之后在Rstudio中,腳本區域的右上角有三個按鈕,第一個run是逐行運行代碼,第三個source是運行全部代碼(但是要在下拉框選擇source with echo,否則依然顯示不了結果),大家注意回去找找看。

          注意:如果你真的點擊了source去運行代碼的話,可以在command區域看到這樣的命令

          source('C:/Users/Asus/Desktop/A.R')

          拿出來說的原因是想強調:如果你要輸入一個文件路徑,一定要輸入正斜杠/,因為反斜杠是轉義字符(escaped character),在""中間輸入字符,如果想讓它打印出",就可以輸入\"。

          我們回到向量這個問題上來

          常用的R的數據類型有三種:數字,字符,邏輯真假(當然還有個缺失值類型,我們在之后會說)。因此我們也可以創建字符和邏輯向量。

          關于字符向量,我們列舉下面三個例子

          c("A","B","C")
          cat(c("A","B","C"))
          cat(c("A","B","C"),'\n')

          顯示的結果如下


          哎?二和三有什么區別嗎?

          如果你在R中運行的話,第二行的命令是默認不換行的,所以就會出現

          的情況,不過在Rstudio里,這種情況得到了改善。

          注意:cat是連接+輸出的函數,而c只負責連接,在例子中,cat可以消除字符串的""符號。你可以連接任何東西,包括向量。

          注意:R的向量要求內部的所有元素數據類型相同。如果通過cat/c連接兩個不同數據類型的向量,系統會進行強制轉換。比如

          A <- c("A","B","C")
          B <- c(1,2,3)
          c(A,B)

          結果留給大家自己觀察。(這里原來出了一處錯誤,已經修正,謝謝

          @快走姑娘

          提醒


          和數值運算類比的就是邏輯運算,但是我不打算在這里先說這些。

          伴隨著向量的就是索引,目的自然是為了取用這些元素。索引的方法是[],舉2個例子

          A <- c("A","B","C")
          A[2]
          B <- c("A"=1,"B"=2,"C"=3)
          B["B"]

          顯示的結果如下



          注意:向量內的元素是有序的,這里A[2]索引的就是第二個,不是程序員認為的第三個

          注意:第二個例子中,我們相當于人工設置了索引(在python里,有個專門的數據結構叫字典(dict))為"A","B","C",它們叫這些變量的名稱(name),一一對應1,2,3。和自然索引1,2,3不同的是,這里的人工索引在查看變量的時候會顯示

          注意:索引也可以索引一個向量,也就是索引多個元素(和matlab一樣),比如說,試著運行一下下面這個命令。

          A <- c("A","B","C")
          A[c(2,3)]

          結果留給你們自己去發現。

          注意:索引也可以是負索引!它不是python里“倒數第幾個”的含義,它的意思是“索引除標記以外的所有元素”。在數據清洗中非常常見,可以用一個例子去幫助理解

          A <- c("A","B","C")
          A[-c(2,3)]

          自己去敲敲代碼看看結果吧

          注意:你甚至可以使用索引進行賦值,即使它已經超出了這個向量的長度,比如說

          A[7]="D"

          那么,A這個時候第7個確實是字符D,但是原來的第4-6個呢?實際上它們是缺失值。也就是NA。至于缺失值是什么樣的數據類型,這會在之后提到。

          注意:對于名稱,字符串中的""要求會放寬,也就是說,你還可以這么寫。

          B <- c(A=1,B=2,C=3)

          結果是一樣的

          對于我這種懶人來說,這可真是個福音。

          下面我們說說矩陣和數組

          矩陣可以理解為二維的向量。但是創建矩陣的參數就一下子多了很多,因此可能會稍有點難理解,我們用兩組例子結束這一切。

          第一組:

          S <- c(1,2,3,4,5,6,7,8,9)
          rnames <- c(1,2,3)
          cnames <- c("A","B","C")
          C=matrix(S,nrow=3,ncol=3,byrow=TRUE,dimnames=list(rnames,cnames))
          C=matrix(S,nrow=3,ncol=3,byrow=FALSE,dimnames=list(rnames,cnames))
          C=matrix(S,nrow=2,ncol=4,byrow=TRUE,dimnames=list(rnames,cnames)) 
          

          顯示的結果如下



          我改變的參數在byrow這里,它提示我們應該按行填充還是按列填充。TRUE自然就是按行存儲的意思。

          Oh,第三個報錯了,看一下報錯信息。

          data length [9] is not a sub-multiple or multiple of the number of rows [2]數據長度9不是行數2的因數或倍數

          哇哦,我有一些額外的發現

          報錯信息的數字會用[]標識出來,是有意義的。同時本身也不是特別難懂。

          興奮完之后,回到命令本身,參數解釋如下:

          • 第一個是源向量。
          • 第二個是nrow和ncol參數,row是行,col是列(column),代表需要組合的行數和列數。
          • 第三個是byrow參數,上面已經解釋過了。
          • 第四個是dimnames,用于標記行名稱和列名稱。

          我們可以看到,在矩陣里,名稱就非常重要了,它更接近于我們平常做數據分析時所需要使用的表。

          注意:看到那個TRUE了沒,對比一下C里的true和python里的True就知道,R語言也是一個大小寫敏感的語言。因此要注意代碼的嚴格的大小寫。

          注意:第三,四個參數不是必需的,第三個不寫的話,默認是FALSE,也就是按列填充。(和TeX的語法差別在于,可選不可選并不能通過直觀的方式看出來,需要靠人的主觀能動性去理解)

          注意:在dimnames里有一個list函數,這是為了創建列表,它的目的是把多個變量的集合聚合成為單個變量,這是為了方便給函數的參數提供值,傳參時會經常用。形式上倒沒有太大的差別。

          下面是第二個例子。

          cbind(A=1:4,B=5:8,C=9:12)
          rbind(A=1:4,B=5:8,C=9:12)

          顯示的結果如下


          bind是捆綁的意思,cbind理解為“把列捆綁在一起”,所以提供的向量自然是列向量,那么對應的名稱索引就是行索引。同樣的,rbind就是“把行捆綁在一起”。

          注意:有的人會問[1,]和[,1]是什么?我們要強調,這種位置上的東西不管是名稱還是數字,都是索引!但是這是矩陣的索引,對于矩陣的索引,我們可以舉幾個例子。

          A=matrix(1:24,nrow=4,ncol=6)
          A[,6]
          A[3,]
          A[3,4]
          B=A[c(2,3),c(3,4)]
          B
          dimnames(B)=list(c(1,2),c(1,2))
          B

          顯示的結果如下


          索引項中,第一個是行索引,第二個是列索引。同樣,你也可以給索引設置為向量。

          在敲這個代碼的時候,摸索了一個很有趣的用法。我們注意到,B依然是一個矩陣,但是使用matrix是創建一個矩陣,如果我要修改B這個矩陣的參數怎么辦呢?就可以使用paramater(B)=,其中paramater是在函數中的參數,可以通過這種方法賦值。

          注意:1:4,5:8等等,這個是什么?根據例子可以看出,這會生成1:4的公差為1的等差數列。你不用去擔心看不懂,我會點出來,然后告訴你,這些有趣的用法在之后的筆記中會講解到。

          接著說數組,R中給的定義是多于2維的向量。我們拿矩陣去做對比,對數組就很好理解了。

          同樣舉個例子

          A <- c('A','B')
          B <- c(1,2,3)
          C <- c('!','@','#','
          )
          z <- array(1:24,c(2,3,4),dimnames=list(A,B,C))
          z

          顯示的結果如下


          我們可以看出,第三維是單獨被拉出來的,第一二維就是行和列。第三維我們一般稱為

          有了矩陣鋪墊,這個每個參數的含義就好理解多了,但我們還是做一個簡單的解釋。

          1. 第一個paramater是源向量。
          2. 第二個是三維中每一維的長度
          3. 第三個是每一維的名稱

          注意:我還沒有找到讓數組元素按行填充的辦法。可能本身就沒有設置吧。

          注意:在介紹matrix函數的時候,每一個參數都是paramater=...的形式,但是這里似乎不是。在R里,如果不加這樣的形式,R會按默認的參數順序設置,如果記不住就很容易亂。使用這樣的形式可以防止這個問題(同樣在python,C++里也可以這么做,其中python里叫已知參數)當然不是因為它沒有paramater,這只是寫的人的習慣,因為這三個參數不容易混(性質完全不同),所以用熟的人自然不會再想著加paramater本身。

          好的,問題來了,如果我是小白呢?我想加paramater怎么辦?

          乖,讓你的心到最開始的地方看看

          小結

          再次強調,不要忽略所有注意的地方!我已經寫了很長時間了,但是實際上回到書本,其實只是書本一二兩章的內容的部分。還有很多有趣的東西還沒有涉及到,因此這只是基本操作總覽的第一部分。我們會在之后的筆記涉及到剩下的部分。

          下一節我們會說函數,常用函數集合,向量中的因子,排序,數據框,存儲與導入外部數據等其余的基本操作。

          感謝支持我的各位!筆芯~~

          TML 代碼約定

          很多 Web 開發人員對 HTML 的代碼規范知之甚少。

          在2000年至2010年,許多Web開發人員從 HTML 轉換到 XHTML。

          使用 XHTML 開發人員逐漸養成了比較好的 HTML 編寫規范。

          而針對于 HTML5 ,我們應該形成比較好的代碼規范,以下提供了幾種規范的建議。

          使用正確的文檔類型

          文檔類型聲明位于HTML文檔的第一行:

          <!DOCTYPE html>

          如果你想跟其他標簽一樣使用小寫,可以使用以下代碼:

          <!doctype html>

          使用小寫元素名

          HTML5 元素名可以使用大寫和小寫字母。

          推薦使用小寫字母:

          • 混合了大小寫的風格是非常糟糕的。

          • 開發人員通常使用小寫 (類似 XHTML)。

          • 小寫風格看起來更加清爽。

          • 小寫字母容易編寫。

          不推薦:

          <SECTION>

          <p>這是一個段落。</p>

          </SECTION>

          非常糟糕:

          <Section>

          <p>這是一個段落。</p>

          </SECTION>

          推薦:

          <section>

          <p>這是一個段落。</p>

          </section>

          關閉所有 HTML 元素

          在 HTML5 中, 你不一定要關閉所有元素 (例如 <p> 元素),但我們建議每個元素都要添加關閉標簽。

          不推薦:

          <section>

          <p>這是一個段落。

          <p>這是一個段落。

          </section>

          推薦:

          <section>

          <p>這是一個段落。</p>

          <p>這是一個段落。</p>

          </section>

          關閉空的 HTML 元素

          在 HTML5 中, 空的 HTML 元素也不一定要關閉:

          我們可以這么寫:

          <meta charset="utf-8">

          也可以這么寫:

          <meta charset="utf-8" />

          在 XHTML 和 XML 中斜線 (/) 是必須的。

          如果你期望 XML 軟件使用你的頁面,使用這種風格是非常好的。

          使用小寫屬性名

          HTML5 屬性名允許使用大寫和小寫字母。

          我們推薦使用小寫字母屬性名:

          • 同時使用大小寫是非常不好的習慣。

          • 開發人員通常使用小寫 (類似 XHTML)。

          • 小寫風格看起來更加清爽。

          • 小寫字母容易編寫。

          不推薦:

          <div CLASS="menu">

          推薦:

          <div class="menu">

          屬性值

          HTML5 屬性值可以不用引號。

          屬性值我們推薦使用引號:

          • 如果屬性值含有空格需要使用引號。

          • 混合風格不推薦的,建議統一風格。

          • 屬性值使用引號易于閱讀。

          以下實例屬性值包含空格,沒有使用引號,所以不能起作用:

          <table class=table striped>

          以下使用了雙引號,是正確的:

          <table class="table striped">

          圖片屬性

          圖片通常使用 alt 屬性。 在圖片不能顯示時,它能替代圖片顯示。

          <img src="html5.gif" alt="HTML5" style="width:128px;height:128px">

          定義好圖片的尺寸,在加載時可以預留指定空間,減少閃爍。

          <img src="html5.gif" alt="HTML5" style="width:128px;height:128px">

          空格和等號

          等號前后可以使用空格。

          <link rel="stylesheet" href="styles.css">

          但我們推薦少用空格:

          <link rel="stylesheet" href="styles.css">

          避免一行代碼過長

          使用 HTML 編輯器,左右滾動代碼是不方便的。

          每行代碼盡量少于 80 個字符。

          空行和縮進

          不要無緣無故添加空行。

          為每個邏輯功能塊添加空行,這樣更易于閱讀。

          縮進使用兩個空格,不建議使用 TAB。

          比較短的代碼間不要使用不必要的空行和縮進。

          不必要的空行和縮進:

          <body>

          <h1>菜鳥教程</h1>

          <h2>HTML</h2>

          <p>

          菜鳥教程,學的不僅是技術,更是夢想。

          菜鳥教程,學的不僅是技術,更是夢想。

          菜鳥教程,學的不僅是技術,更是夢想,

          菜鳥教程,學的不僅是技術,更是夢想。

          </p>

          </body>

          推薦:

          <body>

          <h1>菜鳥教程</h1>

          <h2></h2>

          <p>菜鳥教程,學的不僅是技術,更是夢想。

          菜鳥教程,學的不僅是技術,更是夢想。

          菜鳥教程,學的不僅是技術,更是夢想。

          菜鳥教程,學的不僅是技術,更是夢想。</p>

          </body>

          表格實例:

          <table>

          <tr>

          <th>Name</th>

          <th>Description</th>

          </tr>

          <tr>

          <td>A</td>

          <td>Description of A</td>

          </tr>

          <tr>

          <td>B</td>

          <td>Description of B</td>

          </tr>

          </table>

          列表實例:

          <ol>

          <li>London</li>

          <li>Paris</li>

          <li>Tokyo</li>

          </ol>

          省略 <html> 和 <body>?

          在標準 HTML5 中, <html> 和 <body> 標簽是可以省略的。

          以下 HTML5 文檔是正確的:

          實例:

          <!DOCTYPE html>

          <head>

          <title>頁面標題</title>

          </head>

          <h1>這是一個標題</h1>

          <p>這是一個段落。</p>

          嘗試一下 ?

          不推薦省略 <html> 和 <body> 標簽。

          <html> 元素是文檔的根元素,用于描述頁面的語言:

          <!DOCTYPE html>

          <html lang="zh">

          聲明語言是為了方便屏幕閱讀器及搜索引擎。

          省略 <html> 或 <body> 在 DOM 和 XML 軟件中會崩潰。

          省略 <body> 在舊版瀏覽器 (IE9)會發生錯誤。

          省略 <head>?

          在標準 HTML5 中, <head>標簽是可以省略的。

          默認情況下,瀏覽器會將 <body> 之前的內容添加到一個默認的 <head> 元素上。

          實例

          <!DOCTYPE html>

          <html>

          <title>頁面標題</title>

          <body>

          <h1>這是一個標題</h1>

          <p>這是一個段落。</p>

          </body>

          </html>

          嘗試一下 ?

          現在省略 head 標簽還不推薦使用。

          元數據

          HTML5 中 <title> 元素是必須的,標題名描述了頁面的主題:

          <title>菜鳥教程</title>

          標題和語言可以讓搜索引擎很快了解你頁面的主題:

          <!DOCTYPE html>

          <html lang="zh">

          <head>

          <meta charset="UTF-8">

          <title>菜鳥教程</title>

          </head>

          HTML 注釋

          注釋可以寫在 <!-- 和 --> 中:

          <!-- 這是注釋 -->

          比較長的評論可以在 <!-- 和 --> 中分行寫:

          <!--

          這是一個較長評論。 這是 一個較長評論。這是一個較長評論。

          這是 一個較長評論 這是一個較長評論。 這是 一個較長評論。

          -->

          長評論第一個字符縮進兩個空格,更易于閱讀。

          樣式表

          樣式表使用簡潔的語法格式 ( type 屬性不是必須的):

          <link rel="stylesheet" href="styles.css">

          短的規則可以寫成一行:

          p.into {font-family: Verdana; font-size: 16em;}

          長的規則可以寫成多行:

          body {

          background-color: lightgrey;

          font-family: "Arial Black", Helvetica, sans-serif;

          font-size: 16em;

          color: black;

          }

          • 將左花括號與選擇器放在同一行。

          • 左花括號與選擇器間添加以空格。

          • 使用兩個空格來縮進。

          • 冒號與屬性值之間添加已空格。

          • 逗號和符號之后使用一個空格。

          • 每個屬性與值結尾都要使用符號。

          • 只有屬性值包含空格時才使用引號。

          • 右花括號放在新的一行。

          • 每行最多 80 個字符。

          在逗號和分號后添加空格是常用的一個規則。

          在 HTML 中載入 JavaScript

          使用簡潔的語法來載入外部的腳本文件 ( type 屬性不是必須的 ):

          <script src="myscript.js">

          使用 JavaScript 訪問 HTML 元素

          一個糟糕的 HTML 格式可能會導致 JavaScript 執行錯誤。

          以下兩個 JavaScript 語句會輸出不同結果:

          實例

          var obj=getElementById("Demo")

          var obj=getElementById("demo")

          HTML 中 JavaScript 盡量使用相同的命名規則。

          訪問 JavaScript 代碼規范。

          使用小寫文件名

          大多 Web 服務器 (Apache, Unix) 對大小寫敏感: london.jpg 不能通過 London.jpg 訪問。

          其他 Web 服務器 (Microsoft, IIS) 對大小寫不敏感: london.jpg 可以通過 London.jpg 或 london.jpg 訪問。

          你必須保持統一的風格,我們建議統一使用小寫的文件名。

          文件擴展名

          HTML 文件后綴可以是 .html (或r .htm)。

          CSS 文件后綴是 .css

          JavaScript 文件后綴是 .js

          .htm 和 .html 的區別

          .htm 和 .html 的擴展名文件本質上是沒有區別的。瀏覽器和 Web 服務器都會把它們當作 HTML 文件來處理。

          區別在于:

          .htm 應用在早期 DOS 系統,系統現在或者只能有三個字符。

          在 Unix 系統中后綴沒有特別限制,一般用 .html。

          技術上區別

          如果一個 URL 沒有指定文件名 (如 http://www.runoob.com/css/), 服務器會返回默認的文件名。通常默認文件名為 index.html, index.htm, default.html, 和 default.htm。

          如果服務器只配置了 "index.html" 作為默認文件,你必須將文件命名為 "index.html", 而不是 "index.htm"。

          但是,通常服務器可以設置多個默認文件,你可以根據需要設置默認文件嗎。

          不管怎樣,HTML 完整的后綴是 ".html"。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!


          主站蜘蛛池模板: 国产在线一区二区杨幂| 视频一区精品自拍| 无码国产精品一区二区免费式直播 | 国产精品无码AV一区二区三区| 亚洲日韩精品无码一区二区三区 | 中文字幕在线播放一区| 久久国产一区二区三区| 国产一区二区三区美女| 无码乱码av天堂一区二区| 精品国产日韩亚洲一区| 精品无码国产一区二区三区麻豆| 亚洲国产日韩一区高清在线 | 无码国产精品久久一区免费| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲国产一区国产亚洲| 国产精品自在拍一区二区不卡| 成人精品一区二区三区校园激情| 奇米精品一区二区三区在线观看| 日韩有码一区二区| 国产成人精品一区二三区| 无码国产精品一区二区免费式直播 | 国产精品成人一区无码| 亚洲AV无码一区二区大桥未久| 国产伦精品一区三区视频| 四虎精品亚洲一区二区三区| 亚洲国产成人精品无码一区二区| 另类一区二区三区| 中文无码精品一区二区三区| 国产乱码精品一区二区三区香蕉 | 无码人妻久久一区二区三区蜜桃| 国产成人一区二区三区| 国精产品一区一区三区MBA下载| 亚洲午夜在线一区| 亚洲精品一区二区三区四区乱码| 亚洲第一区香蕉_国产a| 色窝窝无码一区二区三区成人网站| 国产在线观看一区二区三区精品 | 韩国精品一区二区三区无码视频| 97一区二区三区四区久久| 国产主播在线一区| 国内精品一区二区三区最新|