[{"data":1,"prerenderedAt":866},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fdeploying-nuxt-static-site-with-nginx":46,"\u002Fblog\u002Fdeploying-nuxt-static-site-with-nginx-surround":861},[4],{"title":5,"path":6,"stem":7,"children":8,"page":45},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37,41],{"title":10,"path":11,"stem":12},"吉布斯自由能、化学势与扩散势","\u002Fblog\u002Fchemical-potential-and-diffusion-potential","blog\u002Fchemical-potential-and-diffusion-potential",{"title":14,"path":15,"stem":16},"Deploying Nuxt Static Sites with Nginx","\u002Fblog\u002Fdeploying-nuxt-static-site-with-nginx","blog\u002Fdeploying-nuxt-static-site-with-nginx",{"title":18,"path":19,"stem":20},"相变驱动力计算","\u002Fblog\u002Fphase-transformation-driving-force","blog\u002Fphase-transformation-driving-force",{"title":22,"path":23,"stem":24},"Python 环境配置完全指南：Conda 与国内镜像源","\u002Fblog\u002Fpython-environment-setup-guide","blog\u002Fpython-environment-setup-guide",{"title":26,"path":27,"stem":28},"Rust 编译与配置指南","\u002Fblog\u002Frust-compilation-and-configuration","blog\u002Frust-compilation-and-configuration",{"title":30,"path":31,"stem":32},"SSH Key Authentication Setup Guide","\u002Fblog\u002Fssh-key-authentication-setup","blog\u002Fssh-key-authentication-setup",{"title":34,"path":35,"stem":36},"Tauri + Rust 技术栈与编译说明","\u002Fblog\u002Ftauri-rust-tech-stack-and-build","blog\u002Ftauri-rust-tech-stack-and-build",{"title":38,"path":39,"stem":40},"Complete Guide to Utoipa Integration with Axum","\u002Fblog\u002Futoipa-integration-with-axum","blog\u002Futoipa-integration-with-axum",{"title":42,"path":43,"stem":44},"Rust: Code Once, Build Anywhere","\u002Fblog\u002Fwhy-rust-priority","blog\u002Fwhy-rust-priority",false,{"id":47,"title":14,"author":48,"body":52,"date":854,"description":855,"extension":856,"image":857,"meta":858,"minRead":367,"navigation":376,"path":15,"seo":859,"stem":16,"__hash__":860},"blog\u002Fblog\u002Fdeploying-nuxt-static-site-with-nginx.md",{"name":49,"avatar":50},"Jing Zhong",{"src":51,"alt":49},"https:\u002F\u002Fppm-sources.oss-cn-hongkong.aliyuncs.com\u002Fzj\u002Fme.jpg",{"type":53,"value":54,"toc":836},"minimark",[55,59,64,67,102,106,114,176,183,187,190,210,213,232,235,252,256,261,264,291,295,298,469,472,476,479,663,666,674,678,686,706,711,722,727,735,739,742,750,757,761,765,785,789,798,802,805,826,829,832],[56,57,58],"p",{},"When it comes to deploying modern web applications, Nuxt 3's static site generation (SSG) offers an excellent balance of performance, SEO, and simplicity. Combined with Nginx's battle-tested serving capabilities, you get a deployment setup that's fast, reliable, and cost-effective. Let's walk through the complete process.",[60,61,63],"h2",{"id":62},"why-static-site-generation","Why Static Site Generation?",[56,65,66],{},"Static site generation pre-renders your application at build time, producing pure HTML, CSS, and JavaScript files that can be served from any static file server. The benefits are compelling:",[68,69,70,78,84,90,96],"ul",{},[71,72,73,77],"li",{},[74,75,76],"strong",{},"Performance",": No server-side rendering overhead means instant page loads",[71,79,80,83],{},[74,81,82],{},"SEO",": Search engines get fully rendered HTML",[71,85,86,89],{},[74,87,88],{},"Simplicity",": No Node.js server required in production",[71,91,92,95],{},[74,93,94],{},"Cost",": Can host on any basic web server",[71,97,98,101],{},[74,99,100],{},"Reliability",": Fewer moving parts means fewer things can break",[60,103,105],{"id":104},"configuring-nuxt-for-static-generation","Configuring Nuxt for Static Generation",[56,107,108,109,113],{},"First, configure your Nuxt app to generate static files. In your ",[110,111,112],"code",{},"nuxt.config.ts",":",[115,116,121],"pre",{"className":117,"code":118,"language":119,"meta":120,"style":120},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  ssr: false,  \u002F\u002F Disable server-side rendering for static generation\n})\n","typescript","",[110,122,123,147,167],{"__ignoreMap":120},[124,125,128,132,135,139,143],"span",{"class":126,"line":127},"line",1,[124,129,131],{"class":130},"s7zQu","export",[124,133,134],{"class":130}," default",[124,136,138],{"class":137},"s2Zo4"," defineNuxtConfig",[124,140,142],{"class":141},"sTEyZ","(",[124,144,146],{"class":145},"sMK4o","{\n",[124,148,150,154,156,160,163],{"class":126,"line":149},2,[124,151,153],{"class":152},"swJcz","  ssr",[124,155,113],{"class":145},[124,157,159],{"class":158},"sfNiH"," false",[124,161,162],{"class":145},",",[124,164,166],{"class":165},"sHwdD","  \u002F\u002F Disable server-side rendering for static generation\n",[124,168,170,173],{"class":126,"line":169},3,[124,171,172],{"class":145},"}",[124,174,175],{"class":141},")\n",[56,177,178,179,182],{},"The ",[110,180,181],{},"ssr: false"," setting tells Nuxt to generate a static site. This is essential for our use case.",[60,184,186],{"id":185},"building-your-static-site","Building Your Static Site",[56,188,189],{},"Generate your static files with a single command:",[115,191,195],{"className":192,"code":193,"language":194,"meta":120,"style":120},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm run generate\n","bash",[110,196,197],{"__ignoreMap":120},[124,198,199,203,207],{"class":126,"line":127},[124,200,202],{"class":201},"sBMFI","pnpm",[124,204,206],{"class":205},"sfazB"," run",[124,208,209],{"class":205}," generate\n",[56,211,212],{},"This command:",[214,215,216,219,222,225],"ol",{},[71,217,218],{},"Builds your application",[71,220,221],{},"Generates static HTML for all your routes",[71,223,224],{},"Optimizes assets (CSS, JS, images)",[71,226,227,228,231],{},"Creates a ",[110,229,230],{},".output\u002Fpublic"," directory ready for deployment",[56,233,234],{},"The output will contain:",[68,236,237,243,249],{},[71,238,239,242],{},[110,240,241],{},"index.html"," - Your main entry point",[71,244,245,248],{},[110,246,247],{},"\u002F_nuxt\u002F"," - Hashed JavaScript and CSS bundles",[71,250,251],{},"Other static assets (images, fonts, etc.)",[60,253,255],{"id":254},"deploying-to-nginx","Deploying to Nginx",[257,258,260],"h3",{"id":259},"step-1-package-your-site","Step 1: Package Your Site",[56,262,263],{},"Create a compressed archive of your built site:",[115,265,267],{"className":192,"code":266,"language":194,"meta":120,"style":120},"cd .output\u002Fpublic\ntar -czf package.tgz *\n",[110,268,269,277],{"__ignoreMap":120},[124,270,271,274],{"class":126,"line":127},[124,272,273],{"class":137},"cd",[124,275,276],{"class":205}," .output\u002Fpublic\n",[124,278,279,282,285,288],{"class":126,"line":149},[124,280,281],{"class":201},"tar",[124,283,284],{"class":205}," -czf",[124,286,287],{"class":205}," package.tgz",[124,289,290],{"class":141}," *\n",[257,292,294],{"id":293},"step-2-upload-and-extract","Step 2: Upload and Extract",[56,296,297],{},"On your server, deploy with this script:",[115,299,301],{"className":192,"code":300,"language":194,"meta":120,"style":120},"#!\u002Fbin\u002Fbash\n# Check if target directory exists, remove if it does\nif [ -d \"\u002Fvar\u002Fwww\u002Fzhongjing\" ]; then\n    echo \"Removing existing directory: \u002Fvar\u002Fwww\u002Fzhongjing\"\n    rm -rf \u002Fvar\u002Fwww\u002Fzhongjing\nfi\n\n# Create target directory\nmkdir -p \u002Fvar\u002Fwww\u002Fzhongjing\n\n# Extract archive to target directory\ntar -xzf \u002Fvar\u002Fwww\u002Fpackage.tgz -C \u002Fvar\u002Fwww\u002Fzhongjing\n\n# Set proper ownership\nsudo chown -R www-data:www-data zhongjing\u002F\n\necho \"Deployment complete\"\n",[110,302,303,308,313,339,353,365,371,378,384,395,400,406,422,427,433,451,456],{"__ignoreMap":120},[124,304,305],{"class":126,"line":127},[124,306,307],{"class":165},"#!\u002Fbin\u002Fbash\n",[124,309,310],{"class":126,"line":149},[124,311,312],{"class":165},"# Check if target directory exists, remove if it does\n",[124,314,315,318,321,324,327,330,333,336],{"class":126,"line":169},[124,316,317],{"class":130},"if",[124,319,320],{"class":145}," [",[124,322,323],{"class":145}," -d",[124,325,326],{"class":145}," \"",[124,328,329],{"class":205},"\u002Fvar\u002Fwww\u002Fzhongjing",[124,331,332],{"class":145},"\"",[124,334,335],{"class":145}," ];",[124,337,338],{"class":130}," then\n",[124,340,342,345,347,350],{"class":126,"line":341},4,[124,343,344],{"class":137},"    echo",[124,346,326],{"class":145},[124,348,349],{"class":205},"Removing existing directory: \u002Fvar\u002Fwww\u002Fzhongjing",[124,351,352],{"class":145},"\"\n",[124,354,356,359,362],{"class":126,"line":355},5,[124,357,358],{"class":201},"    rm",[124,360,361],{"class":205}," -rf",[124,363,364],{"class":205}," \u002Fvar\u002Fwww\u002Fzhongjing\n",[124,366,368],{"class":126,"line":367},6,[124,369,370],{"class":130},"fi\n",[124,372,374],{"class":126,"line":373},7,[124,375,377],{"emptyLinePlaceholder":376},true,"\n",[124,379,381],{"class":126,"line":380},8,[124,382,383],{"class":165},"# Create target directory\n",[124,385,387,390,393],{"class":126,"line":386},9,[124,388,389],{"class":201},"mkdir",[124,391,392],{"class":205}," -p",[124,394,364],{"class":205},[124,396,398],{"class":126,"line":397},10,[124,399,377],{"emptyLinePlaceholder":376},[124,401,403],{"class":126,"line":402},11,[124,404,405],{"class":165},"# Extract archive to target directory\n",[124,407,409,411,414,417,420],{"class":126,"line":408},12,[124,410,281],{"class":201},[124,412,413],{"class":205}," -xzf",[124,415,416],{"class":205}," \u002Fvar\u002Fwww\u002Fpackage.tgz",[124,418,419],{"class":205}," -C",[124,421,364],{"class":205},[124,423,425],{"class":126,"line":424},13,[124,426,377],{"emptyLinePlaceholder":376},[124,428,430],{"class":126,"line":429},14,[124,431,432],{"class":165},"# Set proper ownership\n",[124,434,436,439,442,445,448],{"class":126,"line":435},15,[124,437,438],{"class":201},"sudo",[124,440,441],{"class":205}," chown",[124,443,444],{"class":205}," -R",[124,446,447],{"class":205}," www-data:www-data",[124,449,450],{"class":205}," zhongjing\u002F\n",[124,452,454],{"class":126,"line":453},16,[124,455,377],{"emptyLinePlaceholder":376},[124,457,459,462,464,467],{"class":126,"line":458},17,[124,460,461],{"class":137},"echo",[124,463,326],{"class":145},[124,465,466],{"class":205},"Deployment complete",[124,468,352],{"class":145},[56,470,471],{},"This approach ensures clean deployments with no stale files.",[60,473,475],{"id":474},"configuring-nginx","Configuring Nginx",[56,477,478],{},"Here's a production-ready Nginx configuration optimized for Nuxt static sites:",[115,480,484],{"className":481,"code":482,"language":483,"meta":120,"style":120},"language-nginx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","server {\n    server_name zhongjing.hitdic.com;\n\n    root \u002Fvar\u002Fwww\u002Fzhongjing;\n    index index.html;\n\n    # 1. Handle Nuxt static assets (highest priority)\n    # Nuxt bundles are in _nuxt folder with hashes, no directory checks needed\n    location ^~ \u002F_nuxt\u002F {\n        alias \u002Fvar\u002Fwww\u002Fzhongjing\u002F_nuxt\u002F;\n        expires 1y;\n        add_header Cache-Control \"public, immutable\";\n        # Only find files, 404 if not found (avoid $uri\u002F redirects)\n        try_files $uri =404;\n    }\n\n    # 2. Handle other static files\n    location ~* \\.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {\n        expires 1y;\n        add_header Cache-Control \"public, immutable\";\n        try_files $uri =404;\n    }\n\n    # 3. Main site logic (SPA routing)\n    location \u002F {\n        # Remove $uri\u002F to avoid directory redirect interference\n        try_files $uri \u002Findex.html;\n\n        # Disable HTML caching\n        if ($request_uri ~ ^\u002F(.*)\\.(html|htm)$) {\n            expires -1;\n        }\n    }\n}\n","nginx",[110,485,486,491,496,500,505,510,514,519,524,529,534,539,544,549,554,559,563,568,574,579,584,589,594,599,605,611,617,623,628,634,640,646,652,657],{"__ignoreMap":120},[124,487,488],{"class":126,"line":127},[124,489,490],{},"server {\n",[124,492,493],{"class":126,"line":149},[124,494,495],{},"    server_name zhongjing.hitdic.com;\n",[124,497,498],{"class":126,"line":169},[124,499,377],{"emptyLinePlaceholder":376},[124,501,502],{"class":126,"line":341},[124,503,504],{},"    root \u002Fvar\u002Fwww\u002Fzhongjing;\n",[124,506,507],{"class":126,"line":355},[124,508,509],{},"    index index.html;\n",[124,511,512],{"class":126,"line":367},[124,513,377],{"emptyLinePlaceholder":376},[124,515,516],{"class":126,"line":373},[124,517,518],{},"    # 1. Handle Nuxt static assets (highest priority)\n",[124,520,521],{"class":126,"line":380},[124,522,523],{},"    # Nuxt bundles are in _nuxt folder with hashes, no directory checks needed\n",[124,525,526],{"class":126,"line":386},[124,527,528],{},"    location ^~ \u002F_nuxt\u002F {\n",[124,530,531],{"class":126,"line":397},[124,532,533],{},"        alias \u002Fvar\u002Fwww\u002Fzhongjing\u002F_nuxt\u002F;\n",[124,535,536],{"class":126,"line":402},[124,537,538],{},"        expires 1y;\n",[124,540,541],{"class":126,"line":408},[124,542,543],{},"        add_header Cache-Control \"public, immutable\";\n",[124,545,546],{"class":126,"line":424},[124,547,548],{},"        # Only find files, 404 if not found (avoid $uri\u002F redirects)\n",[124,550,551],{"class":126,"line":429},[124,552,553],{},"        try_files $uri =404;\n",[124,555,556],{"class":126,"line":435},[124,557,558],{},"    }\n",[124,560,561],{"class":126,"line":453},[124,562,377],{"emptyLinePlaceholder":376},[124,564,565],{"class":126,"line":458},[124,566,567],{},"    # 2. Handle other static files\n",[124,569,571],{"class":126,"line":570},18,[124,572,573],{},"    location ~* \\.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ {\n",[124,575,577],{"class":126,"line":576},19,[124,578,538],{},[124,580,582],{"class":126,"line":581},20,[124,583,543],{},[124,585,587],{"class":126,"line":586},21,[124,588,553],{},[124,590,592],{"class":126,"line":591},22,[124,593,558],{},[124,595,597],{"class":126,"line":596},23,[124,598,377],{"emptyLinePlaceholder":376},[124,600,602],{"class":126,"line":601},24,[124,603,604],{},"    # 3. Main site logic (SPA routing)\n",[124,606,608],{"class":126,"line":607},25,[124,609,610],{},"    location \u002F {\n",[124,612,614],{"class":126,"line":613},26,[124,615,616],{},"        # Remove $uri\u002F to avoid directory redirect interference\n",[124,618,620],{"class":126,"line":619},27,[124,621,622],{},"        try_files $uri \u002Findex.html;\n",[124,624,626],{"class":126,"line":625},28,[124,627,377],{"emptyLinePlaceholder":376},[124,629,631],{"class":126,"line":630},29,[124,632,633],{},"        # Disable HTML caching\n",[124,635,637],{"class":126,"line":636},30,[124,638,639],{},"        if ($request_uri ~ ^\u002F(.*)\\.(html|htm)$) {\n",[124,641,643],{"class":126,"line":642},31,[124,644,645],{},"            expires -1;\n",[124,647,649],{"class":126,"line":648},32,[124,650,651],{},"        }\n",[124,653,655],{"class":126,"line":654},33,[124,656,558],{},[124,658,660],{"class":126,"line":659},34,[124,661,662],{},"}\n",[56,664,665],{},"Deplot nginx configuation",[115,667,672],{"className":668,"code":670,"language":671},[669],"language-text","sudo ln -sf \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdata.hitdic.com \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\n","text",[110,673,670],{"__ignoreMap":120},[257,675,677],{"id":676},"key-configuration-points","Key Configuration Points",[56,679,680],{},[74,681,682,683,685],{},"Asset Caching (",[110,684,247],{}," and static files)",[68,687,688,694,700],{},[71,689,690,693],{},[110,691,692],{},"expires 1y",": Long cache lifetime for hashed assets",[71,695,696,699],{},[110,697,698],{},"Cache-Control \"public, immutable\"",": Tells browsers assets won't change",[71,701,702,705],{},[110,703,704],{},"try_files $uri =404",": Directly return 404 for missing assets (no redirects)",[56,707,708],{},[74,709,710],{},"SPA Routing",[68,712,713,719],{},[71,714,715,718],{},[110,716,717],{},"try_files $uri \u002Findex.html",": Falls back to index.html for non-file routes",[71,720,721],{},"This enables client-side routing to work correctly",[56,723,724],{},[74,725,726],{},"HTML Caching",[68,728,729],{},[71,730,731,734],{},[110,732,733],{},"expires -1",": Prevents HTML caching to ensure fresh content",[60,736,738],{"id":737},"clearing-browser-cache","Clearing Browser Cache",[56,740,741],{},"Very important: clear your browser cache! ERR_TOO_MANY_REDIRECTS (301) errors are aggressively cached by browsers. Make sure to:",[68,743,744,747],{},[71,745,746],{},"Use Incognito Mode to test the page",[71,748,749],{},"Or open DevTools (F12) and right-click the refresh button to select \"Empty Cache and Hard Reload\"",[56,751,752,753,756],{},"If you still see errors, check the browser's Network panel to see what URLs are being requested (look for double slashes ",[110,754,755],{},"\u002F\u002F"," or unusual paths).",[60,758,760],{"id":759},"performance-optimization-tips","Performance Optimization Tips",[257,762,764],{"id":763},"_1-enable-gzip-compression","1. Enable Gzip Compression",[115,766,768],{"className":481,"code":767,"language":483,"meta":120,"style":120},"gzip on;\ngzip_types text\u002Fplain text\u002Fcss application\u002Fjson application\u002Fjavascript text\u002Fxml application\u002Fxml application\u002Fxml+rss text\u002Fjavascript;\ngzip_min_length 1000;\n",[110,769,770,775,780],{"__ignoreMap":120},[124,771,772],{"class":126,"line":127},[124,773,774],{},"gzip on;\n",[124,776,777],{"class":126,"line":149},[124,778,779],{},"gzip_types text\u002Fplain text\u002Fcss application\u002Fjson application\u002Fjavascript text\u002Fxml application\u002Fxml application\u002Fxml+rss text\u002Fjavascript;\n",[124,781,782],{"class":126,"line":169},[124,783,784],{},"gzip_min_length 1000;\n",[257,786,788],{"id":787},"_2-use-http2","2. Use HTTP\u002F2",[115,790,792],{"className":481,"code":791,"language":483,"meta":120,"style":120},"listen 443 ssl http2;\n",[110,793,794],{"__ignoreMap":120},[124,795,796],{"class":126,"line":127},[124,797,791],{},[60,799,801],{"id":800},"conclusion","Conclusion",[56,803,804],{},"Deploying a Nuxt static site with Nginx gives you a fast, reliable, and cost-effective hosting solution. The key is proper configuration:",[214,806,807,812,815,818,823],{},[71,808,809,810],{},"Generate static files with ",[110,811,181],{},[71,813,814],{},"Use proper Nginx location blocks for asset routing",[71,816,817],{},"Implement aggressive caching for hashed assets",[71,819,820,821],{},"Handle SPA routing with ",[110,822,717],{},[71,824,825],{},"Clear browser cache when troubleshooting redirect issues",[56,827,828],{},"This setup scales well, handles high traffic, and provides an excellent user experience with minimal maintenance overhead. Whether you're deploying a personal portfolio or a production application, this configuration has you covered.",[56,830,831],{},"Happy deploying!",[833,834,835],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":120,"searchDepth":149,"depth":149,"links":837},[838,839,840,841,845,848,849,853],{"id":62,"depth":149,"text":63},{"id":104,"depth":149,"text":105},{"id":185,"depth":149,"text":186},{"id":254,"depth":149,"text":255,"children":842},[843,844],{"id":259,"depth":169,"text":260},{"id":293,"depth":169,"text":294},{"id":474,"depth":149,"text":475,"children":846},[847],{"id":676,"depth":169,"text":677},{"id":737,"depth":149,"text":738},{"id":759,"depth":149,"text":760,"children":850},[851,852],{"id":763,"depth":169,"text":764},{"id":787,"depth":169,"text":788},{"id":800,"depth":149,"text":801},"2025-01-02","Learn how to generate static sites with Nuxt 3 and deploy them to Nginx, handling routing, caching, and avoiding common pitfalls like redirect loops.","md","https:\u002F\u002Fppm-sources.oss-cn-hongkong.aliyuncs.com\u002Fzj\u002F3rd\u002Fnuxt.png",{},{"title":14,"description":855},"7YXz6Jj-JrARYeFiUfMlykf3ey5l2N8CiSG07nmkUJ8",[862,864],{"title":10,"path":11,"stem":12,"description":863,"children":-1},"从偏摩尔量的定义出发，推导独立成分与约束成分变量下化学势的两种公式，并阐明化学势与相场模拟中扩散势的关系。",{"title":18,"path":19,"stem":20,"description":865,"children":-1},"基于 Gibbs-Duhem 关系与扩散势，推导多元两相体系中相变驱动力的两种表达形式及其等价关系，并附 Pandat 计算数据的验算示例。",1792686186861]