成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談前端開發(fā)規(guī)范,你學會了嗎?

開發(fā) 前端
一個人走得更快,一群人可以走得更遠。統一規(guī)范的最根本目的是為了保證團隊成員的一致性,從而減少溝通成本,提高開發(fā)效率。

一個好的程序員肯定是要能書寫可維護的代碼,而不是一次性的代碼,怎么能讓團隊當中的其他人,甚至過一段時間之后的你,再看自己某個時期寫的代碼,依然能看懂?這就涉及到規(guī)范你的代碼了。

一、規(guī)范代碼的好處

1.從根本上降低開發(fā)成本:

提高代碼整體的可讀性、可維護性、可復用性。

2.保證代碼的一致性:

軟件系統中最重要的因素之一就是編碼的一致性。如果編碼風格一致,也更加易于維護,因為團隊內任何人都可以快速理解并修改。

3.提升團隊整體效率:

開發(fā)人員通常需要花費大量的時間來解決代碼質量問題,如果都按照規(guī)范編寫,也有助于團隊盡早發(fā)現問題,這將提高整個交付過程的效率。

二、不規(guī)范代碼的弊端

1.增加團隊成員間的協作負擔:

由于缺乏規(guī)范,導致代碼風格不一,極端情況下,某段代碼只有某個人能修改。

2.團隊間協作更加困難:

由于開發(fā)人員要適應不同的風格,會導致效率低下。

3.回顧困難:

在review期間,可能經常為類似的事情做過多的討論。

4.影響降低團隊整體效率:

影響團隊的生產力和質量,嚴重的甚至會影響團隊和諧。

三、為什么很多團隊缺乏規(guī)范

1.當開發(fā)人員被要求在短時間內完成任務時,通常會回避質量標準。

2.長時間養(yǎng)成的開發(fā)習慣很難在短時間內去改變。

3.有的時候雖然達成了一致,但在開發(fā)中依舊我行我素。

四、規(guī)范包含哪些內容

我們平時理解的前端開發(fā)規(guī)范,更多層面的是編碼層面的規(guī)范,實際上遠不止這一個。比如技術棧規(guī)范、瀏覽器兼容規(guī)范、項目文件結構規(guī)范、UI設計規(guī)范、前后端協作規(guī)范等,以下主要從這六個方面簡單介紹下前端開發(fā)規(guī)范。

1.技術棧規(guī)范

前端目前主要有三大框架Vue、React和AngularJS。每一個框架背后都是一個架構、一個生態(tài)。每個框架背后牽涉著開發(fā)思維、生態(tài)系統、配套工具、最佳實踐、性能調優(yōu)。要精通和熟練一個框架需要付出的成本是很高。

所以說團隊的開發(fā)效率是基于穩(wěn)定且熟練的技術棧的。穩(wěn)定的技術棧規(guī)范有利于團隊協作和溝通; 另外如果團隊精通這個技術棧,當出現問題或者需要深入調優(yōu), 會相對輕松。

前端技術棧規(guī)范主要包含下面這些類型:

① 編程語言 - Typescript或Javascript

② UI框架及其配套生態(tài)(路由、狀態(tài)管理、組件庫、國際化、動畫、服務端渲染、腳手架、CLI工具、組件測試等)

③ 樣式。命名規(guī)范、預處理器等

④ 動畫引擎

⑤ 項目構建工具流。webpack、vue-cli

⑥ 包管理器。npm、yarn

⑦ 開發(fā)工具、工具庫(moment.js)、版本管理(gitlab)等

2.瀏覽器兼容規(guī)范

前端團隊應該根據應用所面對的用戶情況、應用類型、開發(fā)成本、瀏覽器市場統計數據等因素,來制定自己的瀏覽器兼容規(guī)范。不過確定哪種兼容策略,應該取決于用戶比重,如果大部分用戶使用的是現代瀏覽器,就應該使用優(yōu)雅降級,為現代瀏覽器提供最好的體驗,而舊瀏覽器則退而求之次,保證大概的功能,反之選擇漸進增強,保證低版本瀏覽器的體驗,對于支持新特性的新瀏覽器提供稍好的體驗。

