<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 一、構建項目目錄 ![![](https://img.kancloud.cn/32/5b/325b82563b7b1f120f93d2b3d0f7a425_984x472.png)](images/screenshot_1568881943294.png) * 目錄結構的統一化,可讀性,分模塊、組件構建,嚴禁構建雜亂無章,毫無可讀性而言的項目目錄。 * 了解開發當前項目所需的框架,工具、插件,功能,兼容性,分辨率等問題做好準備工作,做到心中有數。 * 目錄結構整齊劃一,方便日后的維護和其他同事的閱讀。 1. #### ***目錄結構說明*** \-- main.js為入口js文件,app.vue為項目的根組件。 \-- 總共三層開發目錄,**src、build、dist**,src是源碼文件夾,build是調試文件夾,dist目錄依賴build目錄,生成線上版完整代碼,包括代碼的丑化,圖片的壓縮,各類插件的加載順序等。 \-- 所有的其余頁面都放到neo組件目錄下,neo目錄下的頁面全部歸類放置,不要直接扔進去完事。 \-- api目錄下包含所有的請求路徑url,config是全局配置目錄,router是路由文件,store為全局狀態管理,所有的js插件放到libs目錄下。 \-- 所有的圖片放置assets目錄下,static目錄下放置固定不動的圖片,和默認css文件包。 ## 二、代碼規范 1. #### ***書寫規范:增強語義化,增強閱讀性***。 * **只用小寫字母** 所有的代碼都用小寫字母:適用于元素名,屬性,屬性值(除了文本和 CDATA ), 選擇器,特性,特性值(除了字符串)。 **代碼示例:** ~~~xml <!-- 不推薦 --> <A HREF="/">Home</A> <!-- 推薦 --> <img src="google.png" alt="Google"></pre> <h3>行尾空格</h3> <strong>刪除行尾白空格。</strong> 行尾空格沒必要存在。 <pre><!-- 不推薦 --> <p>What?_ <!-- 推薦 --> <p>Yes please. ~~~ * **增強語義** 根據HTML各個元素的用途而去使用它們。 使用元素 (有時候錯稱其為“標簽”) 要知道為什么去使用它們和是否正確。 例如,用heading元素構造標題, p 元素構造段落, a 元素構造錨點等。 根據HTML各個元素的用途而去使用是很重要的,它涉及到文檔的可訪問性、重用和代碼效率等問題。 * **禁止用行內元素包裹塊級標簽,最好不要在p標簽內嵌套別的標簽** **代碼示例:** ~~~xml <!-- 不推薦 --> <div onclick="goToRecommendations();">All recommendations</div> <!-- 推薦 --> <a href="recommendations/">All recommendations</a> ~~~ * **關注點分離** **將表現和行為分開** 嚴格保持結構 (標記),表現 (樣式),和行為 (腳本)分離, 并盡量讓這三者之間的交互保持最低限度。 確保文檔和模板只包含HTML結構, 把所有表現都放到樣式表里,把所有行為都放到腳本里。 此外,盡量使腳本和樣式表在文檔與模板中有最小接觸面積,即減少外鏈。 將表現和行為分開維護是很重要的,因為更改HTML文檔結構和模板會比更新樣式表和腳本更花費成本。 **代碼示例** ~~~xml <!-- 不推薦 --> <!DOCTYPE html> <title>HTML sucks</title> <link rel="stylesheet" href="base.css" media="screen"> <link rel="stylesheet" href="grid.css" media="screen"> <link rel="stylesheet" href="print.css" media="print"> <h1 style="font-size: 1em;">HTML sucks</h1> <p>I’ve read about this on a few sites but now I’m sure:</p> <u>HTML is stupid!!1</u> <!-- 推薦 --> <!DOCTYPE html> <title>My first CSS-only redesign</title> <link rel="stylesheet" href="default.css"> <h1>My first CSS-only redesign</h1> <p>I’ve read about this on a few sites but today I’m actually</p> ~~~ 2. #### ***格式規范:禁止看到參差不齊的格式。*** **1、HTML格式** 每個塊元素、列表元素或表格元素都獨占一行,每個子元素都相對于父元素進行縮進。 獨立元素的樣式,將塊元素、列表元素或表格元素都放在新行。 另外,需要縮進塊元素、列表元素或表格元素的子元素。 **代碼示例** ~~~xml <!-- 不推薦 --> <section> <div class=""></div> <h1></h1> <div> <span></span> <em></em> </div> </section> <!-- 推薦 --> <section> <div class=""></div> <h1></h1> <div> <span></span> <em></em> </div> </section> ~~~ **2、CSS格式** 依字母順序進行聲明 都按字母順序聲明,很容易記住和維護。 忽略瀏覽器的特定前綴排序,但多瀏覽器特定的某個CSS屬性前綴應相對保持排序(例如-moz前綴在-webkit前面)。 **代碼示例** ~~~undefined background: fuchsia; border: 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; color: black; text-align: center; text-indent: 2em; ~~~ 代碼塊內容縮進,它能夠提高層次結構的清晰度。 ~~~css @media screen, projection { html { background: #fff; color: #444; } } ~~~ 聲明完結,所有聲明都要用“;”結尾。 ~~~css /* 不推薦 */ .test { display: block; height: 100px } /* 推薦 */ .test { display: block; height: 100px; } ~~~ 選擇器和聲明分行,每個選擇器和聲明都要獨立新行。 ~~~css /* 不推薦 */ a:focus, a:active { position: relative; top: 1px; } /* 推薦 */ h1, h2, h3 { font-weight: normal; line-height: 1.2; } ~~~ 規則分行,每個規則獨立一行,兩個規則之間隔行 ~~~css html { background: #fff; } body { margin: auto; width: 50%; } ~~~ 3. #### ***命名規范:嚴禁特簡化命名*** **1、ID和class的命名** 應該從ID和class的名字上就能看出這元素是干嘛用的,而不是表象或模糊不清的命名。 應該優先慮以這元素具體目來進行命名,這樣他就最容易理解,減少更新。 通用名稱可以加在兄弟元素都不特殊或沒有個別意義的元素上,可以起名類似“helpers”這樣的泛。 使用功能性或通用的名字會減少不必要的文檔或模板修改。 **代碼示例** ~~~css /* 不推薦: 無意義 不易理解 */ #yee-1901 {} /* 不推薦: 表達不具體 */ .button-green {} .clear {} /* 推薦: 明確詳細 */ #gallery {} #login {} .video {} /* 推薦: 通用 */ .aux {} .alt {} ~~~ **2、ID和class命名風格** 非必要的情況下,ID和class的名稱應盡量簡短。 簡要傳達ID或class是關于什么的。 通過這種方式,似的代碼易懂且高效。 **代碼示例** ~~~css /* 不推薦 */ #navigation {} .atr {} /* 推薦 */ #nav {} .author {} ~~~ **3、類型選擇器** 避免使用CSS類型選擇器。 非必要的情況下不要使用元素標簽名和ID或class進行組合。 出于性能上的考慮避免使用父輩節點做選擇器 performance reasons. **代碼示例** ~~~css /* 不推薦 */ ul#example {} div.error {} /* 推薦 */ #example {} .error {} ~~~ **4、屬性縮寫** 寫屬性值的時候盡量使用縮寫。 CSS很多屬性都支持縮寫shorthand (例如 font ) 盡量使用縮寫,甚至只設置一個值。 使用縮寫可以提高代碼的效率和方便理解。 **代碼示例** ~~~cpp /* 不推薦 */ border-top-style: none; font-family: palatino, georgia, serif; font-size: 100%; line-height: 1.6; padding-bottom: 2em; padding-left: 1em; padding-right: 1em; padding-top: 0; /* 推薦 */ border-top: 0; font: 100%/1.6 palatino, georgia, serif; padding: 0 1em 2em; ~~~ **5、0和單位,省略0后面的單位,省略0開頭小數點前面的0。** **代碼示例** ~~~css .test { margin: 0; padding: 0; font-size: .8em; } ~~~ **6、ID和class命名的定界符** 選擇器前面加上特殊應用標識的前綴(可選)。 大型項目中最好在ID或class名字前加上這種標識性前綴(命名空間),使用短破折號鏈接。 使用命名空間可以防止命名沖突,方便維護,比如在搜索和替換操作上。 ID和class名字有多單詞組合的用短破折號“-”分開。 **代碼示例** ~~~css /* 不推薦:“demo”和“image”中間沒加“-” */ .demoimage {} /* 不推薦:用下劃線“_”是屌絲的風格 */ .error_status {} /* 不推薦:用駝峰命名是屌絲的風格 */ .errorStatus {} /* 推薦 */ #video-id {} .ads-sample {} ~~~ 4. #### ***Js語法規范(重點):嚴格按照此中語言的語法要求進行編碼。*** **1、變量** 駝峰式命名,駝峰式命名法由小(大)寫字母開始,后續每個單詞首字母都大寫。 命名方法:小駝峰式命名法。 命名規范:前綴應當是名詞。(函數的名字前綴為動詞,以此區分變量和函數)。 命名建議:盡量在變量名字中體現所屬類型,如:length、count等表示數字類型;而包含name、title表示為字符串類型。 **代碼示例** ~~~jsx // 好的命名方式 var maxCount = 10; var tableTitle = 'LoginTable'; // 不好的命名方式 var setCount = 10; var getTitle = 'LoginTable'; ~~~ **2、函數** 命名方法:小駝峰式命名法。 命名規范:前綴應當為動詞。 命名建議:可使用常見動詞約定 **代碼示例** ~~~jsx // 是否可閱讀 function canRead() { return true; } // 獲取名稱 function getName() { return this.name; } ~~~ **3、常量** 命名方法:名稱全部大寫。 命名規范:使用大寫字母和下劃線來組合命名,下劃線用以分割單詞。 **代碼示例** ~~~jsx var MAX_COUNT = 10; var URL = 'http://www.baidu.com'; ~~~ **4、構造函數** 介紹:在JS中,構造函數也屬于函數的一種,只不過采用new 運算符創建對象。 命名方法:大駝峰式命名法,首字母大寫。 命名規范:前綴為名稱。 **代碼示例** ~~~jsx function Student(name) { this.name = name; } var st = new Student('tom'); ~~~ **5、類的成員** **類的成員包含:** 公共屬性和方法:跟變量和函數的命名一樣。 私有屬性和方法:前綴為\_(下劃線),后面跟公共屬性和方法一樣的命名方式。 **代碼示例** ~~~jsx function Student(name) { var _name = name; // 私有成員 // 公共方法 this.getName = function () { return _name; } // 公共方式 this.setName = function (value) { _name = value; } } var st = new Student('tom'); st.setName('jerry'); console.log(st.getName()); // => jerry:輸出_name私有變量的值 ~~~ ## 三、注釋 * 編碼時一定注意寫好注釋,頁面結構和樣式的動態變化和添加,打好注釋,便于后臺同事套頁面時候的閱讀。 * 尤其Js,做到主要代碼、方法、參數的行行注釋說明,便于其他同事了解你做此功能的思路,避免代碼的冗余, 造成性能問題,盡量做到高內聚低耦合。 **代碼示例** ~~~xml <!-- HTML推薦注釋,左右各空一個空格,注釋說明,單行 --> <!--<div class="sell"></div>--> <!-- HTML推薦注釋,注釋符號一上一下覆蓋整個要注釋的區塊,多行注釋 --> <!-- <div class="sell"> <p>多行注釋</p> <p>多行注釋</p> <p>多行注釋</p> <p>多行注釋</p> </div> --> /* CSS推薦注釋,左右各空一個空格,區塊注釋說明 */ .sell { /*background: #000;*/ } /* CSS推薦注釋,注釋符號一上一下覆蓋整個要注釋的區塊,多行注釋 */ /* .sell p { background: #000; font-size: 12px; } */ // Js推薦注釋,注釋符號與注釋說明之間空一個空格,單行 // var sellEle = document.querySelector('.sell'); // Js推薦注釋,注釋符號一上一下覆蓋整個要注釋的區塊,多行注釋 /* var sellEle = document.querySelector('.sell'); console.log(sellEle); */ ~~~ 函數(方法)注釋 **代碼示例** ~~~jsx /** * 函數說明 * @關鍵字 */ /** * 合并Grid的行 * @param {Grid} grid 需要合并的Grid * @param {Array} cols 需要合并列的Index(序號)數組;從0開始計數,序號也包含。 * @param {Boolean} isAllSome 是否2個tr的cols必須完成一樣才能進行合并。true:完成一樣;false(默認):不完全一樣 * @return void * @author barry */ function mergeCells(grid, cols, isAllSome) { // Do Something } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看