那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Node環(huán)境中運(yùn)行JavaScript應(yīng)用程序的示例

馬哥Linux運(yùn)維 ? 來源:CSDN ? 作者:Santhosh Sundar ? 2021-06-24 16:12 ? 次閱讀

長(zhǎng)話短說,你可以使用 Docker 和 VS Code 的遠(yuǎn)程容器來建立一個(gè)容器化的本地開發(fā)環(huán)境,這樣就可以讓團(tuán)隊(duì)成員盡快完成入門培訓(xùn)。你不僅可以在所有環(huán)境中使用同一個(gè)基礎(chǔ)鏡像,而且還可以為所有開發(fā)人員提供相同的編輯器,此外還更容易標(biāo)準(zhǔn)化實(shí)現(xiàn)。但這種方法并非適合所有人,如果你不喜歡 VS Code 作為代碼編輯器的話,則可以跳過本文,除非你想嘗試一下。為團(tuán)隊(duì)設(shè)置本地開發(fā)環(huán)境時(shí),我們所面臨的挑戰(zhàn)之一就在于,確保所有開發(fā)人員的設(shè)置都相同或者能夠滿足需求。這個(gè)問題常見的解決方法是制定入門指南,并希望開發(fā)人員遵循這些指南。但是,由于版本兼容性問題和個(gè)人經(jīng)驗(yàn)等問題,導(dǎo)致我們無法使用正確的工具,因此實(shí)現(xiàn)統(tǒng)一的環(huán)境設(shè)置實(shí)則困難重重。

另外一種解決方案是,準(zhǔn)備一個(gè)預(yù)先配置好的開發(fā)環(huán)境,其中包含了所有必需的庫及依賴項(xiàng),該環(huán)境可以直接作為容器啟動(dòng)。這樣,開發(fā)人員就可以在容器提供的隔離環(huán)境中工作了。這種方式可以極大地減少開發(fā)人員花費(fèi)在克隆代碼庫上的時(shí)間。

除了為所有開發(fā)人員提供相同的環(huán)境之外,我們還可以在 Visual Studio Code 中使用同一套工具、擴(kuò)展甚至主題集。盡管這不是必須的,但我們可以利用它來自動(dòng)安裝項(xiàng)目所需的特定擴(kuò)展。這種方式可以避免工具的不一致,而且開發(fā)人員也可以免卻手動(dòng)安裝的麻煩。

所有這些工作都可以通過Docker 與 VS Code 的 Remote-Containers 擴(kuò)展的結(jié)合來實(shí)現(xiàn)。

設(shè)置

