為前端而戰-搭建統一開發環境

来源:http://www.cnblogs.com/xueming/archive/2017/10/16/unified-develop-env.html
-Advertisement-
Play Games

除了nodejs之外,後端技術(php/java等)及環境搭建一直都是大多數web前端開發人員的弱項,而且每當公司里進來一個新的前端開發人員,第一件事情要做的就是搭建開發環境,需要在新的電腦上安裝IDE、nodejs、npm以及團隊裡面需要用到的技術所需要的依賴,一般需要花費一兩天時間;另外,如果團 ...


  除了nodejs之外,後端技術(php/java等)及環境搭建一直都是大多數web前端開發人員的弱項,而且每當公司里進來一個新的前端開發人員,第一件事情要做的就是搭建開發環境,需要在新的電腦上安裝IDE、nodejs、npm以及團隊裡面需要用到的技術所需要的依賴,一般需要花費一兩天時間;另外,如果團隊里的後端技術不是nodejs,以php為例,做需求時難免要跑php來驗證自己的功能,又或者有涉及php代碼改動的話,就要想辦法聯調;而這樣的話就需要在自己本地搭建一個php環境給自己用,而我剛纔說了,這是前端開發人員的弱項,更何況有時候有些需求是後端要做系統變更的,那也得在自己的電腦上重新配置;為了不這麼麻煩,我們用到了虛擬機、vargrant或者docker,專業的人做專業的事情,環境變更了,就由後端開發人員重新build個鏡像給到前端覆蓋舊版使用。

  但是有沒有更加快速方便的辦法,因為我不僅想減少新員工的成本、還想在我更換一臺電腦的時候,也能快速進入開發(如果不能遠程桌面的話);於是我搭了一個統一開發環境,讓所有web前端開發人員(甚至是後端開發人員也可以用)共同使用一套開發環境,但各自的代碼可以互相隔離,於是我使用了一臺雲主機(當然是要用公司的,這樣才安全哈〜),如果你(們)的團隊也適用這樣的場景,也許可以參考一下

  OK,題外話就不再扯了,這裡介紹一個統一開發環境的設計思路,我們看圖說話,先看設計圖:

  

  接下來對著設計圖從上往下一步步來講:

  1、每個前端開發者(開發者A、B、C等)手上就是一臺電腦,在開發以及調試的時候都需要在瀏覽器輸入自己的地址來跑起自己的項目以及驗證;

  2、在跑起來之前,先在瀏覽器設置好一個cookie作為識別碼,例如我使用的是developer=coffee.huang,因為在瀏覽器在打開頁面時實際上所有的網路請求(包括當前頁面)都會帶上本域的cookie到服務端,而服務端就是我上面說到的雲主機,作為一個搭建統一開發環境的平臺;

  3、所有的請求去到了雲主機,於是其實我已經在雲主機上搭建好了所有伺服器環境,包括:php\nginx\mysql\git以及nodejs和npm(因為這樣的話,我其實可以直接在雲主機上進行前端代碼的打包了)等;

  4、所有到雲主機的請求首先抵到nginx,這時候nginx已經配置好了轉發器,根據cookie:developer=coffee.huang來轉發,把需要運行的php代碼轉發為coffee.huang的開發目錄;

  於是,根據以上的設計,如果有新員工來,只需要給在雲主機上給新員工創建一個登錄的帳號以及開發目錄,然後新員工在雲主機自己的目錄里,通過git命令把代碼拉下來,就可以進入開發了,當然也需要在自己的本地的電腦上裝一下sublime等IDE軟體、可以加個sftp插件,每次改代碼就可以自動上傳到雲主機對應自己的目錄中進行開發(重點說明:其實也可以不用sftp,我後來也在雲主機上安裝好了samba將雲主機上的開發者目錄共用給開發者,開發者就可以在自己電腦上新建一個目錄映射到雲主機,例如windows可以在“我的電腦”界面,直接使用“創建網路位置的功能”,就可以做到直接編緝雲主機上的代碼了);

  另外,這樣還有一個好處就是無論線上的php環境做了任何變更,只要把變更配置同步回這一臺雲主機,那麼所有人都相當於是自動使用了同一個跟線上環境一致的環境、節省大家的配置成本;而最重要的是,根據cookie來轉發,可以隔離各自的php的代碼,互不幹擾,因為雖然前端開發人員大多數時候不需要改動php代碼,但有大家同時進行不同的需求的時候,需要拉取來自不同git分支的php代碼。

  最後總結一下:

  1、統一開發環境是為了讓前端開發人員可以輕裝上陣,只專註前端開發;

  2、因為共用環境、所以只需要一次變更便可以讓所有人都用到了最新的環境配置;

  3、代碼隔離,開發人員使用各自的代碼共用同一套開發環境,並行開發而互不影響(事實上我在實際中把前端的自動化工具也裝到了雲主機上,所以無論前端代碼、後端代碼還有代碼提交等所有工作都可以直接在同一臺雲主機上進行而互不影響)

  最最後,值得註意的是:

  首先你(們)團隊需要有一臺雲主機(或者如果是一臺物理機就更好了);另外,統一開發環境要夠穩定或者做環境的備份及替換,就是說不能雲主機一旦掛了,就所有開發都立刻傻眼了,都得等著環境修複好才能繼續工作。

  最最最後,一句題外話:

  個人覺得,web前端工程師想成長得更好,到了一定階段後,就該把“web前端”去掉,往後端還有其他方面去橫向發展,能為自己和團隊創造得更多(這隻是我作為6年的web前端開發人員的經驗之談而已哈〜)。

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Lambda表達式(匿名函數)實現了一次執行且無污染的函數定義,是拋棄型函數並且不維護任何類型的狀態。閉包在匿名函數的基礎上增加了與外部環境的變數交互,通過 use 子句中指定要導入的外部環境變數。C字元串以空字元('\0')為結束標誌,這使得C字元串不能保存像圖片、音頻、視頻、壓縮文件這樣的二進位... ...
  • PS:本系列內容進度節奏會放的很慢,每次知識點都儘量少一點,這樣大家接觸的知識點少了,會更容易理解,因為少即是多。另外,對於後面代碼部分,雖然儘量不用那些複雜的封裝和類,但它並不表示看了就能全部記住,並懂得每個函數的用法,在什麼時候去調用,清楚它輸入的參數類型、能處理的參數類型和輸出的結果是什麼。它 ...
  • 使用 JPA 和 Hibernate 的好處之一是它提供了資料庫特定方言和功能抽象。 因此,理論上,您可以實現一個應用程式,將其連接到一個受支持的資料庫,並且它可以在不用更改任何代碼的情況下運行。Hibernate 真的很好。 但老實說,您沒有想過您的應用程式能與每個支持的資料庫完美運行,是嗎? ...
  • #include #include #include using namespace std; int main(){ double a,b,c; cout>a>>b>>c; if(a+b>c&&b+c>a&&c+a>b){ double s,area; s=(a+b+c)/2; area=sqrt... ...
  • 本節內容 - 通用可執行文件結構(COFF)(readelf -h) - COFF用段(section)存儲不同類型數據(readelf -S) - 常用段 - 演示:使用readelf、xxd、objdump、gdb查看可執行文件結構信息 - 演示:objcopy -add-section;st... ...
  • Given an array of n integers and q queries. Write a program to print floor value of mean in range l to r for each query in a new line. Input: The firs ...
  • #include #include using namespace std; //保留2位小數 int main(){ double x=123.456; double y=3.14159; double z=-3214.67; cout<<setiosflags(ios::fixed)<<seti... ...
  • Description:Java SE 9 is the latest update to the Java Platform(General Availability on 21 September 2017). This release includes much awaited new fea ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...