如何從 Node.js 程式結束

了解如何以最佳方式終止 Node.js 應用程式 有多種方式可以結束 Node.js 應用程式。 在控制台中運行程式時,可以使用 Ctrl-C 來關閉它,但我想在這裡討論的是程式化的結束。 讓我們從最極端的方式開始,並看看為什麼最好不要使用它。 process 核心模組提供了一個便捷的方法,可以讓你程式化地退出 Node.js 程式:process.exit()。 當 Node.js 執行這一行時,進程立即被強制結束。 這意味著任何待處理的回調、任何仍在發送的網絡請求、任何檔案系統訪問或寫入到 stdout 或 stderr 的進程 - 都會立即不正常地終止。 如果對你來說這沒問題,你可以傳遞一個整數來向操作系統傳遞退出代碼: process.exit(1) 默認的退出代碼是 0,表示成功。不同的退出代碼有不同的含義,你可能想在自己的系統中使用它們來使程式與其他程式通信。 你可以在 https://nodejs.org/api/process.html#process_exit_codes 中閱讀更多有關退出代碼的信息。 你也可以設定 process.exitCode 屬性: process.exitCode = 1 當程式最終結束時,Node 會返回該退出代碼。 程式將在所有處理完成後正常退出。 在 Node 中,我們經常開始伺服器,就像這個 HTTP 伺服器一樣: const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hi!') }) app.listen(3000, () => console.log('伺服器已啟動')) 這個程式永遠不會結束。如果你調用 process.exit(),任何當前待處理或正在運行的請求都會被中止。這是不好的。 在這種情況下,你需要向程式發送 SIGTERM 信號,並使用進程信號處理器來處理它: 注意:process 不需要使用 “require”,它自動可用。...

如何從 shell 中刪除「Last login..」訊息

每次打開我的 shell 都會出現這樣一行訊息: 對我來說是一個沒有用的資訊。 我想要把它刪除。 我執行了以下指令以刪除「Last login: ….」的資訊: touch ~/.hushlogin 完成! 這個方法適用於 macOS 和 Linux。

如何從 Svelte 組件導出函數和變數

