成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于拆分活動(dòng)頁(yè)為獨(dú)立倉(cāng)庫(kù)的一點(diǎn)思考

mengera88 / 517人閱讀

摘要:最近在寫公司活動(dòng)頁(yè)的時(shí)候,由于歷史原因,活動(dòng)頁(yè)跟公司的主站點(diǎn)放在同一個(gè)下,且活動(dòng)頁(yè)的訪問路徑也是在主站之后,并未多帶帶分配二級(jí)域名。

最近在寫公司 h5 活動(dòng)頁(yè)的時(shí)候,由于歷史原因,活動(dòng)頁(yè)跟公司的主站點(diǎn)放在同一個(gè) repo 下,且活動(dòng)頁(yè)的 url 訪問路徑也是在主站之后,并未多帶帶分配二級(jí)域名?,F(xiàn)在想著將活動(dòng)頁(yè)面項(xiàng)目多帶帶拆分出來(lái)。

現(xiàn)有小問題

現(xiàn)有項(xiàng)目中也有幾點(diǎn)不好在這也說(shuō)一下:

nginx 配置文件修改的頻率并不高,但是每次部署均需要覆蓋且重啟 nginx

配置均寫在同一份 nginx conf 中并不易于維護(hù)

其中,第一點(diǎn)是由于我司運(yùn)維統(tǒng)一使用 ansible 進(jìn)行項(xiàng)目部署,并未將 build projupload nginx 分為兩個(gè) task,在這里可以進(jìn)行一些優(yōu)化,解決方法就是拆分 task,分為多個(gè) npm script 執(zhí)行,例如:

{
  "deploy": "yarn run build:production && cd deploy && ansible-playbook -i inventory/xxx.com/ web.yml -t"run:web"",
  "deploy:nginx": "cd deploy && ansible-playbook -i inventory/xxx.com/ web.yml -t"run:nginx"",
}

這樣就可以解決多人合作中,如果有人提交 staging 環(huán)境測(cè)試,nginx 配置也會(huì)被同時(shí)更新的問題。

拆分獨(dú)立倉(cāng)庫(kù)的思考

對(duì)于 h5 和主站點(diǎn)的雜糅問題,目前我在做的是將 h5 拆分出來(lái),多帶帶維護(hù)主站點(diǎn)和 h5 站點(diǎn),給 h5 站點(diǎn)多帶帶配置二級(jí)域名且多帶帶寫一套生成發(fā)布系統(tǒng),類似腳手架卻不是腳手架,項(xiàng)目結(jié)構(gòu)如下:

.
├── Makefile       # 工程編譯規(guī)則
├── README.md      # 說(shuō)明文檔
├── bin            # 腳本命令
├── deploy         # 發(fā)布腳本
├── doc            # 說(shuō)明文檔
├── events         # h5 站點(diǎn)
│?? ├── active     # 正在運(yùn)行
│?? ├── archive    # 歸檔下線
│?? └── workspace  # 開發(fā)中
├── lib            # 腳本函數(shù)
├── package.json
├── template       # h5 項(xiàng)目模板
└── utils          # 通用函數(shù)

在最初我的設(shè)想其實(shí)并不是這樣,而是考慮到 h5 的時(shí)效性,想做完用完即扔(果然太年輕)。這樣的做法最大的弊端就是無(wú)法多人合作和進(jìn)行 code review。對(duì)于特別簡(jiǎn)單的頁(yè)面可以勉強(qiáng)完成,但是稍微復(fù)雜的需要質(zhì)量的 h5 頁(yè)面,就需要我們?nèi)ミM(jìn)行嚴(yán)格的 code review 了。

將之前的想法放棄之后,想到將每個(gè)活動(dòng)頁(yè)都作為一個(gè)倉(cāng)庫(kù)提交 github 并不現(xiàn)實(shí),所以就想到了這個(gè)文件夾即狀態(tài)的方法,將活動(dòng)頁(yè)面分為三類:開發(fā)中、歸檔(已下線)、活躍(線上)。如此一來(lái),我們可以用腳本來(lái)統(tǒng)一管理,讓我們來(lái)走一遍流程:

# 創(chuàng)建一個(gè)新的 event(也就是活動(dòng)頁(yè))
make create

# 歸檔 event
make archive # from active/ -> archive/

# 部署上線 event
make active # from workspace/ -> active/

當(dāng)然這只是最基本的邏輯,對(duì)于已經(jīng)歸檔的活動(dòng)重新上線,另說(shuō)。

目前,網(wǎng)站項(xiàng)目有三種構(gòu)建方案:

Node.js 專用構(gòu)建工具(Grunt、Gulp、Brunch、Broccoli、Mimosa)

npm script 命令

Makefile

第一種方案插件語(yǔ)法太過(guò)繁雜,不如方案二和三簡(jiǎn)便,且存在版本問題。方案二則可以看作方案三的變種,根據(jù)喜好選擇即可。

我選擇 Makefile 的原因也很簡(jiǎn)單,就是作為唯一入口。通過(guò)構(gòu)建命令來(lái)調(diào)用我寫好的腳本命令:

.PHONY: help
help:
    @echo "Usage: make "
    @echo "The commands are:"
    @echo "    install            Install npm dependences"
    @echo "    create            Create an event"
    @echo "    archive            Archive events"
    @echo "    lint-dev            Lint zeus source code"
  # ...

.PHONY: all
all: help

.PHONY: install
install:
    @npm install &>/dev/null

.PHONY: create
create: install
    @node ./bin/create.js

.PHONY: create
archive: install
    @node ./bin/archive.js

.PHONY: lint
lint-dev: install
    @./node_modules/.bin/eslint . --fix

# ...

可以說(shuō)很是直觀,也并不會(huì)存在忘掉 npm i 等令人窒息的操作了。

部署

可以使用 nginx 通配符來(lái)匹配目標(biāo)活動(dòng)頁(yè)路徑,再也不用手動(dòng)多次添加 location xxx {} 了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108600.html

相關(guān)文章

  • 《微服務(wù)設(shè)計(jì)》讀書筆記(關(guān)于微服務(wù)一點(diǎn)想法)

    摘要:而微服務(wù)將這個(gè)理念應(yīng)用在獨(dú)立的服務(wù)上。微服務(wù)對(duì)比與原來(lái)的單體應(yīng)用,有它的優(yōu)勢(shì),如服務(wù)的自治性增強(qiáng)但同時(shí)也會(huì)帶來(lái)一些其他問題,如性能復(fù)雜度等問題。想要使用微服務(wù),首先是要清楚哪些業(yè)務(wù)或者功能應(yīng)該成為單獨(dú)的服務(wù)。其次,考慮業(yè)務(wù)極有可能的變化。 1、在學(xué)習(xí)軟件構(gòu)造、設(shè)計(jì)相關(guān)知識(shí)時(shí),大家應(yīng)該有學(xué)習(xí)到內(nèi)聚性的概念:即把因相同原因而變化的東西聚合到一起,而把因不同原因而變化的東西分離開來(lái)。而 微服...

    lpjustdoit 評(píng)論0 收藏0
  • CSS3-Animotion抽絲剝繭 一步步擼出跑男動(dòng)畫

    摘要:通過(guò)剖析一個(gè)跑男動(dòng)畫實(shí)例,來(lái)把中動(dòng)畫相關(guān)的知識(shí)點(diǎn)抽絲剝繭,一網(wǎng)打盡。跑男的動(dòng)畫其實(shí)可以拆分為兩個(gè)一個(gè)是交替擺腿另一個(gè)是位置移動(dòng)。在使用改變雪碧圖時(shí),得到效果這樣的平滑過(guò)度顯然不是我們想要的。所以,在切換雪碧圖背景的方案下,就要派上用場(chǎng)了。 作為一名真正的前端開發(fā)者,我們不能只關(guān)注前端邏輯部分。畢竟水銀泄地般的頁(yè)面設(shè)計(jì)和炫酷逼真的動(dòng)畫效果,是我們區(qū)別于其他程序員所特有的優(yōu)勢(shì)之一。 盡量百...

    caoym 評(píng)論0 收藏0
  • CSS3-Animotion抽絲剝繭 一步步擼出跑男動(dòng)畫

    摘要:通過(guò)剖析一個(gè)跑男動(dòng)畫實(shí)例,來(lái)把中動(dòng)畫相關(guān)的知識(shí)點(diǎn)抽絲剝繭,一網(wǎng)打盡。跑男的動(dòng)畫其實(shí)可以拆分為兩個(gè)一個(gè)是交替擺腿另一個(gè)是位置移動(dòng)。在使用改變雪碧圖時(shí),得到效果這樣的平滑過(guò)度顯然不是我們想要的。所以,在切換雪碧圖背景的方案下,就要派上用場(chǎng)了。 作為一名真正的前端開發(fā)者,我們不能只關(guān)注前端邏輯部分。畢竟水銀泄地般的頁(yè)面設(shè)計(jì)和炫酷逼真的動(dòng)畫效果,是我們區(qū)別于其他程序員所特有的優(yōu)勢(shì)之一。 盡量百...

    OBKoro1 評(píng)論0 收藏0
  • CSS3-Animotion抽絲剝繭 一步步擼出跑男動(dòng)畫

    摘要:通過(guò)剖析一個(gè)跑男動(dòng)畫實(shí)例,來(lái)把中動(dòng)畫相關(guān)的知識(shí)點(diǎn)抽絲剝繭,一網(wǎng)打盡。跑男的動(dòng)畫其實(shí)可以拆分為兩個(gè)一個(gè)是交替擺腿另一個(gè)是位置移動(dòng)。在使用改變雪碧圖時(shí),得到效果這樣的平滑過(guò)度顯然不是我們想要的。所以,在切換雪碧圖背景的方案下,就要派上用場(chǎng)了。 作為一名真正的前端開發(fā)者,我們不能只關(guān)注前端邏輯部分。畢竟水銀泄地般的頁(yè)面設(shè)計(jì)和炫酷逼真的動(dòng)畫效果,是我們區(qū)別于其他程序員所特有的優(yōu)勢(shì)之一。 盡量百...

    bingo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<