在本文中,我將展示一個(gè)在 Node 環(huán)境中運(yùn)行 JavaScript 應(yīng)用程序的示例。有關(guān)的詳細(xì)說明請(qǐng)參見官方文檔(https://code.visualstudio.com/docs/remote/containers)。

首先安裝Docker 和 VS Code,然后在 VS Code 中安裝 Remote — Containers 擴(kuò)展,并確保Docker 可在你的機(jī)器上正常運(yùn)行。

打開項(xiàng)目,在根目錄下創(chuàng)建一個(gè)名為 .devcontainer 的文件夾。這個(gè)新文件夾內(nèi)包含開發(fā)容器所需的配置文件。

在 .devcontainer 中創(chuàng)建 Dockerfile 和 devcontainer.json,并添加以下配置。

# Specify the base image you want your dev container to use.

# You may use the same exact base image your application would use in production for consistancy.

# That could prevent surprises such as “works in local, but not in PROD”.FROM node:14.17.0-alpine

# Additionally you can install other dependencies for the environment while configuring the base image.# In this example, I am installing Git as the Alpine version of node does not come with one.

RUN apk updateRUN apk add git

{“name”: “DevContainer ReactApp”,

// Provide the dev container with a Dockerfile that it can use to build an image and run the container.“dockerFile”: “Dockerfile”,

// Command(s) to run before the container is created.// In this case we are installing the node modules.“initializeCommand”: “yarn install”,

// Starts the development server every time the container starts.// This is triggered on reopening the container as well.“postStartCommand”: “yarn start”,

// Forward your application‘s port(s) running in the container to the local machine.“forwardPorts”: [3000],

// Required VSC code extensions that you want to automatically install for the developers to use.

“extensions”: [“dbaeumer.vscode-eslint”,“esbenp.prettier-vscode”,“eamodio.gitlens”]// Use the devcontainer.json reference to explore all possible configurations.// https://code.visualstudio.com/docs/remote/devcontainerjson-reference}

在完成上述工作后,我們來構(gòu)建容器。首先,點(diǎn)擊VS Code 命令面板中的“Open Folder in Container”或“Reopen in Container”。

這一步是初始化開發(fā)容器,拉取 Docker 基礎(chǔ)鏡像、配置容器,然后啟動(dòng)開發(fā)服務(wù)器。

完成這一步,你就應(yīng)該能夠在瀏覽器中訪問應(yīng)用程序,并正常使用 VS Code 進(jìn)行開發(fā)了。就連熱重載都能正常工作!我創(chuàng)建了一個(gè)代碼庫(https://github.com/Gigacore/devcontainer-react-example),其中包含一個(gè)示例,你可以嘗試一下!

容器的構(gòu)建和配置只需要執(zhí)行一次,但是需要一定的時(shí)間。以后如果不發(fā)生變化,那么重建會(huì)更快。但是,如果 devcontainer.json 或 Dockerfile 發(fā)生變化,則需要重新構(gòu)建。如果你嘗試直接重新打開,系統(tǒng)會(huì)提示你重建。

在退出容器或 VS Code 后,下一次可以通過 ”Reopen in Container” 選項(xiàng)重新進(jìn)入容器。該選項(xiàng)會(huì)啟動(dòng)已配置的容器,并再次啟動(dòng)開發(fā)服務(wù)器。如果VS Code 在代碼庫中找到 .devcontainer 配置,則會(huì)自動(dòng)提示你啟動(dòng)容器。

容器和本地計(jì)算機(jī)之間的文件系統(tǒng)是同步的,因此你可以通過任一環(huán)境訪問代碼。

你可以運(yùn)行任意多個(gè)應(yīng)用程序,即便它們需要不同版本依賴項(xiàng),而無需在計(jì)算機(jī)上安裝或修改任何應(yīng)用程序。

團(tuán)隊(duì)中的任何人都可以在自己的計(jì)算機(jī)上運(yùn)行應(yīng)用程序,編寫和審核代碼,或者做一些嘗試,包括非技術(shù)成員。

應(yīng)用程序的運(yùn)行不需要依賴操作系統(tǒng)

常見問題和解決方法

你可以利用 VS Code 終端運(yùn)行任何腳本或命令,因?yàn)樗驮谌萜鞯墓ぷ鲄^(qū)中。但是如果想使用macOS 的“Terminal”等其他工具,則需要找到容器,然后執(zhí)行docker exec。

由于應(yīng)用程序在 Docker 容器內(nèi)運(yùn)行,因此它可以使用的資源(CPU、內(nèi)存等)很有限。默認(rèn)限制在大多數(shù)情況下都沒有問題。但是,對(duì)于有些應(yīng)用程序,你可能需要在Docker選項(xiàng)中提高這些資源限制,以避免發(fā)生卡頓現(xiàn)象。

并非適合所有人

雖然這種做法可以降低構(gòu)建開發(fā)環(huán)境的難度,但是對(duì)于需要在容器范圍之外的環(huán)境中進(jìn)行廣泛集成和配置的應(yīng)用程序來說并不理想。

高級(jí)用戶和經(jīng)驗(yàn)豐富的開發(fā)人員可能不太喜歡這種方式,特別是有些人更喜歡其他代碼編輯器。這種設(shè)置方式可以作為備選,不要強(qiáng)迫開發(fā)人員運(yùn)行容器,他們?nèi)匀豢梢允謩?dòng)設(shè)置環(huán)境。

如果應(yīng)用程序占用了大量資源,則運(yùn)行 Docker 容器可能會(huì)消耗更多資源。

總結(jié)

這是一個(gè)相對(duì)較新的概念,有許多地方需要探索,而且也有很多限制需要解決。我個(gè)人很喜歡這種方式,而且也比較推薦。如果你也采用了這種方式,請(qǐng)?jiān)谙路搅粞苑窒砟愕慕?jīng)驗(yàn)。

原文鏈接:https://santhoshsundar.medium.com/building-container-based-development-environment-with-visual-studio-code-2d7111c650bd