有了瀏覽器兼容規(guī)范,前端開發(fā)和兼容性測試就有理有據,避免爭議; 同時它也是前端團隊的一種對外聲明,除非特殊要求,不符合瀏覽器兼容規(guī)范的瀏覽器,前端開發(fā)人員可以選擇忽略。

我們也可以根據瀏覽器市場分布情況、用戶占比、開發(fā)成本等因素對將瀏覽器劃分為多個等級,不同等級表示不同的支持程度:

① 完全兼容: 保證百分百功能正常

② 部分兼容: 只能保證功能、樣式與需求大致一致。對于一些不影響主體需求和功能的bug,會做降低優(yōu)先級處理或者不處理

③ 不兼容: 不考慮兼容性

3.項目文件結構規(guī)范

主要包含項目的命名、項目的文件結構、版本號規(guī)范等。

下面簡單列舉一類項目文件結構:

① README.md: 項目說明。你可以在這里提供關于項目的關鍵信息或者相關信息的入口。一般包含下列信息:

  • 簡要描述、項目主要特性;
  • 運行環(huán)境/依賴、安裝和構建、測試指南;
  • 簡單示例代碼;
  • 文檔或文檔入口, 其他版本或相關資源入口;
  • 聯系方式、討論群;
  • 許可、貢獻/開發(fā)指南。

② CHANGELOG.md: 放置每個版本的變動內容, 通常要描述每個版本變更的內容。方便使用者確定應該使用哪個版本。

③ package.json: 前端項目必須. 描述當前的版本、可用的命令、包名、依賴、環(huán)境約束、項目配置等信息。

④ .gitignore: 忽略不必要的文件,避免將自動生成的文件提交到版本庫。

⑤ docs/: 項目的細化文檔, 可選。

⑥ examples/: 項目的示例代碼,可選。

⑦ build: 項目工具類腳本放置在這里,非必須。如果使用統一構建工具,則沒有這個目錄。

⑧ dist/: 項目構建結果輸出目錄。

⑨ src/: 源代碼目錄。

    - src 開發(fā)目錄
- pages 視圖
- module-a 模塊A
- components 私有組件
- ComA.tsx
- ComB.tsx
- index.module.less
- index.tsx
- Content.tsx
- module-b 模塊B
- components 公共組件
- index.ts 導出所有組件
- header
- index.tsx
- index.module.less
- User.tsx
- useGetBaseInfo.hooks.ts
- routers 路由文件
- store redux中的數據
- utils 這里是以utils為后綴
- index.ts
- a.utils.ts
- b.utils.ts
- hooks 這里是以hooks為后綴
- index.ts
- a.hooks.ts
- b.hooks.ts
- styles 靜態(tài)資源文件
- service api請求,這里是以api為后綴
- a.api.ts 按照后端微服務進行劃分
- b.api.ts
- constans 常量

⑩ tests/: 單元測試目錄。

? tests: 全局的測試目錄,通常放應用的集成測試或E2E測試等。

? .env*: 項目中我們通常會使用環(huán)境變量來影響應用在不同運行環(huán)境下的行為。可以通過dotEnv來從文件中讀取環(huán)境變量. 通常有三個文件:

  • env 通用的環(huán)境變量;
  • env.development 開發(fā)環(huán)境的環(huán)境變量;
  • env.production 生成環(huán)境的環(huán)境變量。

4.編碼規(guī)范

每一個程序員心目中對‘好代碼’都有自己的主見,統一的編碼規(guī)范可以避免不必要的論戰(zhàn)和爭議,有利于團隊項目的長遠維護。一致性的代碼規(guī)范可以增強團隊開發(fā)協作效率、提高代碼質量、減輕系統維護的負擔。

