如何設置 Node.js 程式的當前工作目錄

了解如何使用Node.js無需任何依賴庫來提供index.html的HTML頁面。 我在我的一個Node.js程式中遇到了這個問題。 我使用相對路徑來引用本地文件系統中的一些文件,就像這樣: ../../dev/file.md 如果我從該文件所在的文件夾運行該程式,沒有問題。 但是如果我從另一個文件夾運行該文件,例如父文件夾,相對鏈接將失效。 為了修復這個問題,在程序的開頭,我設置了 const process = require('process') process.chdir(__dirname) 這將將進程的當前工作目錄設置為__dirname,它指向當前文件的父文件夾路徑。

如何設置PHP

在本地機器上安裝PHP有很多種方法。 我發現最方便的安裝方式是使用MAMP。 MAMP是一個可以免費使用的工具,適用於所有操作系統——Mac、Windows和Linux。它提供了您運行PHP所需的所有工具。 PHP是由HTTP服務器運行的,HTTP服務器負責響應由瀏覽器發出的HTTP請求。因此,您使用瀏覽器(如Chrome、Firefox或Safari)訪問URL,HTTP服務器會響應一些HTML內容。 服務器通常是Apache或nginx。 然後,如果您要進行任何非平凡的操作,您需要一個數據庫,例如MySQL。 MAMP是一個提供所有這些功能的包,並且以統一的界面讓您一次啟動/停止所有工具。 當然,您也可以獨立地設置每個組件,許多教程都詳細解釋了如何進行這樣的設置,但我喜歡簡單實用的工具,而MAMP就是其中之一。 您可以使用任何類型的PHP安裝方法遵循本手冊。 也就是說,如果您尚未安裝PHP並且希望使用MAMP,請轉到 https://www.mamp.info 並安裝它。 具體的安裝步驟將取決於您的操作系統,但一旦安裝完成,您將會擁有一個名為"MAMP"的應用程序。 啟動該應用程序,您將看到一個類似於下面的窗口: 確保選擇的PHP版本是最新的。 在撰寫本文時,MAMP允許您選擇8.0.8版本。 注意:我注意到MAMP的版本有點落後,不是最新的。您可以通過啟用MAMP PRO試用版來安裝更高版本的PHP,然後從MAMP PRO設置中安裝最新版本(在我的情況下是8.1.0),然後關閉它並重新打開MAMP(非專業版)。MAMP PRO具有更多功能,因此您可能希望使用它,但依照本手冊的步驟不需要。 按下右上角的"Start"按鈕,這將啟動Apache HTTP服務器,啟用PHP和MySQL數據庫。 訪問URL http://localhost:8888,您將看到一個類似於下面的頁面: 我們準備好編寫一些PHP代碼了! 使用MAMP,在 “Document root” 指定的文件夾中打開,對於Mac上的MAMP,默認情況下是 /Applications/MAMP/htdocs。 在Windows上是 C:\MAMP\htdocs。 根據您的配置,您的情況可能會有所不同。使用MAMP,可以在應用程序的用戶界面中找到它。 在該文件夾中,您將找到一個名為 index.php 的文件,它負責顯示上面的頁面:

如何設置一個執行 Node.js 應用程式的定時任務

了解如何設置定時任務以運行 Node.js 應用程式 首先,在一個文件中創建一個 shell 腳本,例如命名為 run.sh #!/bin/sh node app.js 給予它執行權限 chmod +x run.sh 然後執行 crontab -e 默認情況下,這將使用默認編輯器打開,通常是 vim。 | 提示:如果你對 vim 不熟悉,請使用 i 進入插入模式,以便於輸入/粘貼,然後使用 esc 和 wq 保存並退出。 現在,你可以為每個定時任務添加一行。 定義定時任務的語法有些令人生畏。這就是為什麼我通常使用一個網站來幫助我生成無錯誤的定時任務:https://crontab-generator.org/ 你可以選擇定時任務的時間間隔,並輸入要執行的命令。 我選擇每天上午 10 點運行此定時任務。 這是我需要運行的 crontab 行: 0 10 * * * /Users/flaviocopes/dev/run.sh >/dev/null 2>&1 如果一切順利,定時任務就設置好了。 完成後,你可以執行以下命令查看活動定時任務列表: crontab -l 你可以再次運行 crontab -e 來刪除一個定時任務,刪除相應的行並退出編輯器。

如何通過React Router將props傳遞給子組件

本短教程將解釋如何通過React Router 將props傳遞給子組件。 關於如何通過React Router將props傳遞給子組件,有多種解決方案,但其中一些已經過時。 其中最簡單的方法是將props添加到Route包裝組件: const Index = props => <h1>{props.route.something}</h1> var routes = <Route path="/" something={'here'} component={Index} /> 但是這種方式需要修改props的訪問方式,從this.props改為this.props.route.*,這可能或可能不被接受。 修復這個問題的方法是使用以下方式: const Index = props => ( <h1>{props.something}</h1> ) <Route path="/" render={() => <Index something={'here'} />} />

如何通過二等分法調試 CSS