作者 | Santhosh Sundar 譯者 | 彎月 責(zé)編 | 歐陽姝黎

文章轉(zhuǎn)載:CSDN

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    499

    瀏覽量

    22125
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4828

    瀏覽量

    69063

原文標(biāo)題:利用 VS Code 構(gòu)建基于容器的開發(fā)環(huán)境

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Bun 1.2震撼發(fā)布:全力挑戰(zhàn)Node.js生態(tài)的JavaScript運(yùn)行時(shí)新星

    了與 Node.js 的兼容性,還為開發(fā)者帶來了內(nèi)置的數(shù)據(jù)庫支持和云服務(wù)集成能力,進(jìn)一步強(qiáng)化了其“全能工具包”的定位。Node.js 兼容性獲得突破性進(jìn)展在此次更新,最引人注目的是 Bun
    的頭像 發(fā)表于 01-24 10:42 ?105次閱讀
    Bun 1.2震撼發(fā)布:全力挑戰(zhàn)<b class='flag-5'>Node</b>.js生態(tài)的<b class='flag-5'>JavaScript</b><b class='flag-5'>運(yùn)行</b>時(shí)新星

    android手機(jī)上emulate應(yīng)用程序的方法

    Android手機(jī)上模擬(emulate)應(yīng)用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環(huán)境,以便在沒有實(shí)際物理設(shè)備的情況下運(yùn)行
    的頭像 發(fā)表于 12-05 15:33 ?480次閱讀

    使用OpenVINO? ElectronJS創(chuàng)建桌面應(yīng)用程序

    的用戶體驗(yàn)。 1 應(yīng)用程序概覽:一種簡(jiǎn)單的背景虛化方法 這個(gè)演示展示了如何在 Node.js 環(huán)境中使用 OpenVINO 工具包實(shí)現(xiàn)背景虛化,并通過 Electron.js 創(chuàng)建的直觀桌面界面進(jìn)行
    的頭像 發(fā)表于 11-25 11:35 ?255次閱讀
    使用OpenVINO? ElectronJS<b class='flag-5'>中</b>創(chuàng)建桌面<b class='flag-5'>應(yīng)用程序</b>

    Node.js小科普和Node.js安裝常見管理工具

    Node.js是一個(gè)JavaScript運(yùn)行環(huán)境,用來執(zhí)行JavaScript代碼。 為什么會(huì)出現(xiàn)這么一個(gè)
    的頭像 發(fā)表于 11-23 15:37 ?161次閱讀
    <b class='flag-5'>Node</b>.js小科普和<b class='flag-5'>Node</b>.js安裝常見管理工具

    Docker運(yùn)行環(huán)境安裝

    、發(fā)布、測(cè)試和部署,可以幫助開發(fā)人員將最新版本代碼應(yīng)用到生產(chǎn)環(huán)境。 Docker可以安裝在多個(gè)平臺(tái)中,包括Mac、Windows和Linux。不過,生產(chǎn)環(huán)境還是推薦Linux上
    的頭像 發(fā)表于 10-29 11:28 ?278次閱讀

    TMS320C6000 DMA示例應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000 DMA示例應(yīng)用程序.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 10:17 ?0次下載
    TMS320C6000 DMA<b class='flag-5'>示例</b><b class='flag-5'>應(yīng)用程序</b>

    PCM2912A應(yīng)用程序的操作環(huán)境

    電子發(fā)燒友網(wǎng)站提供《PCM2912A應(yīng)用程序的操作環(huán)境.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:53 ?1次下載
    PCM2912A<b class='flag-5'>應(yīng)用程序</b>的操作<b class='flag-5'>環(huán)境</b>

    PCM2912應(yīng)用程序的操作環(huán)境

    電子發(fā)燒友網(wǎng)站提供《PCM2912應(yīng)用程序的操作環(huán)境.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:33 ?0次下載
    PCM2912<b class='flag-5'>應(yīng)用程序</b>的操作<b class='flag-5'>環(huán)境</b>

    工程師必備!Node.js和常見管理工具介紹(附操作演示)

    現(xiàn)代軟件開發(fā)JavaScript已成為一種廣泛使用的編程語言,web前端開發(fā)、后端開發(fā)、移動(dòng)應(yīng)用端開發(fā)等領(lǐng)域中都有它的身影。本文中
    的頭像 發(fā)表于 08-30 12:34 ?357次閱讀
    工程師必備!<b class='flag-5'>Node</b>.js和常見管理工具介紹(附操作演示)

    Node-RED安裝本地教程

    Node-RED是一個(gè)基于流的開發(fā)工具,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)、家庭自動(dòng)化和其他數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序。它通過圖形化的編程界面,使得非專業(yè)程序員也能輕松上手。本文將介紹如何在本地環(huán)境
    的頭像 發(fā)表于 06-24 12:10 ?2270次閱讀
    <b class='flag-5'>Node</b>-RED安裝本地教程

    一個(gè)新的積木編程工具:Node-App

    基于Arduino,或microPython的代碼,生成的程序能在硬件上運(yùn)行Node-App的不同在于,其生成的是瀏覽器上運(yùn)行的網(wǎng)頁Ap
    發(fā)表于 05-28 15:55

    無法示例以太網(wǎng)應(yīng)用程序添加任何printf或使用UART,為什么?

    你好,我無法示例以太網(wǎng)應(yīng)用程序添加任何 printf 或使用 UART。 如果我在那里添加任何東西,它就會(huì)崩潰 從以太網(wǎng)接收數(shù)據(jù)后,我需要處理數(shù)據(jù),但如果我嘗試做任何事情,
    發(fā)表于 05-27 08:24

    鴻蒙開發(fā)接口公共事件與通知:【FFI能力(Node-API)】

    Node-API是封裝底層JavaScript運(yùn)行時(shí)能力的一套Native接口。OpenHarmony的N-API組件對(duì)Node-API的接口進(jìn)行了重新實(shí)現(xiàn),ArkUI-X同樣擁有這部
    的頭像 發(fā)表于 05-21 16:38 ?1047次閱讀
    鴻蒙開發(fā)接口公共事件與通知:【FFI能力(<b class='flag-5'>Node</b>-API)】

    應(yīng)用程序的服務(wù)器錯(cuò)誤怎么解決?

    使用應(yīng)用程序時(shí),可能會(huì)遇到服務(wù)器錯(cuò)誤的問題。這種錯(cuò)誤通常會(huì)導(dǎo)致應(yīng)用程序無法正常運(yùn)行 ,給用戶帶來不便。下面將介紹應(yīng)用程序
    的頭像 發(fā)表于 03-12 15:13 ?6519次閱讀

    使用PSoc6Modus工具箱創(chuàng)建一個(gè)示例應(yīng)用程序時(shí),終端報(bào)錯(cuò)的原因?

    你好, 每當(dāng)我嘗試使用 PSoc6 Modus 工具箱創(chuàng)建一個(gè)示例應(yīng)用程序時(shí),我的終端都會(huì)顯示以下兩個(gè)錯(cuò)誤。 有人有什么建議嗎? 1) make[1]:*** [../mtb_s
    發(fā)表于 03-04 07:01
    百家乐官网最稳妥的打法| 金川县| 电玩城百家乐技巧| 百家乐官网对付抽水| 莆田棋牌游戏中心| 澳门百家乐现场游戏| 真人百家乐官网蓝盾娱乐平台| 永利博线上娱乐| 娱乐网百家乐的玩法技巧和规则 | 地理风水24山72局杨公水法| 百家乐官网怎么推算| 大发888游戏网页版| 百家乐优博u2bet| 娱乐城送钱| 沙龙百家乐娱乐场开户注册 | 网上大发扑克| 贵宾百家乐的玩法技巧和规则| 玩百家乐官网去哪个娱乐城最安全 | 大发娱乐城开户| 网上玩百家乐的玩法技巧和规则| 百家乐官网大| 澳门百家乐官网国际娱乐城| 百家乐真钱游戏| KK百家乐娱乐城| 百家乐代理龙虎| 钱隆百家乐官网分析| 优博在线| 百家乐正负计算| 平台百家乐的区别| 国美百家乐官网的玩法技巧和规则 | 景谷| 大发888娱乐场游戏| 百家乐赌场代理| 做生意看风水| 网络百家乐官网大转轮| 百家乐官网获胜秘决| 永盈会娱乐场官网| 百家乐赌台| 百家乐庄闲符号记| 百家乐优惠高的网址| 怎样打百家乐官网的玩法技巧和规则|