以下主要從HTML、JS、CSS、代碼格式化這四個方面談談編碼規(guī)范:

① HTML規(guī)范

使用 HTML5 的文檔聲明類型 :

DOCTYPE標簽是一種標準通用標記語言的文檔類型聲明,它的目的是要告訴標準通用標記語言解析器,它應該使用什么樣的文檔類型定義(DTD)來解析文檔。

使用文檔聲明類型的作用是為了防止開啟瀏覽器的怪異模式。

沒有DOCTYPE文檔類型聲明會開啟瀏覽器的怪異模式,瀏覽器會按照自己的解析方式渲染頁面,在不同的瀏覽器下面會有不同的樣式。

如果你的頁面添加了,那么就等同于開啟了標準模式。瀏覽器會按照W3C標準解析渲染頁面。

詳細規(guī)范可查看:https://codeguide.co/#html

② JS規(guī)范

函數變量命名、代碼注釋等。JS/TS主流的大致有這幾種:

  • Airbnb JavaScript Style Guide:

??https://github.com/airbnb/javascript??

  • Google JavaScript Style Guide:

??https://google.github.io/styleguide/jsguide.html]??

  • Idiomatic JavaScript Style Guide:

??https://github.com/rwaldron/idiomatic.js??

  • JavaScript Standard Style Guide

③ CSS規(guī)范

ID和class的命名、合理使用ID、css選擇器中避免使用標簽名、使用子選擇器、盡量使用縮寫屬性等,詳細可參考以下網站:

  • Airbnb CSS / Sass Styleguide:

??https://css-tricks.com/bem-101/??

  • Code Guide:

??https://codeguide.co/#css??

④ 代碼格式化規(guī)范

由于每個開發(fā)者的IDE不同,即使IDE相同也會因為每個人的配置不一樣導致格式化的結果不一樣。如何確保團隊內開發(fā)人員采用統一的格式化配置呢?

這里給推薦大家使用 prettier,它內置了一套格式化的規(guī)則。細可參考以下網站:https://prettier.io/

5.UI設計規(guī)范

UI 規(guī)范的最大好處就是能夠提質提效:

① 在開發(fā)者的角度,與設計規(guī)范同步形成研發(fā)資產,避免重復造輪子;

② 在測試的角度,能夠避免重復的無意義走查;

③ 在UI設計師的角度,減少設計成本,提高設計效率,可以快速承接新需求;

④ 在產品角度,提高產品迭代與優(yōu)化效率,降低試錯成本;

⑤ 在用戶角度,解決用戶體驗一致性。

如果團隊不打算制定自己的UI設計規(guī)范,則推薦使用現成的開源組件庫:Ant Design、Element UI、iView、WeUI等

6.前后端協作規(guī)范

前端往往不能脫離后端而存在,和后端協作的時間也是比較長的。

一個常用的前后端協作流程:

① 需求分析。參與者一般有前后端、測試、以及產品。由產品主持,對需求進行講解,接受開發(fā)和測試的反饋,確保大家對需求有一致的認知。

② 前后端開發(fā)討論。討論應用的一些開發(fā)設計,溝通技術點、難點、以及分工問題。

③ 設計接口文檔。可以由前后端一起設計;或者由后端設計、前端確認是否符合要求。

④ 并行開發(fā)。前后端并行開發(fā),在這個階段,前端可以先實現靜態(tài)頁面; 或者根據接口文檔對接口進行Mock, 來模擬對接后端接口。

⑤ 前后端進行接口聯調。

五、前端開發(fā)規(guī)范實例

1.項目情況

多人開發(fā)同一個項目的不同模塊;由于開發(fā)前沒有制定規(guī)范,導致每個人的代碼都是一種單獨的風格;當其他人去修改代碼時需要熟悉不同風格的代碼,浪費了大量時間在閱讀代碼上;而且由于沒有全局的樣式規(guī)范,導致每個人都有一套自己的樣式,在后期如果想要做統一的界面風格時需要每個人都去修改樣式代碼,增加了大量工作量。