學習如何從 Svelte 組件導出函數和變數 你知道可以使用以下語法將一個 Svelte 組件導入另一個組件中: <script> import Button from './Button.svelte'; </script> 如果你想要導出更多東西呢? 那麼你必須在組件中使用特殊的 script 標籤,並添加 context="module" 屬性進行導出。 以下是一個示例。假設你有一個名為 Button.svelte 的 Button 組件: <button>A button</button> 而且你希望其他組件能夠修改該按鈕的顏色。你可以使用 props,這只是一個示例。或者你可以提供一個名為 changeColor 的函數。 你可以在這個特殊的 script 標籤中編寫並導出它: <script context="module"> export function changeColor() { //...添加邏輯... } </script> <button>A button</button> 警告:我沒有實現實際的功能,但你可以理解這個示例。 需要注意的是,你可以在組件中添加另一個“普通”的 script 標籤。 現在其他組件可以導入 Button(默認導出)和 changeColor 函數: <script> import Button, { changeColor } from './Button.svelte' </script>

如何從JavaScript日期獲取月份名稱

給定一個JavaScript Date對象實例,如何獲取代表月份名稱的字符串呢? 換句話說,從 const today = new Date() 我們如何得到月份名稱? 每個Date對象實例都有一個toLocaleString()方法,它是JavaScript國際化方法之一。 使用這個方法,你可以根據當前的語言環境得到月份名稱,以下是如何使用它: const today = new Date() today.toLocaleString('default', { month: 'long' }) 根據你的語言環境,你會得到不同的結果。我得到的結果是“十月”。 如果使用"short"格式,我得到的結果是“10月”: today.toLocaleString('default', { month: 'short' }) 第一個參數是語言環境,我們傳遞"default"字符串,你可以傳遞任何你想要的語言環境,例如"it-IT"將返回"ottobre": const today = new Date() today.toLocaleString('it-IT', { month: 'long' })

如何從Node.js讀取環境變數

學會如何在Node.js程序中讀取和使用環境變數。 環境變數非常有用,因為我們可以避免在代碼中輸入API密鑰和其他敏感數據,並且將其錯誤地提交到GitHub中。 現代部署平台如Vercel和Netlify(以及其他平台)都有方法讓我們通過它們的界面添加環境變數。 Node.js的process核心模塊提供了env屬性,該屬性包含了在啟動進程時設置的所有環境變數。 下面是一個示例,訪問了NODE_ENV環境變數,該變數默認設置為development。 注意:process不需要“require”,它會自動可用 process.env.NODE\_ENV // "development" 將其設置為“production”之前,運行腳本將告訴Node這是一個生產環境。 同樣,您可以訪問所設置的任何自定義環境變數。 這裡為API_KEY和API_SECRET設置了2個變量。 API\_KEY=123123 API\_SECRET=456456 node app.js 我們可以通過以下方式在Node.js中獲取它們。 process.env.API\_KEY // "123123" process.env.API\_SECRET // "456456" 您可以將環境變數寫入.env文件(應將其添加到.gitignore中以防止提交到GitHub),然後運行以下命令。 npm install dotenv 在您的主要Node文件的開頭,添加以下代碼。 require('dotenv').config() 通過這種方式,您可以避免在node命令之前在命令行中列出環境變數,這些變數將自動被應用程序使用。 注意:某些工具,例如Next.js,會自動將在.env中定義的環境變數提供給程序,而不需要使用dotenv。

如何從命令行打開 VS Code

安裝 VS Code 命令行工具的簡單指南 我寫這篇博客文章是因為我正在設置一台新的 Mac,遇到了一些我習以為常的小問題,在首次安裝 VS Code(我最喜歡的編輯器!)時,這些功能並不是默認提供的。 我習慣於在終端中輸入 code 文件夾名稱 來打開 VS Code 中的文件夾。或者 code 文件名 來打開一個文件。 今天,我自動地按照這樣的方式操作,但是卻出現了“命令未找到”的錯誤! 我不得不進入 VS Code,按下 cmd-option-P(或者從菜單中選擇 View -> Command Palette),然後搜索“command”,我找到了以下選項: Shell Command: Install 'code' command in PATH 我按下了回車鍵,現在命令在終端中可以使用了。 開心地進行編程吧!

如何從零開始設置 Git 和 GitHub

一個從零開始設置 Git 和 GitHub 的教程 Git 是一個非常有價值的工具。 它允許我們在項目上工作數月或數年,但仍然能夠回到我們在代碼庫上做出的每一次個別變更。在團隊中,你還可以找出是誰進行了更改。 每次我們進行更改、添加新功能或修復錯誤時,我們都會添加一個小的解釋,然後我們提交這些更改。 它還允許我們與團隊合作,因為每個人都可以將提交推送到代碼庫,Git 會負責確保與其他人所做的更改沒有衝突。 在繼續之前,你需要在你的電腦上安裝 Git。 最簡單的方法是安裝GitHub Desktop應用程序。 它適用於 Windows 和 Mac,你可以在這裡下載它: GitHub Desktop 這將安裝一個用於使用 Git 的圖形用戶界面,同時也安裝了 Git 本身。 它與 GitHub 緊密集成。 GitHub 是什麼?🤔 它是一個用於托管代碼並讓你在開源項目上協作的網站,你將在這個項目的所有實例中使用它,而且這也是你將看到我發佈的項目代碼的地方。 安裝完畢後,打開應用程序。 點擊“Create your free account”。你會被帶到 GitHub 上創建一個帳戶: 明智地選擇用戶名,你將擁有一個公開的 GitHub 頭像,就像我在這裡: https://github.com/flaviocopes 確認你的電子郵件後,你會看到一個畫面,點擊“Skip personalization”並選擇自由計劃: 最後,你進入了: 現在回到 GitHub Desktop 應用程序,點擊“Sign in to GitHub.com”,即藍色按鈕: 最後,你準備配置 Git。接受這一點以設置 Git 的用戶名和電子郵件,這是你創建提交所需要的。點擊“Finish”。 安裝此應用程序同時也安裝了 Git,所以你不需要再做其他任何操作。 注意:如果你喜歡,你可以從這裡下載“只有 Git”https://git-scm.com/downloads,這將跳過 GitHub 的集成。使用這種方法,你需要使用下面這兩個命令在終端中設置你的名字和電子郵件: git config --global user.name "你的名字" git config --global user....

如何深度複製 JavaScript 物件

在 JavaScript 中,有許多方法可以複製物件,但並非所有方法都提供深層複製。本文將介紹最有效的方式,並提供所有可用的選項。 2022年更新:只需使用structuredClone()方法進行複製。詳見如何在 JavaScript 中複製物件 在 JavaScript 中複製物件可能會很棘手。有些方法會執行淺層複製,這是大多數情況下的預設行為。 深層複製 vs 淺層複製 最簡單的選項:使用 Lodash 使用 Object.assign() 使用物件展開運算子 錯誤的解決方案 使用 Object.create() JSON序列化 深層複製 vs 淺層複製 淺層複製能成功複製原始類型,如數字和字串,但是任何物件引用都不會被遞迴複製,而是新複製的物件將引用相同的物件。 如果物件包含其他物件的引用,在對該物件進行淺層複製時,只會複製對外部物件的引用。 而在深層複製中,這些外部物件也會被複製,因此新複製的物件與原始物件完全獨立。 當在網路上搜尋如何在 JavaScript 中深度複製物件時,你會找到很多回答,但這些回答並不總是正確的。 最簡單的選項:使用 Lodash 我建議你依賴於一個經過良好測試、非常受歡迎且精心維護的庫來執行深度複製:Lodash。 Lodash 提供了非常方便的 clone 和 cloneDeep 函數可以執行淺層和深度複製。 Lodash 還具有一個很好的特性:你可以單獨導入單個函數到你的項目中,以大大減少其依賴的大小。 在 Node.js 中: const clone = require('lodash/clone') const cloneDeep = require('lodash/cloneDeep') 以下是使用這兩個函數的示例: const clone = require('lodash/clone') const cloneDeep = require('lodash/cloneDeep') const externalObject = { color: 'red', } const original = { a: new Date(), b: NaN, c: new Function(), d: undefined, e: function () {}, f: Number, g: false, h: Infinity, i: externalObject, } const cloned = clone(original) externalObject....

如何添加 Git 遠端位置

今天我在刪除 Git 遠端位置後,不得不將一個遠端位置新增回 Git 存儲庫,為了一些我不打算與您討論的原因。 然後我使用以下命令將新的 Git 遠端位置新增到 GitHub 存儲庫: git remote add origin [[email protected]](/cdn-cgi/l/email-protection):flaviocopes/myrepo.git 將 flaviocopes/myrepo 更改為您的 GitHub URL。 完成!

如何添加簡單的暗黑模式

我使用以下幾行CSS代碼來為我的網站應用暗黑模式: @media (prefers-color-scheme: dark) { body { filter: invert(100%); background-color: rgb(29, 32, 31) !important; } img, .astro-code, .emoji, iframe /* for recaptcha */ { filter: invert(100%) !important; } } 看起來非常好!