我使用一種工作流來調試 CSS 今天我有這個問題。 我將Paddle按鈕添加到我的新在線課程頁面上,這樣人們就可以點擊“立即購買”按鈕,然後出現漂亮的Paddle彈出窗口。 彈出窗口有一個加載指示器,一個內部有一個旋轉器的圓圈,問題是:點擊“立即購買”按鈕時,旋轉器指示器未居中於圓圈內,如下gif所示: 我真的不知道是什麼原因導致這個問題,所以我在考慮如何解決它。 我在開發者工具中打開源代碼面板,該面板顯示頁面加載的所有文件。我搜索了我的一個CSS文件,因為我的直覺告訴我,頁面的CSS可能干擾了Paddle的CSS規則。 所以我刪除了該文件的所有內容。 當您在源代碼面板中更改CSS文件時,Chrome會自動更改頁面的外觀,因此我可以檢查並確認旋轉器現在正常工作! 所以,問題就在那個CSS文件的某個規則中。 如何找出是第幾行? 該文件有312行。我從第150行到312行進行了選擇並刪除。再試一次。問題仍然存在,所以它必定來自前149行。 我使用 cmd-Z(撤銷)來恢復我所刪除的那些行,然後刪除第70行到第149行。 問題消失了,所以問題肯定存在於這些行中。我再次使用 cmd-Z 來恢復我所刪除的行。 依此類推,直到找到引起問題的那一行。

如何創建 PostgreSQL 資料庫

當你安裝了 PostgreSQL 之後,你可以通過開啟控制台來創建一個新的資料庫: psql postgres 然後執行 CREATE DATABASE 命令: CREATE DATABASE 資料庫名稱; 不要忘記結尾的分號 ; 執行 \l 命令,你將可以看到創建的新資料庫。

如何創建一個空的 SQLite 數據庫

我想知道如何創建一個 SQLite 數據庫來在 Prisma 中使用,後來我發現只需創建一個空文件即可初始化一個空的 SQLite 數據庫。 我之前思考得太複雜了,實際上,在 SQLite 中初始化一個新的數據庫非常簡單。 以創建一個名為 storage.db 的 SQLite 數據庫為例,您可以使用命令行中的 touch 命令: $ touch storage.db 當需要復制具有所有表格的數據庫,或者需要備份數據庫時,您可以採用相同的方法,只需複製該文件即可。

如何創建一個滑鼠離開視窗時彈出的彈窗

你知道那些當你試圖關閉瀏覽器視窗時出現的煩人彈窗嗎? 它們好像知道你在試圖關閉視窗,就像它們能讀取你的思想一樣。 實際上,這是一個非常簡單的概念,你需要聽取特定的DOM事件。 我個人不推薦使用彈窗,因為我覺得它們很煩人,但是你的公司可能要求你實現一個,所以在這裡我們就來實現一個。 我喜歡保持事情簡單,所以這裡是HTML的部分: <!doctype html> <head> <title>彈窗頁面</title> </head> <body> <div id="popup"> <h3>彈窗!</h3> </div> </body> 再來是這部分的CSS: body { font-family: system-ui; background-color: #f6d198; } #popup { position: fixed; width: 100%; visibility: hidden; z-index: 10002; top: 0; opacity: 0; transform: scale(0.5); transition: transform 0.2s, opacity 0.2s, visibility 0s 0.2s; position: relative; margin: 0 auto; text-align: center; box-shadow: 0 1px 10px rgba(0, 0, 0, 0.5); width: 60%; background: #862a5c; padding-bottom: 100px; padding-top: 50px; color: #fff; font-size: 2rem; } 最後是這段JavaScript:...

如何創建你的第一個Go程式

在Go程式語言介紹之後,我們準備好創建我們的第一個Go程式了! 在程式設計師的傳統中,第一個程式會在執行時將「Hello, World!」字串列印到終端機上。因此,我們將首先執行這個動作,然後解釋如何實現它。 也許你的家目錄中有一個資料夾,用於存放所有的程式設計專案和測試。 在該資料夾中創建一個新的資料夾,例如命名為 hello。 在 hello 資料夾中創建一個 hello.go 檔案(檔名可以任意命名)。 將以下內容添加到檔案中: package main import "fmt" func main() { fmt.Println("Hello, World!") } 這是你的第一個Go程式! 讓我們逐行分析這個程式: package main 我們將Go程式組織成封包(package)。 每個 .go 檔案首先聲明它屬於哪個封包。 一個封包可以由多個檔案組成,也可以只有一個檔案。 一個程式可以包含多個封包。 main 封包是程式的入口點,用於識別一個可執行程式。 import "fmt" 我們使用 import 關鍵字來引入一個封包。 fmt 是Go語言提供的內建封包,提供了輸入輸出的實用函數。 我們擁有一個豐富的標準函式庫可供使用,可以用於各種功能,如網路連接、數學、加密、影像處理、檔案系統存取等等。 你可以在官方文件中閱讀這個 fmt 封包所提供的所有功能。 func main() { } 在這裡,我們聲明了 main() 函數。 什麼是函數?我們稍後會更詳細地介紹,暫時可以這樣說,函數是一塊被賦予名稱並包含一些指令的程式碼區塊。 main 函數是特殊的,因為程式的執行從這裡開始。 在這個簡單的情況下,我們只有一個函數,程式從這裡開始執行,然後結束。 fmt.Println("Hello, World!") 這是我們定義的函數的內容。 我們呼叫了之前引入的 fmt 封包中定義的 Println() 函數,並將一個字串作為參數傳遞給它。 根據官方文件的說明,這個函數「根據格式指定符進行格式化並將結果寫入標準輸出」。 請查看文檔,因為它們非常棒。它們甚至還有可以執行的示例: 我們使用「點」語法 fmt.Println() 來指定該函數是由該封包提供的。 程式執行完 main 函數後,就沒有其他事情可做,執行結束。

如何提交更改到Docker映像

當你部署應用程式後,發現有個 bug 需要修復,或者只是想要發佈更新,該怎麼辦? 執行 docker ps 命令可以取得正在運行的容器的 ID,然後使用 docker commit 來從中創建一個新的標籤: docker commit <id> <username>/<imagename>:<tagname> 你還可以在新版本中添加一個變更日誌訊息,列出新版本中的變更內容: docker commit --change "description" <id> <username>/<imagename>:<tagname>