2.制定規(guī)范

根據項目的實際情況,由于項目已經開發(fā)到一定程度,已經選好了開發(fā)框架,所以可以從編碼和UI設計等方面進行規(guī)范。

由于項目是一個管理系統,所以對于前端UI來說可以統一頁面結構;制定一個統一風格的模板,開發(fā)的時候可以直接使用模板代碼去做適應性的修改;

由于缺乏統一的樣式標準,導致后期統一風格時會花費大量時間,所以進行統一的樣式分離,抽離公共的CSS樣式去引用,方便后期統一修改;

由于一些變量和函數命名過于簡單比如a、b、c等,規(guī)范多使用一些語義化的單詞去命名,方便理解和閱讀;

由于項目開發(fā)中前后端是同一個人開發(fā),導致有些可能是后端的工作放到了前端去處理。比如分頁功能,雖然這個是前后端都可以做的,但是如果使用前端去分頁,這樣就要需要一次性返回全部數據,數據量大的時候接口可能會返回很慢,導致頁面空白時間比較長,所以建議有些邏輯功能要根據實際情況去決定是前端還是后端處理。

3.最終成果

項目代碼結構基本上有一個統一的風格;各模塊頁面也有了統一的風格;用戶體驗較好;也方便了開發(fā)和維護。

總結:

一個人走得更快,一群人可以走得更遠。統一規(guī)范的最根本目的是為了保證團隊成員的一致性,從而減少溝通成本,提高開發(fā)效率。學會熱愛標準,但要確保它們不是一成不變的。如果制定的規(guī)范不適合您的團隊,請確保可以適應和重寫所需要的任何規(guī)則。它并不是要強制執(zhí)行一種工作方式,而是為了幫助促進團隊之間的互動。

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2023-01-10 08:43:15

定義DDD架構

2024-02-28 09:07:58

鏈路聚合模式

2023-01-13 16:46:38

CRM系統建設

2022-01-17 07:50:37

Go代碼規(guī)范

2021-10-31 20:07:49

Windows驅動開發(fā)

2024-05-30 09:43:00

2023-06-27 07:21:51

前端開發(fā)坑點

2023-01-26 00:28:45

前端測試技術

2024-04-09 13:16:21

Rust命名規(guī)范

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發(fā)編程

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-03-11 08:27:43

前端圖片格式

2024-03-06 08:28:16

設計模式Java

2022-06-16 07:50:35

數據結構鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2022-07-13 08:16:49

RocketMQRPC日志

2023-10-06 14:49:21

SentinelHystrixtimeout
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品在线观看视频 | 国产欧美在线观看 | 99久久精品国产一区二区三区 | 国产高清一区 | 性高湖久久久久久久久3小时 | 99爱视频| 亚洲av毛片成人精品 | 日本亚洲欧美 | 亚洲精品电影在线观看 | 久久人人国产 | 成人免费影院 | 国产成人高清 | 免费人成在线观看网站 | 国偷自产av一区二区三区 | 亚洲理论在线观看电影 | 日韩精品在线一区 | 亚洲三区视频 | 国产女人精品视频 | 在线观看国产视频 | 天天弄| 91精品国产乱码久久久久久久久 | 91视频在线观看 | 日韩精品视频在线观看一区二区三区 | 男人午夜视频 | 国产高清在线精品 | 看特级黄色片 | 久久er精品 | 天天天天天天天干 | 国产午夜精品一区二区三区四区 | 久热精品在线观看视频 | 色婷婷久久久久swag精品 | 欧美视频成人 | 久久国产精品色av免费观看 | 51ⅴ精品国产91久久久久久 | 精品在线一区二区三区 | 99久久婷婷国产综合精品电影 | 91亚洲精选| 午夜免费视频 | 91 中文字幕| 国产高潮好爽受不了了夜色 | 亚洲精品不卡 |