{"id":39011,"date":"2023-06-12T16:17:18","date_gmt":"2023-05-21T22:29:57","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/"},"modified":"2024-04-30T08:32:17","modified_gmt":"2024-04-30T00:32:17","slug":"%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/","title":{"rendered":"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5"},"content":{"rendered":"<p>\u7531\u4e8eAngular9\u7684\u9884\u5b9a\u53d1\u5e03\u65e5\u671f\u4ece2019\u5e7410\u6708\u5ef6\u671f\u5230\u4e862020\u5e741\u6708\uff0c\u76ee\u524d\u6700\u65b0\u7248\u672c\u5df2\u7ecf\u5230\u8fbe\u4e869.0.0-rc.11\u3002\u56e0\u4e3a\u8feb\u4e0d\u53ca\u5f85\u5730\u60f3\u8981\u5c1d\u8bd5Angular9\uff0c\u6211\u60f3\u987a\u4fbf\u7ed3\u5408Firebase\u6765\u5236\u4f5c\u4e00\u4e2a\u535a\u5ba2\u3002<\/p>\n<p>\u56e0\u4e3a\u6211\u60f3\u60a0\u95f2\u5730\u8fdb\u884c\u521b\u4f5c\uff0c\u6240\u4ee5\u6211\u6253\u7b97\u5206\u6210\u51e0\u6b21\u6765\u53d1\u5e03\u3002<\/p>\n<h1>\u6784\u6210\uff08\u9884\u5b9a\uff09<\/h1>\n<p>\u524d\u7aef\uff1aAngular9\uff08\u90e8\u7f72\u81f3Firebase Hosting\uff09<br \/>\n\u540e\u7aef\uff1aFirestore<\/p>\n<h1>\u5f00\u53d1\u73af\u5883<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">windows10 Home<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Angular CLI\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u4ee5\u4e0b\u3092\u53c2\u7167<\/ul>\n<pre class=\"post-pre\"><code>$ ng version\r\n\r\n     _                      _                 ____ _     ___\r\n    \/ \\   _ __   __ _ _   _| | __ _ _ __     \/ ___| |   |_ _|\r\n   \/ \u25b3 \\ | '_ \\ \/ _` | | | | |\/ _` | '__|   | |   | |    | |\r\n  \/ ___ \\| | | | (_| | |_| | | (_| | |      | |___| |___ | |\r\n \/_\/   \\_\\_| |_|\\__, |\\__,_|_|\\__,_|_|       \\____|_____|___|\r\n                |___\/\r\n\r\n\r\nAngular CLI: 8.3.23\r\nNode: 12.13.0\r\nOS: win32 x64\r\nAngular: 8.2.14\r\n... animations, common, compiler, compiler-cli, core, forms\r\n... language-service, platform-browser, platform-browser-dynamic\r\n... router\r\n\r\nPackage                           Version\r\n-----------------------------------------------------------\r\n@angular-devkit\/architect         0.803.23\r\n@angular-devkit\/build-angular     0.803.23\r\n@angular-devkit\/build-optimizer   0.803.23\r\n@angular-devkit\/build-webpack     0.803.23\r\n@angular-devkit\/core              8.3.23\r\n@angular-devkit\/schematics        8.3.23\r\n@angular\/cli                      8.3.23\r\n@ngtools\/webpack                  8.3.23\r\n@schematics\/angular               8.3.23\r\n@schematics\/update                0.803.23\r\nrxjs                              6.4.0\r\ntypescript                        3.5.3\r\nwebpack                           4.39.2\r\n<\/code><\/pre>\n<h1>\u751f\u6210Angular\u9879\u76ee<\/h1>\n<p>ng new\u30b3\u30de\u30f3\u30c9\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3057\u307e\u3059<\/p>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306fmy-blog<\/p>\n<p>\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b\u305f\u3081&#8211;routing\u3092\u6307\u5b9a<br \/>\n\u30b9\u30bf\u30a4\u30eb\u306fSCSS\u3067\u66f8\u304f\u305f\u3081&#8211;style=scss\u3092\u6307\u5b9a<br \/>\n\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u30a8\u30f3\u30b8\u30f3\u306fIvy\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081&#8211;enable-ivy\u3092\u6307\u5b9a\uff08\u53c2\u8003\uff09<\/p>\n<pre class=\"post-pre\"><code>ng new my-blog --routing --style=scss --enable-ivy\r\ncd my-blog\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5168\u5c40\u7684Angular CLI\u7248\u672c\u4e3a8\u7cfb\u5217\uff0c\u56e0\u6b64\u6b64\u65f6\u521b\u5efa\u7684\u9879\u76ee\u5c06\u6210\u4e3aAngular8\u3002<\/p>\n<h2>\u5347\u7ea7Angular\u7248\u672c<\/h2>\n<p>Angular Update Guide\u306b\u5f93\u3063\u3066\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u884c\u3044\u307e\u3059\u3002<br \/>\n\u203b\u307e\u3060Angular9\u306f\u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306a\u3044\u305f\u3081\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u3067\u306a\u304f\u30ed\u30fc\u30ab\u30eb\u3067\u306e\u307f\u63a1\u7528\u3057\u307e\u3059<\/p>\n<pre class=\"post-pre\"><code> ng update @angular\/core @angular\/cli --next\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6536\u5230\u4e86\u9700\u8981\u6e05\u7406\u5b58\u50a8\u5e93\u7684\u6d88\u606f\uff0c\u60a8\u9700\u8981\u4f7f\u7528git commit\u6216git stash\u5c06\u5176\u6682\u65f6\u8bbe\u7f6e\u4e3a\u6ca1\u6709\u5dee\u5f02\u7684\u72b6\u6001\u3002<\/p>\n<p>\u6211\u66fe\u8ba4\u4e3aAngular 9\u4e0d\u652f\u6301Typescript 3.7\uff0c\u4f46\u5b83\u5df2\u7ecf\u5347\u7ea7\u5230\u4e86Typescript 3.7.5\uff01\u8fd9\u771f\u662f\u4ee4\u4eba\u611f\u6fc0\uff0c\u867d\u7136\u770b\u8d77\u6765\u4e0d\u8d77\u773c\u3002<\/p>\n<h2>\u521b\u5efa<\/h2>\n<ul class=\"post-ul\">\u672c\u756a\u30d3\u30eb\u30c9\u3057\u3066\u307f\u307e\u3059<\/ul>\n<pre class=\"post-pre\"><code>npm run build -- --prod\r\n<\/code><\/pre>\n<h1>\u521b\u5efaFirebase\u9879\u76ee<\/h1>\n<p>\u4eceFirebase\u63a7\u5236\u53f0\u4e2d\u9009\u62e9\u201c\u6dfb\u52a0\u9879\u76ee\u201d\u3002<\/p>\n<ul class=\"post-ul\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3092\u4ed8\u3051\u307e\u3059<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/22-0.png\" alt=\"image.png\" \/><\/div>\n<ul class=\"post-ul\">\u30a2\u30ca\u30ea\u30c6\u30a3\u30af\u30b9\u306e\u8a2d\u5b9a\u3092\u3057\u307e\u3059<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/24-0.png\" alt=\"image.png\" \/><\/div>\n<ul class=\"post-ul\">Google\u30a2\u30ca\u30ea\u30c6\u30a3\u30af\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/26-0.png\" alt=\"image.png\" \/><\/div>\n<ul class=\"post-ul\">\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u300d\u3092\u62bc\u4e0b\u3059\u308b\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u304c\u958b\u59cb\u3055\u308c\u307e\u3059<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/28-0.png\" alt=\"image.png\" \/><\/div>\n<ul class=\"post-ul\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u304c\u5b8c\u4e86\u3057\u307e\u3059<\/ul>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/30-0.png\" alt=\"image.png\" \/><\/div>\n<h2>\u51c6\u5907Firebase CLI<\/h2>\n<p>\u7531\u4e8e\u9700\u8981\u4f7f\u7528Firebase CLI\u5c06\u5176\u90e8\u7f72\u5230Firebase Hosting\uff0c\u6240\u4ee5\u9700\u8981\u5148\u5b89\u88c5Firebase CLI\u3002<\/p>\n<ul class=\"post-ul\">firebase cli\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u53c2\u8003\uff09<\/ul>\n<pre class=\"post-pre\"><code>npm install -g firebase-tools\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u307e\u3059<\/ul>\n<pre class=\"post-pre\"><code>$ firebase --version\r\n7.12.1\r\n<\/code><\/pre>\n<ul class=\"post-ul\">firebase\u3078\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059<\/ul>\n<pre class=\"post-pre\"><code>firebase login\r\n<\/code><\/pre>\n<p>\u51fa\u73b0\u4e86\u4ee5\u4e0b\u8fd9\u6837\u7684\u9519\u8bef\u3002\u3002\u3002<\/p>\n<pre class=\"post-pre\"><code>$ firebase login\r\n\r\nError: Cannot run login in non-interactive mode. See login:ci to generate a token for use in non-interactive environments.\r\n<\/code><\/pre>\n<p>\u6211\u4e4b\u524d\u662f\u5728GitBash\u4e2d\u6267\u884c\u7684\uff0c\u636e\u8bf4\u5728GitBash\u4e2d\u6dfb\u52a0&#8211;interactive\u9009\u9879\u4f1a\u66f4\u597d\u3002<br \/>\n*\u53c2\u8003\u4e86\u4ee5\u4e0b\u6587\u7ae0\u3002\u5728Git Bash\u4e2d\u767b\u5f55firebase \u3002<\/p>\n<h2>\u5c06\u5e94\u7528\u90e8\u7f72\u5230Firebase Hosting\u3002<\/h2>\n<p>\u6309\u7167\u516c\u5f0f\u7684\u6b65\u9aa4\u8fdb\u884c\u90e8\u7f72\u3002<\/p>\n<ul class=\"post-ul\">firebase\u3068\u306e\u7d10\u3065\u3051<\/ul>\n<pre class=\"post-pre\"><code>firebase init\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u5b9f\u884c\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5229\u7528\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3092\u805e\u304b\u308c\u308b\u305f\u3081\u3001Hosting\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/ul>\n<pre class=\"post-pre\"><code>$ firebase init\r\n\r\n     ######## #### ########  ######## ########     ###     ######  ########\r\n     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##\r\n     ######    ##  ########  ######   ########  #########  ######  ######\r\n     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##\r\n     ##       #### ##     ## ######## ########  ##     ##  ######  ########\r\n\r\nYou're about to initialize a Firebase project in this directory:\r\n\r\n  C:\\Users\\liter\\Desktop\\develop\\my-blog\r\n\r\n? Are you ready to proceed? (Y\/n)\r\n? Are you ready to proceed? Yes\r\n? Which Firebase CLI features do you want to set up for this folder? Press Space\r\n to select features, then Enter to confirm your choices. (Press &lt;space&gt; to selec\r\nt, &lt;a&gt; to toggle all, &lt;i&gt; to invert selection)\r\n&gt;( ) Database: Deploy Firebase Realtime Database Rules\r\n ( ) Firestore: Deploy rules and create indexes for Firestore\r\n ( ) Functions: Configure and deploy Cloud Functions\r\n ( ) Hosting: Configure and deploy Firebase Hosting sites\r\n ( ) Storage: Deploy Cloud Storage security rules\r\n ( ) Emulators: Set up local emulators for Firebase features\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30c7\u30d7\u30ed\u30a4\u5bfe\u8c61\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u307e\u3059<\/ul>\n<\/li>\n<\/ul>\n<p>dist\/my-blog\u3092\u6307\u5b9a\u3057\u307e\u3059\uff08Angular\u306e\u30d3\u30eb\u30c9\u5148\u3067\u3059\uff09<br \/>\nAngular\u306fSPA\u306a\u306e\u3067\u3001rewrite all urls to \/index.html\u306fy\u3092\u6307\u5b9a\u3057\u307e\u3059<br \/>\ndist\/my-blog\/index.html<\/p>\n<pre class=\"post-pre\"><code>=== Hosting Setup\r\n\r\nYour public directory is the folder (relative to your project directory) that\r\nwill contain Hosting assets to be uploaded with firebase deploy. If you\r\nhave a build process for your assets, use your build's output directory.\r\n\r\n? What do you want to use as your public directory? (public) dist\/my-blog\r\n? What do you want to use as your public directory? dist\/my-blog\r\n? Configure as a single-page app (rewrite all urls to \/index.html)? (y\/N) y\r\n? Configure as a single-page app (rewrite all urls to \/index.html)? Yes\r\n? File dist\/my-blog\/index.html already exists. Overwrite? (y\/N) N\r\n? File dist\/my-blog\/index.html already exists. Overwrite? No\r\ni  Skipping write of dist\/my-blog\/index.html\r\n\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059<\/ul>\n<pre class=\"post-pre\"><code>$ firebase deploy\r\n\r\n=== Deploying to 'teracy-blog'...\r\n\r\ni  deploying hosting\r\ni  hosting[teracy-blog]: beginning deploy...\r\ni  hosting[teracy-blog]: found 10 files in dist\/my-blog\r\ni  hosting: uploading new files [0\/9] (0%)\r\ni  hosting: uploading new files [0\/9] (0%)\r\n+  hosting[teracy-blog]: file upload complete\r\ni  hosting[teracy-blog]: finalizing version...\r\n+  hosting[teracy-blog]: version finalized\r\ni  hosting[teracy-blog]: releasing new version...\r\n+  hosting[teracy-blog]: release complete\r\n\r\n+  Deploy complete!\r\n\r\nProject Console: https:\/\/console.firebase.google.com\/project\/teracy-blog\/overview\r\nHosting URL: https:\/\/teracy-blog.firebaseapp.com\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u7684\u7f51\u5740\u94fe\u63a5\u5df2\u7ecf\u53d1\u5e03\u5566\uff01\uff01<br \/>\nhttps:\/\/teracy-blog.firebaseapp.com<\/p>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u6211\u5df2\u7ecf\u5c1d\u8bd5\u4f7f\u7528Firebase Hosting\u5728Angular9\u9879\u76ee\u4e2d\u8fdb\u884c\u53d1\u5e03\u3002<\/p>\n<p>\u4e0b\u4e00\u6b65\uff0c\u6211\u6253\u7b97\u5c06\u5176\u5916\u89c2\u8bbe\u7f6e\u5f97\u66f4\u50cf\u535a\u5ba2\u3002<\/p>\n<p>\uff08\u8ffd\u52a0\uff09\u5728Angular 9\u548cFirebase\u4e0a\u521b\u5efa\u535a\u5ba2\uff08\u5c1d\u8bd5\u4f7f\u7528Angular Materia\uff09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7531\u4e8eAngular9\u7684\u9884\u5b9a\u53d1\u5e03\u65e5\u671f\u4ece2019\u5e7410\u6708\u5ef6\u671f\u5230\u4e862020\u5e741\u6708\uff0c\u76ee\u524d\u6700\u65b0\u7248\u672c\u5df2\u7ecf\u5230\u8fbe\u4e869.0.0- [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-39011","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528angular9\u548cfirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06angular9\u9879\u76ee\u90e8\u7f72\u5230firebase-hosting\uff09\u8fdb\u884c\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5\" \/>\n<meta property=\"og:description\" content=\"\u7531\u4e8eAngular9\u7684\u9884\u5b9a\u53d1\u5e03\u65e5\u671f\u4ece2019\u5e7410\u6708\u5ef6\u671f\u5230\u4e862020\u5e741\u6708\uff0c\u76ee\u524d\u6700\u65b0\u7248\u672c\u5df2\u7ecf\u5230\u8fbe\u4e869.0.0- [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528angular9\u548cfirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06angular9\u9879\u76ee\u90e8\u7f72\u5230firebase-hosting\uff09\u8fdb\u884c\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-21T22:29:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T00:32:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/22-0.png\" \/>\n<meta name=\"author\" content=\"\u5b87, \u534e\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5b87, \u534e\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/\",\"name\":\"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-05-21T22:29:57+00:00\",\"dateModified\":\"2024-04-30T00:32:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\",\"name\":\"\u5b87, \u534e\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"caption\":\"\u5b87, \u534e\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528angular9\u548cfirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06angular9\u9879\u76ee\u90e8\u7f72\u5230firebase-hosting\uff09\u8fdb\u884c\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5","og_description":"\u7531\u4e8eAngular9\u7684\u9884\u5b9a\u53d1\u5e03\u65e5\u671f\u4ece2019\u5e7410\u6708\u5ef6\u671f\u5230\u4e862020\u5e741\u6708\uff0c\u76ee\u524d\u6700\u65b0\u7248\u672c\u5df2\u7ecf\u5230\u8fbe\u4e869.0.0- [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528angular9\u548cfirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06angular9\u9879\u76ee\u90e8\u7f72\u5230firebase-hosting\uff09\u8fdb\u884c\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-05-21T22:29:57+00:00","article_modified_time":"2024-04-30T00:32:17+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d37b037434c4406c73b45\/22-0.png"}],"author":"\u5b87, \u534e","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u5b87, \u534e","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/","name":"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-05-21T22:29:57+00:00","dateModified":"2024-04-30T00:32:17+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528Angular9\u548cFirebase\u521b\u5efa\u535a\u5ba21\uff08\u5c06Angular9\u9879\u76ee\u90e8\u7f72\u5230Firebase Hosting\uff09\u8fdb\u884c\u5c1d\u8bd5"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458","name":"\u5b87, \u534e","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","caption":"\u5b87, \u534e"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8angular9%e5%92%8cfirebase%e5%88%9b%e5%bb%ba%e5%8d%9a%e5%ae%a21%ef%bc%88%e5%b0%86angular9%e9%a1%b9%e7%9b%ae%e9%83%a8%e7%bd%b2%e5%88%b0firebase-hosting%ef%bc%89%e8%bf%9b%e8%a1%8c\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/39011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=39011"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/39011\/revisions"}],"predecessor-version":[{"id":90827,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/39011\/revisions\/90827"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=39011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=39011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=39011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}