[{"data":1,"prerenderedAt":6395},["ShallowReactive",2],{"home-posts":3,"search-dialog-posts":1127,"home-post-count":816},[4,133,259],{"id":5,"title":6,"body":7,"category":114,"description":115,"draft":116,"extension":117,"image":118,"meta":119,"navigation":120,"path":121,"publishedAt":122,"relatedExperiments":123,"seo":125,"stem":126,"tags":127,"updatedAt":131,"__hash__":132},"posts\u002Fposts\u002F20260805.hello.md","自由實驗室開張",{"type":8,"value":9,"toc":108},"minimark",[10,14,17,20,24,27,105],[11,12,13],"p",{},"很開心，終於有一個屬於自己的部落格了！\n其實從好幾年前開始，我就一直想做自己的部落格，只是每次做到一半，都覺得好像少了點什麼。\n光是名字就想了很久，也因此拖了很長一段時間。",[11,15,16],{},"這次原本也沒有想得這麼複雜，只是想做一個放小工具的站台。\n結果做到一半才發現，站名不但太泛用，還剛好跟其他同類型的網站撞名。\n看到的時候只覺得……\n真的超級無敵尷尬。\n最後乾脆決定整個打掉重來。",[11,18,19],{},"重新整理的過程中，我也開始覺得，如果只拿來放小工具好像有點可惜。\n既然本來就有自己的部落格，也有很多平常寫下來的東西，那不如全部放在一起。\n文章、小工具、小遊戲、互動實驗，甚至一些突然想到、單純只是想做看看的東西，都可以丟進來。\n不用特別限制它一定要是什麼。\n「自由實驗室」也就這樣慢慢成形了。\n所以往後這個網站上，應該會出現很多奇奇怪怪的東西。\n技術文章可能旁邊突然出現一個小遊戲，過幾天又多了一個不知道拿來幹嘛的小工具。\n想做什麼就做什麼。\n大概就是這個地方存在的原因。",[21,22,23],"h2",{"id":23},"技術選擇",[11,25,26],{},"這次也順便把整個網站重新整理了一次，目前主要使用這些技術：",[28,29,30,46],"table",{},[31,32,33],"thead",{},[34,35,36,40,43],"tr",{},[37,38,39],"th",{},"項目",[37,41,42],{},"選擇",[37,44,45],{},"原因",[47,48,49,61,72,83,94],"tbody",{},[34,50,51,55,58],{},[52,53,54],"td",{},"框架",[52,56,57],{},"Nuxt 4",[52,59,60],{},"想繼續熟悉 Nuxt，也很適合拿來做內容型網站",[34,62,63,66,69],{},[52,64,65],{},"樣式",[52,67,68],{},"Tailwind CSS v4",[52,70,71],{},"寫樣式方便，網站要慢慢調整也比較自由",[34,73,74,77,80],{},[52,75,76],{},"元件",[52,78,79],{},"shadcn-vue",[52,81,82],{},"元件直接放在專案裡，需要修改時可以自己調整",[34,84,85,88,91],{},[52,86,87],{},"驗證",[52,89,90],{},"Zod",[52,92,93],{},"可以統一處理資料與 Content frontmatter 的格式驗證",[34,95,96,99,102],{},[52,97,98],{},"部署",[52,100,101],{},"Cloudflare Workers",[52,103,104],{},"部署方便，也可以直接搭配自己的網域",[11,106,107],{},"目前網站還在慢慢整理中。\n以前寫過的文章也會陸續搬回來，有些甚至已經是很多年前留下來的內容了。\n就先一點一點整理吧。\n至少這次，終於真的把它做出來了。",{"title":109,"searchDepth":110,"depth":110,"links":111},"",3,[112],{"id":23,"depth":113,"text":23},2,"project","原本只是想做一個小工具站，做到一半卻因為撞名決定整個重來，最後變成現在的自由實驗室。",false,"md",null,{},true,"\u002Fposts\u002Fhello","2026-08-05",[124],"bmi-calculator",{"title":6,"description":115},"posts\u002F20260805.hello",[128,129,130],"Nuxt","Cloudflare","重構","2026-08-24","GDqPOiGjUiqmnYHJ-q9L4C3qENyU0WuYEWnCz6LuxhA",{"id":134,"title":135,"body":136,"category":245,"description":246,"draft":116,"extension":117,"image":118,"meta":247,"navigation":120,"path":248,"publishedAt":249,"relatedExperiments":250,"seo":251,"stem":252,"tags":253,"updatedAt":257,"__hash__":258},"posts\u002Fposts\u002F20200203.es6-var-let-const.md","JavaScript ES6：var、let 與 const",{"type":8,"value":137,"toc":239},[138,154,158,164,171,175,183,189,197,203,207,212,218,221,227,230],[11,139,140,141,145,146,149,150,153],{},"這邊記錄 ",[142,143,144],"code",{},"var","、",[142,147,148],{},"let"," 與 ",[142,151,152],{},"const"," 變數之間差異。",[21,155,157],{"id":156},"var-宣告","var 宣告",[11,159,160,161,163],{},"使用 ",[142,162,144],{}," 宣告變數時，會先在記憶體裡面存取空間。",[11,165,166],{},[167,168],"img",{"alt":169,"src":170},"開發者工具使用 var 宣告 test 變數，宣告結果顯示 undefined","\u002Fimages\u002Fposts\u002Fes6-var-let-const\u002F01.webp",[21,172,174],{"id":173},"var-與-let-的作用域","var 與 let 的作用域",[11,176,177,179,180,182],{},[142,178,144],{}," 在 function 裡宣告，作用域是 function scope；",[142,181,148],{}," 的作用域是 block。",[11,184,185],{},[167,186],{"alt":187,"src":188},"var 與 let 在 if 區塊中的作用域比較，var 會影響外層變數，let 不會","\u002Fimages\u002Fposts\u002Fes6-var-let-const\u002F02.webp",[11,190,191,192,149,194,196],{},"下面比較 ",[142,193,144],{},[142,195,148],{}," 在迴圈裡的差異。",[11,198,199],{},[167,200],{"alt":201,"src":202},"for 迴圈分別使用 var 與 let，var 成為全域變數並輸出 10，let 依序輸出 0 到 9","\u002Fimages\u002Fposts\u002Fes6-var-let-const\u002F03.webp",[21,204,206],{"id":205},"const-常數","const 常數",[11,208,209,211],{},[142,210,152],{}," 宣告的變數不能被更換。",[11,213,214],{},[167,215],{"alt":216,"src":217},"重新指定 const 變數時出現 Assignment to constant variable 錯誤","\u002Fimages\u002Fposts\u002Fes6-var-let-const\u002F04.webp",[11,219,220],{},"物件本身是傳參考而不是傳值，因此物件內的屬性仍然可以修改。",[11,222,223],{},[167,224],{"alt":225,"src":226},"const 宣告物件後修改 a2 屬性，物件內容由 456 變成 222","\u002Fimages\u002Fposts\u002Fes6-var-let-const\u002F05.webp",[21,228,229],{"id":229},"結論",[11,231,232,233,235,236,238],{},"作用域預設使用 ",[142,234,152],{},"，需要重新賦值時才使用 ",[142,237,148],{},"。",{"title":109,"searchDepth":110,"depth":110,"links":240},[241,242,243,244],{"id":156,"depth":113,"text":157},{"id":173,"depth":113,"text":174},{"id":205,"depth":113,"text":206},{"id":229,"depth":113,"text":229},"frontend","2020 年整理的 var、let 與 const 變數宣告及作用域筆記。",{},"\u002Fposts\u002Fes6-var-let-const","2020-02-03",[],{"title":135,"description":246},"posts\u002F20200203.es6-var-let-const",[254,255,256],"JavaScript","ES6","變數宣告","2026-08-06","3yvA0FjmicBouy6o7wc7PCuHBY_Eba7xxCZizBvAL8g",{"id":260,"title":261,"body":262,"category":245,"description":1116,"draft":116,"extension":117,"image":118,"meta":1117,"navigation":120,"path":1118,"publishedAt":1119,"relatedExperiments":1120,"seo":1121,"stem":1122,"tags":1123,"updatedAt":122,"__hash__":1126},"posts\u002Fposts\u002F20180813.vue-cli3-project-setup.md","Vue CLI 3.0 安裝與建立專案筆記",{"type":8,"value":263,"toc":1083},[264,267,271,276,279,300,303,307,310,330,334,352,356,369,376,379,391,394,397,400,403,406,409,412,415,422,425,428,452,455,458,461,471,474,477,483,486,501,504,508,511,519,522,525,531,534,537,560,563,567,570,573,579,582,593,596,602,605,608,614,617,620,623,629,632,634,640,646,649,652,665,668,671,684,687,690,694,697,700,706,709,712,715,718,722,729,837,844,847,861,864,867,873,876,893,896,931,934,941,947,950,956,962,1015,1021,1025,1028,1042,1046,1049,1052,1062,1065,1068,1079],[11,265,266],{},"這篇是當時學 Vue CLI 3.0 時留下來的安裝與操作筆記。",[21,268,270],{"id":269},"安裝-vue-cli-30","安裝 Vue CLI 3.0",[272,273,275],"h3",{"id":274},"_1-確認-nodejs-版本","1. 確認 Node.js 版本",[11,277,278],{},"Node.js 需要 8.9 以上。",[280,281,285],"pre",{"className":282,"code":283,"language":284,"meta":109,"style":109},"language-bash shiki shiki-themes github-light github-dark-default","node -v\n","bash",[142,286,287],{"__ignoreMap":109},[288,289,292,296],"span",{"class":290,"line":291},"line",1,[288,293,295],{"class":294},"sYRkA","node",[288,297,299],{"class":298},"sPgVT"," -v\n",[11,301,302],{},"查看目前的 Node.js 版本。",[272,304,306],{"id":305},"_2-移除舊版-vue-cli","2. 移除舊版 Vue CLI",[11,308,309],{},"如果之前有安裝 Vue CLI 1.x 或 2.x：",[280,311,313],{"className":282,"code":312,"language":284,"meta":109,"style":109},"npm uninstall vue-cli -g\n",[142,314,315],{"__ignoreMap":109},[288,316,317,320,324,327],{"class":290,"line":291},[288,318,319],{"class":294},"npm",[288,321,323],{"class":322},"sNbzA"," uninstall",[288,325,326],{"class":322}," vue-cli",[288,328,329],{"class":298}," -g\n",[272,331,333],{"id":332},"_3-安裝-vue-cli-30","3. 安裝 Vue CLI 3.0",[280,335,337],{"className":282,"code":336,"language":284,"meta":109,"style":109},"npm install -g @vue\u002Fcli\n",[142,338,339],{"__ignoreMap":109},[288,340,341,343,346,349],{"class":290,"line":291},[288,342,319],{"class":294},[288,344,345],{"class":322}," install",[288,347,348],{"class":298}," -g",[288,350,351],{"class":322}," @vue\u002Fcli\n",[272,353,355],{"id":354},"_4-確認是否安裝成功","4. 確認是否安裝成功",[280,357,359],{"className":282,"code":358,"language":284,"meta":109,"style":109},"vue --version\n",[142,360,361],{"__ignoreMap":109},[288,362,363,366],{"class":290,"line":291},[288,364,365],{"class":294},"vue",[288,367,368],{"class":298}," --version\n",[21,370,160,372,375],{"id":371},"使用-vue-ui-建立專案",[142,373,374],{},"vue ui"," 建立專案",[11,377,378],{},"在終端機輸入：",[280,380,382],{"className":282,"code":381,"language":284,"meta":109,"style":109},"vue ui\n",[142,383,384],{"__ignoreMap":109},[288,385,386,388],{"class":290,"line":291},[288,387,365],{"class":294},[288,389,390],{"class":322}," ui\n",[11,392,393],{},"會開啟 Vue CLI 的圖形化管理介面，可以從裡面建立與管理專案。",[11,395,396],{},"專案建立完成後，可以在後台看到幾個功能。",[272,398,399],{"id":399},"插件",[11,401,402],{},"查看目前已經安裝的插件。",[272,404,405],{"id":405},"套件",[11,407,408],{},"可以新增專案需要使用的套件。",[272,410,411],{"id":411},"設定",[11,413,414],{},"可以調整專案相關設定。",[11,416,417,418,421],{},"當時有記到 ",[142,419,420],{},"Base URL","，用來設定 build 後資源的路徑。",[272,423,424],{"id":424},"任務",[11,426,427],{},"可以看到：",[280,429,431],{"className":282,"code":430,"language":284,"meta":109,"style":109},"npm run serve\nnpm run build\n",[142,432,433,443],{"__ignoreMap":109},[288,434,435,437,440],{"class":290,"line":291},[288,436,319],{"class":294},[288,438,439],{"class":322}," run",[288,441,442],{"class":322}," serve\n",[288,444,445,447,449],{"class":290,"line":113},[288,446,319],{"class":294},[288,448,439],{"class":322},[288,450,451],{"class":322}," build\n",[11,453,454],{},"等專案任務。",[11,456,457],{},"點選執行可以啟動專案，也可以從 Output 查看指令執行的訊息。",[11,459,460],{},"當時 Vue UI 裡還有 Dashboard 與分析功能，可以查看專案執行與打包後的資訊，例如：",[462,463,464,468],"ul",{},[465,466,467],"li",{},"Speed Stats：查看載入速度",[465,469,470],{},"Assets：查看各個檔案的大小",[11,472,473],{},"Build 任務則可以用來編譯專案。",[11,475,476],{},"如果原本已經用指令建立專案，也可以透過 Vue UI 的匯入功能，把專案加入管理介面。",[21,478,160,480,375],{"id":479},"使用-vue-create-建立專案",[142,481,482],{},"vue create",[11,484,485],{},"建立專案：",[280,487,489],{"className":282,"code":488,"language":284,"meta":109,"style":109},"vue create vueclidemo\n",[142,490,491],{"__ignoreMap":109},[288,492,493,495,498],{"class":290,"line":291},[288,494,365],{"class":294},[288,496,497],{"class":322}," create",[288,499,500],{"class":322}," vueclidemo\n",[11,502,503],{},"建立過程中會詢問要使用哪一種設定。",[272,505,507],{"id":506},"preset","Preset",[11,509,510],{},"可以選：",[280,512,517],{"className":513,"code":515,"language":516,"meta":109},[514],"language-text","default\n","text",[142,518,515],{"__ignoreMap":109},[11,520,521],{},"使用預設的 Babel、ESLint。",[11,523,524],{},"或選：",[280,526,529],{"className":527,"code":528,"language":516,"meta":109},[514],"Manually select features\n",[142,530,528],{"__ignoreMap":109},[11,532,533],{},"自己選擇需要的功能。",[11,535,536],{},"當時筆記裡有記到：",[462,538,539,542,545,548,551,554,557],{},[465,540,541],{},"Vue Router",[465,543,544],{},"Vuex",[465,546,547],{},"Sass",[465,549,550],{},"Babel",[465,552,553],{},"ESLint",[465,555,556],{},"Unit Testing",[465,558,559],{},"E2E Testing",[11,561,562],{},"也可以把選好的設定儲存成 Preset，之後建立其他專案時繼續使用。",[21,564,566],{"id":565},"linter-formatter","Linter \u002F Formatter",[11,568,569],{},"建立專案時可以選擇 JavaScript 的程式碼規範。",[11,571,572],{},"當時的選項包含：",[280,574,577],{"className":575,"code":576,"language":516,"meta":109},[514],"TSLint\nESLint with error prevention only\nESLint + Airbnb config\nESLint + Standard config\nESLint + Prettier\n",[142,578,576],{"__ignoreMap":109},[11,580,581],{},"當時自己的筆記是：",[462,583,584,587,590],{},[465,585,586],{},"Airbnb：規則比較嚴格",[465,588,589],{},"Standard：相對適合剛開始使用",[465,591,592],{},"初學時如果還不熟 Linter，也可以先不要選太複雜的設定",[11,594,595],{},"接著會詢問什麼時候執行 Lint：",[280,597,600],{"className":598,"code":599,"language":516,"meta":109},[514],"Lint on save\n",[142,601,599],{"__ignoreMap":109},[11,603,604],{},"存檔時檢查。",[11,606,607],{},"或：",[280,609,612],{"className":610,"code":611,"language":516,"meta":109},[514],"Lint and fix on commit\n",[142,613,611],{"__ignoreMap":109},[11,615,616],{},"Commit 時進行檢查與修正。",[21,618,619],{"id":619},"設定檔放哪裡",[11,621,622],{},"建立專案時還會詢問設定要放在哪裡。",[280,624,627],{"className":625,"code":626,"language":516,"meta":109},[514],"In dedicated config files\n",[142,628,626],{"__ignoreMap":109},[11,630,631],{},"使用獨立的設定檔。",[11,633,607],{},[280,635,638],{"className":636,"code":637,"language":516,"meta":109},[514],"In package.json\n",[142,639,637],{"__ignoreMap":109},[11,641,642,643,238],{},"把設定放進 ",[142,644,645],{},"package.json",[21,647,648],{"id":648},"啟動專案",[11,650,651],{},"安裝完成後，就可以執行：",[280,653,655],{"className":282,"code":654,"language":284,"meta":109,"style":109},"npm run serve\n",[142,656,657],{"__ignoreMap":109},[288,658,659,661,663],{"class":290,"line":291},[288,660,319],{"class":294},[288,662,439],{"class":322},[288,664,442],{"class":322},[11,666,667],{},"啟動開發環境。",[11,669,670],{},"Build：",[280,672,674],{"className":282,"code":673,"language":284,"meta":109,"style":109},"npm run build\n",[142,675,676],{"__ignoreMap":109},[288,677,678,680,682],{"class":290,"line":291},[288,679,319],{"class":294},[288,681,439],{"class":322},[288,683,451],{"class":322},[11,685,686],{},"編譯正式環境使用的檔案。",[11,688,689],{},"開發伺服器啟動後，當時會看到 Local 與 Network 的網址。",[21,691,693],{"id":692},"vue-cli-30-專案結構","Vue CLI 3.0 專案結構",[11,695,696],{},"Vue CLI 3.0 和 Vue CLI 2.0 的專案結構不太一樣。",[11,698,699],{},"當時主要記了：",[280,701,704],{"className":702,"code":703,"language":516,"meta":109},[514],"src\u002F\n├── components\u002F\n├── views\u002F\n├── router.js\n├── App.vue\n└── main.js\n",[142,705,703],{"__ignoreMap":109},[272,707,708],{"id":708},"components",[11,710,711],{},"放置專案內使用的元件。",[272,713,714],{"id":714},"views",[11,716,717],{},"放置 Router 切換的頁面元件。",[272,719,721],{"id":720},"routerjs","router.js",[11,723,724,725,728],{},"當時可以直接使用動態 ",[142,726,727],{},"import()"," 載入頁面：",[280,730,734],{"className":731,"code":732,"language":733,"meta":109,"style":109},"language-js shiki shiki-themes github-light github-dark-default","export default new Router({\n  routes: [\n    {\n      path: '\u002F',\n      name: 'home',\n      component: () => import('.\u002Fviews\u002FHome.vue'),\n    },\n  ],\n});\n","js",[142,735,736,756,762,767,779,790,814,820,828],{"__ignoreMap":109},[288,737,738,742,745,748,752],{"class":290,"line":291},[288,739,741],{"class":740},"sDgYj","export",[288,743,744],{"class":740}," default",[288,746,747],{"class":740}," new",[288,749,751],{"class":750},"sVjZL"," Router",[288,753,755],{"class":754},"sfpNf","({\n",[288,757,758],{"class":290,"line":113},[288,759,761],{"class":760},"szmH1","  routes: [\n",[288,763,764],{"class":290,"line":110},[288,765,766],{"class":760},"    {\n",[288,768,770,773,776],{"class":290,"line":769},4,[288,771,772],{"class":760},"      path: ",[288,774,775],{"class":322},"'\u002F'",[288,777,778],{"class":760},",\n",[288,780,782,785,788],{"class":290,"line":781},5,[288,783,784],{"class":760},"      name: ",[288,786,787],{"class":322},"'home'",[288,789,778],{"class":760},[288,791,793,796,799,802,805,808,811],{"class":290,"line":792},6,[288,794,795],{"class":750},"      component",[288,797,798],{"class":760},": () ",[288,800,801],{"class":740},"=>",[288,803,804],{"class":740}," import",[288,806,807],{"class":760},"(",[288,809,810],{"class":322},"'.\u002Fviews\u002FHome.vue'",[288,812,813],{"class":760},"),\n",[288,815,817],{"class":290,"line":816},7,[288,818,819],{"class":760},"    },\n",[288,821,823,826],{"class":290,"line":822},8,[288,824,825],{"class":760},"  ]",[288,827,778],{"class":754},[288,829,831,834],{"class":290,"line":830},9,[288,832,833],{"class":754},"})",[288,835,836],{"class":760},";\n",[11,838,839,840,843],{},"不用先在檔案上方把 ",[142,841,842],{},"Home.vue"," import 進來。",[11,845,846],{},"當時另外有記到：",[848,849,850],"blockquote",{},[11,851,852,853,856,857,860],{},"在 ",[142,854,855],{},"main.js"," 引入 ",[142,858,859],{},".vue"," 檔案時，要注意檔案名稱與副檔名。",[21,862,863],{"id":863},"環境變數",[11,865,866],{},"先建立：",[280,868,871],{"className":869,"code":870,"language":516,"meta":109},[514],".env\n",[142,872,870],{"__ignoreMap":109},[11,874,875],{},"當時的設定：",[280,877,881],{"className":878,"code":879,"language":880,"meta":109,"style":109},"language-env shiki shiki-themes github-light github-dark-default","VUE_APP_APIPATH=https:\u002F\u002Fvue-course-api.hexschool.io\nVUE_APP_CUSTOMPATH=rockayumitw\n","env",[142,882,883,888],{"__ignoreMap":109},[288,884,885],{"class":290,"line":291},[288,886,887],{},"VUE_APP_APIPATH=https:\u002F\u002Fvue-course-api.hexschool.io\n",[288,889,890],{"class":290,"line":113},[288,891,892],{},"VUE_APP_CUSTOMPATH=rockayumitw\n",[11,894,895],{},"在程式裡可以透過：",[280,897,899],{"className":731,"code":898,"language":733,"meta":109,"style":109},"created() {\n  console.log(process.env.VUE_APP_APIPATH);\n}\n",[142,900,901,909,926],{"__ignoreMap":109},[288,902,903,906],{"class":290,"line":291},[288,904,905],{"class":750},"created",[288,907,908],{"class":760},"() {\n",[288,910,911,914,917,920,923],{"class":290,"line":113},[288,912,913],{"class":760},"  console.",[288,915,916],{"class":750},"log",[288,918,919],{"class":760},"(process.env.",[288,921,922],{"class":298},"VUE_APP_APIPATH",[288,924,925],{"class":760},");\n",[288,927,928],{"class":290,"line":110},[288,929,930],{"class":760},"}\n",[11,932,933],{},"取得環境變數。",[11,935,936,937,940],{},"修改 ",[142,938,939],{},".env"," 後，需要重新啟動開發環境。",[21,942,944,945],{"id":943},"不同環境的-env","不同環境的 ",[142,946,939],{},[11,948,949],{},"也可以依照不同環境建立：",[280,951,954],{"className":952,"code":953,"language":516,"meta":109},[514],".env.development\n.env.production\n",[142,955,953],{"__ignoreMap":109},[11,957,958,959,961],{},"例如 ",[142,960,645],{},"：",[280,963,967],{"className":964,"code":965,"language":966,"meta":109,"style":109},"language-json shiki shiki-themes github-light github-dark-default","{\n  \"scripts\": {\n    \"serve\": \"vue-cli-service serve --mode development\",\n    \"build\": \"vue-cli-service build\"\n  }\n}\n","json",[142,968,969,974,983,996,1006,1011],{"__ignoreMap":109},[288,970,971],{"class":290,"line":291},[288,972,973],{"class":760},"{\n",[288,975,976,980],{"class":290,"line":113},[288,977,979],{"class":978},"swgif","  \"scripts\"",[288,981,982],{"class":760},": {\n",[288,984,985,988,991,994],{"class":290,"line":110},[288,986,987],{"class":978},"    \"serve\"",[288,989,990],{"class":760},": ",[288,992,993],{"class":322},"\"vue-cli-service serve --mode development\"",[288,995,778],{"class":760},[288,997,998,1001,1003],{"class":290,"line":769},[288,999,1000],{"class":978},"    \"build\"",[288,1002,990],{"class":760},[288,1004,1005],{"class":322},"\"vue-cli-service build\"\n",[288,1007,1008],{"class":290,"line":781},[288,1009,1010],{"class":760},"  }\n",[288,1012,1013],{"class":290,"line":792},[288,1014,930],{"class":760},[11,1016,1017,1018,1020],{},"當時的筆記是：如果不同 ",[142,1019,939],{}," 中有相同名稱的變數，會依照目前執行的 mode 載入對應設定。",[21,1022,1024],{"id":1023},"移除-vue-cli","移除 Vue CLI",[11,1026,1027],{},"如果需要移除舊版 Vue CLI：",[280,1029,1030],{"className":282,"code":312,"language":284,"meta":109,"style":109},[142,1031,1032],{"__ignoreMap":109},[288,1033,1034,1036,1038,1040],{"class":290,"line":291},[288,1035,319],{"class":294},[288,1037,323],{"class":322},[288,1039,326],{"class":322},[288,1041,329],{"class":298},[21,1043,1045],{"id":1044},"_2026-年後記","2026 年後記",[11,1047,1048],{},"這篇是 2018 年 Vue CLI 3.0 時期留下來的學習筆記，所以介面、建立流程、套件選項與專案結構都是當時的環境。",[11,1050,1051],{},"現在建立新的 Vue 專案已經不會以 Vue CLI 3.0 作為主要方式，因此這篇不適合直接拿來照著建立新的專案。",[11,1053,1054,1055,1057,1058,1061],{},"不過 ",[142,1056,374],{},"、Vue CLI 的 Preset、",[142,1059,1060],{},"VUE_APP_"," 環境變數，以及當時 Vue CLI 專案的結構，還是很常在舊專案裡看到。",[11,1063,1064],{},"這篇就保留當時的安裝與操作方式，作為 Vue CLI 時期的學習紀錄。",[21,1066,1067],{"id":1067},"參考資料",[462,1069,1070],{},[465,1071,1072],{},[1073,1074,1078],"a",{"href":1075,"rel":1076},"https:\u002F\u002Fcli.vuejs.org\u002Fzh\u002F",[1077],"nofollow","Vue CLI 官方文件（封存版）",[1080,1081,1082],"style",{},"html pre.shiki code .sYRkA, html code.shiki .sYRkA{--shiki-default:#6F42C1;--shiki-dark:#FFA657}html pre.shiki code .sPgVT, html code.shiki .sPgVT{--shiki-default:#005CC5;--shiki-dark:#79C0FF}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 .sNbzA, html code.shiki .sNbzA{--shiki-default:#032F62;--shiki-dark:#A5D6FF}html pre.shiki code .sDgYj, html code.shiki .sDgYj{--shiki-default:#D73A49;--shiki-dark:#FF7B72}html pre.shiki code .sVjZL, html code.shiki .sVjZL{--shiki-default:#6F42C1;--shiki-dark:#D2A8FF}html pre.shiki code .sfpNf, html code.shiki .sfpNf{--shiki-default:#24292E;--shiki-dark:#FFA657}html pre.shiki code .szmH1, html code.shiki .szmH1{--shiki-default:#24292E;--shiki-dark:#E6EDF3}html pre.shiki code .swgif, html code.shiki .swgif{--shiki-default:#005CC5;--shiki-dark:#7EE787}",{"title":109,"searchDepth":110,"depth":110,"links":1084},[1085,1091,1098,1102,1103,1104,1105,1110,1111,1113,1114,1115],{"id":269,"depth":113,"text":270,"children":1086},[1087,1088,1089,1090],{"id":274,"depth":110,"text":275},{"id":305,"depth":110,"text":306},{"id":332,"depth":110,"text":333},{"id":354,"depth":110,"text":355},{"id":371,"depth":113,"text":1092,"children":1093},"使用 vue ui 建立專案",[1094,1095,1096,1097],{"id":399,"depth":110,"text":399},{"id":405,"depth":110,"text":405},{"id":411,"depth":110,"text":411},{"id":424,"depth":110,"text":424},{"id":479,"depth":113,"text":1099,"children":1100},"使用 vue create 建立專案",[1101],{"id":506,"depth":110,"text":507},{"id":565,"depth":113,"text":566},{"id":619,"depth":113,"text":619},{"id":648,"depth":113,"text":648},{"id":692,"depth":113,"text":693,"children":1106},[1107,1108,1109],{"id":708,"depth":110,"text":708},{"id":714,"depth":110,"text":714},{"id":720,"depth":110,"text":721},{"id":863,"depth":113,"text":863},{"id":943,"depth":113,"text":1112},"不同環境的 .env",{"id":1023,"depth":113,"text":1024},{"id":1044,"depth":113,"text":1045},{"id":1067,"depth":113,"text":1067},"2018 年整理的 Vue CLI 3.0 學習筆記，包含安裝、vue ui、vue create、專案結構與環境變數設定。",{},"\u002Fposts\u002Fvue-cli3-project-setup","2018-08-13",[],{"title":261,"description":1116},"posts\u002F20180813.vue-cli3-project-setup",[1124,1125,319],"Vue","Vue CLI","0wsdoWyq32GjCD8Yd8_29zfDppMa4jhYXEVvf8xssnQ",[1128,1481,3121,5094,5636,6242,6319],{"id":1129,"title":1130,"body":1131,"category":245,"description":1471,"draft":116,"extension":117,"image":118,"meta":1472,"navigation":120,"path":1473,"publishedAt":1474,"relatedExperiments":1475,"seo":1476,"stem":1477,"tags":1478,"updatedAt":122,"__hash__":1480},"posts\u002Fposts\u002F20160919.if-switch-ternary.md","JavaScript 條件判斷：if、switch 與三元運算子",{"type":8,"value":1132,"toc":1464},[1133,1136,1139,1142,1163,1166,1169,1171,1250,1253,1256,1393,1396,1399,1421,1424,1461],[11,1134,1135],{},"這篇是當時學 JavaScript 時整理的條件判斷筆記。",[21,1137,1138],{"id":1138},"if",[11,1140,1141],{},"基本寫法：",[280,1143,1145],{"className":731,"code":1144,"language":733,"meta":109,"style":109},"if (條件) {\n  語句;\n}\n",[142,1146,1147,1154,1159],{"__ignoreMap":109},[288,1148,1149,1151],{"class":290,"line":291},[288,1150,1138],{"class":740},[288,1152,1153],{"class":760}," (條件) {\n",[288,1155,1156],{"class":290,"line":113},[288,1157,1158],{"class":760},"  語句;\n",[288,1160,1161],{"class":290,"line":110},[288,1162,930],{"class":760},[11,1164,1165],{},"條件成立時，就會執行裡面的語句。",[21,1167,1168],{"id":1168},"switch",[11,1170,1141],{},[280,1172,1174],{"className":731,"code":1173,"language":733,"meta":109,"style":109},"switch (變數) {\n  case 值1:\n    語句1;\n    break;\n\n  case 值2:\n    語句2;\n    break;\n\n  default:\n    語句n;\n}\n",[142,1175,1176,1183,1191,1196,1203,1208,1215,1220,1226,1230,1239,1245],{"__ignoreMap":109},[288,1177,1178,1180],{"class":290,"line":291},[288,1179,1168],{"class":740},[288,1181,1182],{"class":760}," (變數) {\n",[288,1184,1185,1188],{"class":290,"line":113},[288,1186,1187],{"class":740},"  case",[288,1189,1190],{"class":760}," 值1:\n",[288,1192,1193],{"class":290,"line":110},[288,1194,1195],{"class":760},"    語句1;\n",[288,1197,1198,1201],{"class":290,"line":769},[288,1199,1200],{"class":740},"    break",[288,1202,836],{"class":760},[288,1204,1205],{"class":290,"line":781},[288,1206,1207],{"emptyLinePlaceholder":120},"\n",[288,1209,1210,1212],{"class":290,"line":792},[288,1211,1187],{"class":740},[288,1213,1214],{"class":760}," 值2:\n",[288,1216,1217],{"class":290,"line":816},[288,1218,1219],{"class":760},"    語句2;\n",[288,1221,1222,1224],{"class":290,"line":822},[288,1223,1200],{"class":740},[288,1225,836],{"class":760},[288,1227,1228],{"class":290,"line":830},[288,1229,1207],{"emptyLinePlaceholder":120},[288,1231,1233,1236],{"class":290,"line":1232},10,[288,1234,1235],{"class":740},"  default",[288,1237,1238],{"class":760},":\n",[288,1240,1242],{"class":290,"line":1241},11,[288,1243,1244],{"class":760},"    語句n;\n",[288,1246,1248],{"class":290,"line":1247},12,[288,1249,930],{"class":760},[272,1251,1252],{"id":1252},"判斷男女",[11,1254,1255],{},"當時寫的一個簡單範例：",[280,1257,1259],{"className":731,"code":1258,"language":733,"meta":109,"style":109},"var name = 'abc';\nvar sex = '';\n\nswitch (sex) {\n  case '男':\n    alert(name + ' sir，您好');\n    break;\n\n  case '女':\n    alert(name + '，您好');\n    break;\n\n  default:\n    alert(name + '，您好');\n}\n",[142,1260,1261,1276,1290,1294,1301,1310,1326,1332,1336,1345,1358,1364,1368,1375,1388],{"__ignoreMap":109},[288,1262,1263,1265,1268,1271,1274],{"class":290,"line":291},[288,1264,144],{"class":740},[288,1266,1267],{"class":760}," name ",[288,1269,1270],{"class":740},"=",[288,1272,1273],{"class":322}," 'abc'",[288,1275,836],{"class":760},[288,1277,1278,1280,1283,1285,1288],{"class":290,"line":113},[288,1279,144],{"class":740},[288,1281,1282],{"class":760}," sex ",[288,1284,1270],{"class":740},[288,1286,1287],{"class":322}," ''",[288,1289,836],{"class":760},[288,1291,1292],{"class":290,"line":110},[288,1293,1207],{"emptyLinePlaceholder":120},[288,1295,1296,1298],{"class":290,"line":769},[288,1297,1168],{"class":740},[288,1299,1300],{"class":760}," (sex) {\n",[288,1302,1303,1305,1308],{"class":290,"line":781},[288,1304,1187],{"class":740},[288,1306,1307],{"class":322}," '男'",[288,1309,1238],{"class":760},[288,1311,1312,1315,1318,1321,1324],{"class":290,"line":792},[288,1313,1314],{"class":750},"    alert",[288,1316,1317],{"class":760},"(name ",[288,1319,1320],{"class":740},"+",[288,1322,1323],{"class":322}," ' sir，您好'",[288,1325,925],{"class":760},[288,1327,1328,1330],{"class":290,"line":816},[288,1329,1200],{"class":740},[288,1331,836],{"class":760},[288,1333,1334],{"class":290,"line":822},[288,1335,1207],{"emptyLinePlaceholder":120},[288,1337,1338,1340,1343],{"class":290,"line":830},[288,1339,1187],{"class":740},[288,1341,1342],{"class":322}," '女'",[288,1344,1238],{"class":760},[288,1346,1347,1349,1351,1353,1356],{"class":290,"line":1232},[288,1348,1314],{"class":750},[288,1350,1317],{"class":760},[288,1352,1320],{"class":740},[288,1354,1355],{"class":322}," '，您好'",[288,1357,925],{"class":760},[288,1359,1360,1362],{"class":290,"line":1241},[288,1361,1200],{"class":740},[288,1363,836],{"class":760},[288,1365,1366],{"class":290,"line":1247},[288,1367,1207],{"emptyLinePlaceholder":120},[288,1369,1371,1373],{"class":290,"line":1370},13,[288,1372,1235],{"class":740},[288,1374,1238],{"class":760},[288,1376,1378,1380,1382,1384,1386],{"class":290,"line":1377},14,[288,1379,1314],{"class":750},[288,1381,1317],{"class":760},[288,1383,1320],{"class":740},[288,1385,1355],{"class":322},[288,1387,925],{"class":760},[288,1389,1391],{"class":290,"line":1390},15,[288,1392,930],{"class":760},[21,1394,1395],{"id":1395},"三元運算子",[11,1397,1398],{},"三元運算子的基本格式：",[280,1400,1402],{"className":731,"code":1401,"language":733,"meta":109,"style":109},"條件 ? 成立時的值 : 不成立時的值\n",[142,1403,1404],{"__ignoreMap":109},[288,1405,1406,1409,1412,1415,1418],{"class":290,"line":291},[288,1407,1408],{"class":760},"條件 ",[288,1410,1411],{"class":740},"?",[288,1413,1414],{"class":760}," 成立時的值 ",[288,1416,1417],{"class":740},":",[288,1419,1420],{"class":760}," 不成立時的值\n",[11,1422,1423],{},"例如：",[280,1425,1427],{"className":731,"code":1426,"language":733,"meta":109,"style":109},"var result = age >= 18 ? '成年' : '未成年';\n",[142,1428,1429],{"__ignoreMap":109},[288,1430,1431,1433,1436,1438,1441,1444,1447,1450,1453,1456,1459],{"class":290,"line":291},[288,1432,144],{"class":740},[288,1434,1435],{"class":760}," result ",[288,1437,1270],{"class":740},[288,1439,1440],{"class":760}," age ",[288,1442,1443],{"class":740},">=",[288,1445,1446],{"class":298}," 18",[288,1448,1449],{"class":740}," ?",[288,1451,1452],{"class":322}," '成年'",[288,1454,1455],{"class":740}," :",[288,1457,1458],{"class":322}," '未成年'",[288,1460,836],{"class":760},[1080,1462,1463],{},"html pre.shiki code .sDgYj, html code.shiki .sDgYj{--shiki-default:#D73A49;--shiki-dark:#FF7B72}html pre.shiki code .szmH1, html code.shiki .szmH1{--shiki-default:#24292E;--shiki-dark:#E6EDF3}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 .sNbzA, html code.shiki .sNbzA{--shiki-default:#032F62;--shiki-dark:#A5D6FF}html pre.shiki code .sVjZL, html code.shiki .sVjZL{--shiki-default:#6F42C1;--shiki-dark:#D2A8FF}html pre.shiki code .sPgVT, html code.shiki .sPgVT{--shiki-default:#005CC5;--shiki-dark:#79C0FF}",{"title":109,"searchDepth":110,"depth":110,"links":1465},[1466,1467,1470],{"id":1138,"depth":113,"text":1138},{"id":1168,"depth":113,"text":1168,"children":1468},[1469],{"id":1252,"depth":110,"text":1252},{"id":1395,"depth":113,"text":1395},"2016 年整理的 JavaScript 條件判斷筆記，包含 if、switch 與三元運算子的基本寫法。",{},"\u002Fposts\u002Fif-switch-ternary","2016-09-19",[],{"title":1130,"description":1471},"posts\u002F20160919.if-switch-ternary",[254,1479],"條件判斷","dPXwwFB6y056Mc9ug83ByikB5NjDO606U7MRXBzIl5Q",{"id":1482,"title":1483,"body":1484,"category":245,"description":3109,"draft":116,"extension":117,"image":118,"meta":3110,"navigation":120,"path":3111,"publishedAt":3112,"relatedExperiments":3113,"seo":3114,"stem":3115,"tags":3116,"updatedAt":122,"__hash__":3120},"posts\u002Fposts\u002F20170126.legacy-browser-detection.md","判斷瀏覽器與手機裝置的方法",{"type":8,"value":1485,"toc":3101},[1486,1489,1493,1496,1503,1506,1512,1515,1522,1940,1944,2287,2291,2531,2535,3071,3074,3080,3082,3085,3088,3095,3098],[11,1487,1488],{},"這篇是當時整理瀏覽器與手機裝置判斷方式時留下來的筆記。",[21,1490,1492],{"id":1491},"css-hack","CSS Hack",[11,1494,1495],{},"當時參考：",[11,1497,1498],{},[1073,1499,1502],{"href":1500,"rel":1501},"https:\u002F\u002Fwww.w3cplus.com\u002Fcss\u002Fbrowser-hacks.html",[1077],"W3CPlus：CSS Browser Hacks",[11,1504,1505],{},"IE6、IE7、IE8、Firefox 的一些辨識符號：",[280,1507,1510],{"className":1508,"code":1509,"language":516,"meta":109},[514],"\\9\n*\n_\n",[142,1511,1509],{"__ignoreMap":109},[21,1513,1514],{"id":1514},"判斷手機裝置",[11,1516,1517,1518,1521],{},"透過 ",[142,1519,1520],{},"navigator.userAgent"," 判斷目前使用的裝置。",[280,1523,1525],{"className":731,"code":1524,"language":733,"meta":109,"style":109},"var uA = navigator.userAgent;\n\nif (\n  uA.match(\u002FiPod\u002F) ||\n  uA.match(\u002FiPad\u002F) ||\n  uA.match(\u002FiPhone\u002F)\n) {\n  $(\"#moLoAppDownload\").attr(\n    \"href\",\n    \"https:\u002F\u002Fitunes.apple.com\u002Fapp\u002Fapple-store\u002Fid919043762\"\n  );\n} else if (\n  uA.match(\u002FAndroid\u002F) ||\n  uA.match(\u002FWindows Phone\u002F)\n) {\n  \u002F* $(\"#moLoAppDownload\").attr(\"href\", getAPK(medium, \"\", \"\", activity)); *\u002F\n\n  $(\"#moLoAppDownload\").attr(\"href\", getAPK(medium));\n\n  $(\"#moLoAppDownload\").click(function () {\n    $(\".teachGroup\").fadeIn();\n  });\n} else {\n  $(\"#moLoAppDownload\").attr(\n    \"href\",\n    getEXE(medium, activity)\n  );\n}\n\n$(\"#closeTeach\").click(function () {\n  $(\".teachGroup\").fadeOut();\n});\n\n$(\"#homeURL\").attr(\n  \"href\",\n  location.protocol +\n    \"\u002F\u002F\" +\n    location.host +\n    \"\u002FmobileHD\u002F\"\n);\n",[142,1526,1527,1539,1543,1550,1569,1584,1598,1603,1622,1629,1634,1639,1652,1667,1680,1684,1691,1696,1723,1728,1750,1769,1775,1785,1800,1807,1816,1821,1826,1831,1852,1868,1874,1879,1895,1903,1912,1921,1929,1935],{"__ignoreMap":109},[288,1528,1529,1531,1534,1536],{"class":290,"line":291},[288,1530,144],{"class":740},[288,1532,1533],{"class":760}," uA ",[288,1535,1270],{"class":740},[288,1537,1538],{"class":760}," navigator.userAgent;\n",[288,1540,1541],{"class":290,"line":113},[288,1542,1207],{"emptyLinePlaceholder":120},[288,1544,1545,1547],{"class":290,"line":110},[288,1546,1138],{"class":740},[288,1548,1549],{"class":760}," (\n",[288,1551,1552,1555,1558,1560,1563,1566],{"class":290,"line":769},[288,1553,1554],{"class":760},"  uA.",[288,1556,1557],{"class":750},"match",[288,1559,807],{"class":760},[288,1561,1562],{"class":322},"\u002FiPod\u002F",[288,1564,1565],{"class":760},") ",[288,1567,1568],{"class":740},"||\n",[288,1570,1571,1573,1575,1577,1580,1582],{"class":290,"line":781},[288,1572,1554],{"class":760},[288,1574,1557],{"class":750},[288,1576,807],{"class":760},[288,1578,1579],{"class":322},"\u002FiPad\u002F",[288,1581,1565],{"class":760},[288,1583,1568],{"class":740},[288,1585,1586,1588,1590,1592,1595],{"class":290,"line":792},[288,1587,1554],{"class":760},[288,1589,1557],{"class":750},[288,1591,807],{"class":760},[288,1593,1594],{"class":322},"\u002FiPhone\u002F",[288,1596,1597],{"class":760},")\n",[288,1599,1600],{"class":290,"line":816},[288,1601,1602],{"class":760},") {\n",[288,1604,1605,1608,1610,1613,1616,1619],{"class":290,"line":822},[288,1606,1607],{"class":750},"  $",[288,1609,807],{"class":760},[288,1611,1612],{"class":322},"\"#moLoAppDownload\"",[288,1614,1615],{"class":760},").",[288,1617,1618],{"class":750},"attr",[288,1620,1621],{"class":760},"(\n",[288,1623,1624,1627],{"class":290,"line":830},[288,1625,1626],{"class":322},"    \"href\"",[288,1628,778],{"class":760},[288,1630,1631],{"class":290,"line":1232},[288,1632,1633],{"class":322},"    \"https:\u002F\u002Fitunes.apple.com\u002Fapp\u002Fapple-store\u002Fid919043762\"\n",[288,1635,1636],{"class":290,"line":1241},[288,1637,1638],{"class":760},"  );\n",[288,1640,1641,1644,1647,1650],{"class":290,"line":1247},[288,1642,1643],{"class":760},"} ",[288,1645,1646],{"class":740},"else",[288,1648,1649],{"class":740}," if",[288,1651,1549],{"class":760},[288,1653,1654,1656,1658,1660,1663,1665],{"class":290,"line":1370},[288,1655,1554],{"class":760},[288,1657,1557],{"class":750},[288,1659,807],{"class":760},[288,1661,1662],{"class":322},"\u002FAndroid\u002F",[288,1664,1565],{"class":760},[288,1666,1568],{"class":740},[288,1668,1669,1671,1673,1675,1678],{"class":290,"line":1377},[288,1670,1554],{"class":760},[288,1672,1557],{"class":750},[288,1674,807],{"class":760},[288,1676,1677],{"class":322},"\u002FWindows Phone\u002F",[288,1679,1597],{"class":760},[288,1681,1682],{"class":290,"line":1390},[288,1683,1602],{"class":760},[288,1685,1687],{"class":290,"line":1686},16,[288,1688,1690],{"class":1689},"sPyeA","  \u002F* $(\"#moLoAppDownload\").attr(\"href\", getAPK(medium, \"\", \"\", activity)); *\u002F\n",[288,1692,1694],{"class":290,"line":1693},17,[288,1695,1207],{"emptyLinePlaceholder":120},[288,1697,1699,1701,1703,1705,1707,1709,1711,1714,1717,1720],{"class":290,"line":1698},18,[288,1700,1607],{"class":750},[288,1702,807],{"class":760},[288,1704,1612],{"class":322},[288,1706,1615],{"class":760},[288,1708,1618],{"class":750},[288,1710,807],{"class":760},[288,1712,1713],{"class":322},"\"href\"",[288,1715,1716],{"class":760},", ",[288,1718,1719],{"class":750},"getAPK",[288,1721,1722],{"class":760},"(medium));\n",[288,1724,1726],{"class":290,"line":1725},19,[288,1727,1207],{"emptyLinePlaceholder":120},[288,1729,1731,1733,1735,1737,1739,1742,1744,1747],{"class":290,"line":1730},20,[288,1732,1607],{"class":750},[288,1734,807],{"class":760},[288,1736,1612],{"class":322},[288,1738,1615],{"class":760},[288,1740,1741],{"class":750},"click",[288,1743,807],{"class":760},[288,1745,1746],{"class":740},"function",[288,1748,1749],{"class":760}," () {\n",[288,1751,1753,1756,1758,1761,1763,1766],{"class":290,"line":1752},21,[288,1754,1755],{"class":750},"    $",[288,1757,807],{"class":760},[288,1759,1760],{"class":322},"\".teachGroup\"",[288,1762,1615],{"class":760},[288,1764,1765],{"class":750},"fadeIn",[288,1767,1768],{"class":760},"();\n",[288,1770,1772],{"class":290,"line":1771},22,[288,1773,1774],{"class":760},"  });\n",[288,1776,1778,1780,1782],{"class":290,"line":1777},23,[288,1779,1643],{"class":760},[288,1781,1646],{"class":740},[288,1783,1784],{"class":760}," {\n",[288,1786,1788,1790,1792,1794,1796,1798],{"class":290,"line":1787},24,[288,1789,1607],{"class":750},[288,1791,807],{"class":760},[288,1793,1612],{"class":322},[288,1795,1615],{"class":760},[288,1797,1618],{"class":750},[288,1799,1621],{"class":760},[288,1801,1803,1805],{"class":290,"line":1802},25,[288,1804,1626],{"class":322},[288,1806,778],{"class":760},[288,1808,1810,1813],{"class":290,"line":1809},26,[288,1811,1812],{"class":750},"    getEXE",[288,1814,1815],{"class":760},"(medium, activity)\n",[288,1817,1819],{"class":290,"line":1818},27,[288,1820,1638],{"class":760},[288,1822,1824],{"class":290,"line":1823},28,[288,1825,930],{"class":760},[288,1827,1829],{"class":290,"line":1828},29,[288,1830,1207],{"emptyLinePlaceholder":120},[288,1832,1834,1837,1839,1842,1844,1846,1848,1850],{"class":290,"line":1833},30,[288,1835,1836],{"class":750},"$",[288,1838,807],{"class":760},[288,1840,1841],{"class":322},"\"#closeTeach\"",[288,1843,1615],{"class":760},[288,1845,1741],{"class":750},[288,1847,807],{"class":760},[288,1849,1746],{"class":740},[288,1851,1749],{"class":760},[288,1853,1855,1857,1859,1861,1863,1866],{"class":290,"line":1854},31,[288,1856,1607],{"class":750},[288,1858,807],{"class":760},[288,1860,1760],{"class":322},[288,1862,1615],{"class":760},[288,1864,1865],{"class":750},"fadeOut",[288,1867,1768],{"class":760},[288,1869,1871],{"class":290,"line":1870},32,[288,1872,1873],{"class":760},"});\n",[288,1875,1877],{"class":290,"line":1876},33,[288,1878,1207],{"emptyLinePlaceholder":120},[288,1880,1882,1884,1886,1889,1891,1893],{"class":290,"line":1881},34,[288,1883,1836],{"class":750},[288,1885,807],{"class":760},[288,1887,1888],{"class":322},"\"#homeURL\"",[288,1890,1615],{"class":760},[288,1892,1618],{"class":750},[288,1894,1621],{"class":760},[288,1896,1898,1901],{"class":290,"line":1897},35,[288,1899,1900],{"class":322},"  \"href\"",[288,1902,778],{"class":760},[288,1904,1906,1909],{"class":290,"line":1905},36,[288,1907,1908],{"class":760},"  location.protocol ",[288,1910,1911],{"class":740},"+\n",[288,1913,1915,1918],{"class":290,"line":1914},37,[288,1916,1917],{"class":322},"    \"\u002F\u002F\"",[288,1919,1920],{"class":740}," +\n",[288,1922,1924,1927],{"class":290,"line":1923},38,[288,1925,1926],{"class":760},"    location.host ",[288,1928,1911],{"class":740},[288,1930,1932],{"class":290,"line":1931},39,[288,1933,1934],{"class":322},"    \"\u002FmobileHD\u002F\"\n",[288,1936,1938],{"class":290,"line":1937},40,[288,1939,925],{"class":760},[21,1941,1943],{"id":1942},"判斷-ie-版本","判斷 IE 版本",[280,1945,1947],{"className":731,"code":1946,"language":733,"meta":109,"style":109},"$(document).ready(function () {\n  var isIE = function (ver) {\n    var b = document.createElement(\"b\");\n\n    b.innerHTML =\n      \"\u003C!--[if IE \" +\n      ver +\n      \"]>\u003Ci>\u003C\u002Fi>\u003C![endif]-->\";\n\n    return (\n      b.getElementsByTagName(\"i\").length === 1\n    );\n  };\n\n  \u002F* 判斷 IE8 \u002F IE9 透明貼圖 *\u002F\n  if (isIE(8) || isIE(9)) {\n    $(\"img\").each(function () {\n      if (\n        $(this)\n          .attr(\"src\")\n          .indexOf(\".png\") != -1\n      ) {\n        $(this).css({\n          filter:\n            'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\"' +\n            $(this).attr(\"src\") +\n            '\", sizingMethod=\"scale\");',\n        });\n      }\n    });\n  }\n});\n",[142,1948,1949,1965,1988,2011,2015,2023,2030,2037,2044,2048,2055,2079,2084,2089,2093,2098,2128,2148,2155,2167,2181,2204,2209,2224,2229,2236,2257,2264,2269,2274,2279,2283],{"__ignoreMap":109},[288,1950,1951,1953,1956,1959,1961,1963],{"class":290,"line":291},[288,1952,1836],{"class":750},[288,1954,1955],{"class":760},"(document).",[288,1957,1958],{"class":750},"ready",[288,1960,807],{"class":760},[288,1962,1746],{"class":740},[288,1964,1749],{"class":760},[288,1966,1967,1970,1973,1976,1979,1982,1986],{"class":290,"line":113},[288,1968,1969],{"class":740},"  var",[288,1971,1972],{"class":750}," isIE",[288,1974,1975],{"class":740}," =",[288,1977,1978],{"class":740}," function",[288,1980,1981],{"class":760}," (",[288,1983,1985],{"class":1984},"sjlk-","ver",[288,1987,1602],{"class":760},[288,1989,1990,1993,1996,1998,2001,2004,2006,2009],{"class":290,"line":110},[288,1991,1992],{"class":740},"    var",[288,1994,1995],{"class":760}," b ",[288,1997,1270],{"class":740},[288,1999,2000],{"class":760}," document.",[288,2002,2003],{"class":750},"createElement",[288,2005,807],{"class":760},[288,2007,2008],{"class":322},"\"b\"",[288,2010,925],{"class":760},[288,2012,2013],{"class":290,"line":769},[288,2014,1207],{"emptyLinePlaceholder":120},[288,2016,2017,2020],{"class":290,"line":781},[288,2018,2019],{"class":760},"    b.innerHTML ",[288,2021,2022],{"class":740},"=\n",[288,2024,2025,2028],{"class":290,"line":792},[288,2026,2027],{"class":322},"      \"\u003C!--[if IE \"",[288,2029,1920],{"class":740},[288,2031,2032,2035],{"class":290,"line":816},[288,2033,2034],{"class":760},"      ver ",[288,2036,1911],{"class":740},[288,2038,2039,2042],{"class":290,"line":822},[288,2040,2041],{"class":322},"      \"]>\u003Ci>\u003C\u002Fi>\u003C![endif]-->\"",[288,2043,836],{"class":760},[288,2045,2046],{"class":290,"line":830},[288,2047,1207],{"emptyLinePlaceholder":120},[288,2049,2050,2053],{"class":290,"line":1232},[288,2051,2052],{"class":740},"    return",[288,2054,1549],{"class":760},[288,2056,2057,2060,2063,2065,2068,2070,2073,2076],{"class":290,"line":1241},[288,2058,2059],{"class":760},"      b.",[288,2061,2062],{"class":750},"getElementsByTagName",[288,2064,807],{"class":760},[288,2066,2067],{"class":322},"\"i\"",[288,2069,1615],{"class":760},[288,2071,2072],{"class":298},"length",[288,2074,2075],{"class":740}," ===",[288,2077,2078],{"class":298}," 1\n",[288,2080,2081],{"class":290,"line":1247},[288,2082,2083],{"class":760},"    );\n",[288,2085,2086],{"class":290,"line":1370},[288,2087,2088],{"class":760},"  };\n",[288,2090,2091],{"class":290,"line":1377},[288,2092,1207],{"emptyLinePlaceholder":120},[288,2094,2095],{"class":290,"line":1390},[288,2096,2097],{"class":1689},"  \u002F* 判斷 IE8 \u002F IE9 透明貼圖 *\u002F\n",[288,2099,2100,2103,2105,2108,2110,2113,2115,2118,2120,2122,2125],{"class":290,"line":1686},[288,2101,2102],{"class":740},"  if",[288,2104,1981],{"class":760},[288,2106,2107],{"class":750},"isIE",[288,2109,807],{"class":760},[288,2111,2112],{"class":298},"8",[288,2114,1565],{"class":760},[288,2116,2117],{"class":740},"||",[288,2119,1972],{"class":750},[288,2121,807],{"class":760},[288,2123,2124],{"class":298},"9",[288,2126,2127],{"class":760},")) {\n",[288,2129,2130,2132,2134,2137,2139,2142,2144,2146],{"class":290,"line":1693},[288,2131,1755],{"class":750},[288,2133,807],{"class":760},[288,2135,2136],{"class":322},"\"img\"",[288,2138,1615],{"class":760},[288,2140,2141],{"class":750},"each",[288,2143,807],{"class":760},[288,2145,1746],{"class":740},[288,2147,1749],{"class":760},[288,2149,2150,2153],{"class":290,"line":1698},[288,2151,2152],{"class":740},"      if",[288,2154,1549],{"class":760},[288,2156,2157,2160,2162,2165],{"class":290,"line":1725},[288,2158,2159],{"class":750},"        $",[288,2161,807],{"class":760},[288,2163,2164],{"class":298},"this",[288,2166,1597],{"class":760},[288,2168,2169,2172,2174,2176,2179],{"class":290,"line":1730},[288,2170,2171],{"class":760},"          .",[288,2173,1618],{"class":750},[288,2175,807],{"class":760},[288,2177,2178],{"class":322},"\"src\"",[288,2180,1597],{"class":760},[288,2182,2183,2185,2188,2190,2193,2195,2198,2201],{"class":290,"line":1752},[288,2184,2171],{"class":760},[288,2186,2187],{"class":750},"indexOf",[288,2189,807],{"class":760},[288,2191,2192],{"class":322},"\".png\"",[288,2194,1565],{"class":760},[288,2196,2197],{"class":740},"!=",[288,2199,2200],{"class":740}," -",[288,2202,2203],{"class":298},"1\n",[288,2205,2206],{"class":290,"line":1771},[288,2207,2208],{"class":760},"      ) {\n",[288,2210,2211,2213,2215,2217,2219,2222],{"class":290,"line":1777},[288,2212,2159],{"class":750},[288,2214,807],{"class":760},[288,2216,2164],{"class":298},[288,2218,1615],{"class":760},[288,2220,2221],{"class":750},"css",[288,2223,755],{"class":760},[288,2225,2226],{"class":290,"line":1787},[288,2227,2228],{"class":760},"          filter:\n",[288,2230,2231,2234],{"class":290,"line":1802},[288,2232,2233],{"class":322},"            'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\"'",[288,2235,1920],{"class":740},[288,2237,2238,2241,2243,2245,2247,2249,2251,2253,2255],{"class":290,"line":1809},[288,2239,2240],{"class":750},"            $",[288,2242,807],{"class":760},[288,2244,2164],{"class":298},[288,2246,1615],{"class":760},[288,2248,1618],{"class":750},[288,2250,807],{"class":760},[288,2252,2178],{"class":322},[288,2254,1565],{"class":760},[288,2256,1911],{"class":740},[288,2258,2259,2262],{"class":290,"line":1818},[288,2260,2261],{"class":322},"            '\", sizingMethod=\"scale\");'",[288,2263,778],{"class":760},[288,2265,2266],{"class":290,"line":1823},[288,2267,2268],{"class":760},"        });\n",[288,2270,2271],{"class":290,"line":1828},[288,2272,2273],{"class":760},"      }\n",[288,2275,2276],{"class":290,"line":1833},[288,2277,2278],{"class":760},"    });\n",[288,2280,2281],{"class":290,"line":1854},[288,2282,1010],{"class":760},[288,2284,2285],{"class":290,"line":1870},[288,2286,1873],{"class":760},[21,2288,2290],{"id":2289},"javascript-判斷瀏覽器版本-1","JavaScript 判斷瀏覽器：版本 1",[280,2292,2294],{"className":731,"code":2293,"language":733,"meta":109,"style":109},"var isFirefox =\n  navigator.userAgent.match(\"Firefox\");\n\u002F\u002F 判斷是否為 Firefox\n\nvar isIE =\n  \u002FTrident\\\u002F7\\.\u002F.test(navigator.userAgent);\n\nvar isOpera =\n  navigator.userAgent.match(\"Opera\");\n\u002F\u002F 判斷是否為 Opera\n\nvar isSafari =\n  navigator.userAgent.match(\"Safari\");\n\u002F\u002F 判斷是否為 Safari 或 Google Chrome\n\nif (isIE) {\n  alert(\"你使用的是 IE\");\n}\n\nif (isFirefox) {\n  alert(\"你使用的是 FireFox\");\n}\n\nif (isOpera) {\n  alert(\"你使用的是 Opera\");\n}\n\nif (isSafari) {\n  alert(\"你使用的是 Chrome 或 Safari\");\n}\n",[142,2295,2296,2305,2319,2324,2328,2337,2364,2368,2377,2390,2395,2399,2408,2421,2426,2430,2437,2449,2453,2457,2464,2475,2479,2483,2490,2501,2505,2509,2516,2527],{"__ignoreMap":109},[288,2297,2298,2300,2303],{"class":290,"line":291},[288,2299,144],{"class":740},[288,2301,2302],{"class":760}," isFirefox ",[288,2304,2022],{"class":740},[288,2306,2307,2310,2312,2314,2317],{"class":290,"line":113},[288,2308,2309],{"class":760},"  navigator.userAgent.",[288,2311,1557],{"class":750},[288,2313,807],{"class":760},[288,2315,2316],{"class":322},"\"Firefox\"",[288,2318,925],{"class":760},[288,2320,2321],{"class":290,"line":110},[288,2322,2323],{"class":1689},"\u002F\u002F 判斷是否為 Firefox\n",[288,2325,2326],{"class":290,"line":769},[288,2327,1207],{"emptyLinePlaceholder":120},[288,2329,2330,2332,2335],{"class":290,"line":781},[288,2331,144],{"class":740},[288,2333,2334],{"class":760}," isIE ",[288,2336,2022],{"class":740},[288,2338,2339,2342,2346,2349,2352,2355,2358,2361],{"class":290,"line":792},[288,2340,2341],{"class":322},"  \u002FTrident",[288,2343,2345],{"class":2344},"sh9l7","\\\u002F",[288,2347,2348],{"class":322},"7",[288,2350,2351],{"class":2344},"\\.",[288,2353,2354],{"class":322},"\u002F",[288,2356,2357],{"class":760},".",[288,2359,2360],{"class":750},"test",[288,2362,2363],{"class":760},"(navigator.userAgent);\n",[288,2365,2366],{"class":290,"line":816},[288,2367,1207],{"emptyLinePlaceholder":120},[288,2369,2370,2372,2375],{"class":290,"line":822},[288,2371,144],{"class":740},[288,2373,2374],{"class":760}," isOpera ",[288,2376,2022],{"class":740},[288,2378,2379,2381,2383,2385,2388],{"class":290,"line":830},[288,2380,2309],{"class":760},[288,2382,1557],{"class":750},[288,2384,807],{"class":760},[288,2386,2387],{"class":322},"\"Opera\"",[288,2389,925],{"class":760},[288,2391,2392],{"class":290,"line":1232},[288,2393,2394],{"class":1689},"\u002F\u002F 判斷是否為 Opera\n",[288,2396,2397],{"class":290,"line":1241},[288,2398,1207],{"emptyLinePlaceholder":120},[288,2400,2401,2403,2406],{"class":290,"line":1247},[288,2402,144],{"class":740},[288,2404,2405],{"class":760}," isSafari ",[288,2407,2022],{"class":740},[288,2409,2410,2412,2414,2416,2419],{"class":290,"line":1370},[288,2411,2309],{"class":760},[288,2413,1557],{"class":750},[288,2415,807],{"class":760},[288,2417,2418],{"class":322},"\"Safari\"",[288,2420,925],{"class":760},[288,2422,2423],{"class":290,"line":1377},[288,2424,2425],{"class":1689},"\u002F\u002F 判斷是否為 Safari 或 Google Chrome\n",[288,2427,2428],{"class":290,"line":1390},[288,2429,1207],{"emptyLinePlaceholder":120},[288,2431,2432,2434],{"class":290,"line":1686},[288,2433,1138],{"class":740},[288,2435,2436],{"class":760}," (isIE) {\n",[288,2438,2439,2442,2444,2447],{"class":290,"line":1693},[288,2440,2441],{"class":750},"  alert",[288,2443,807],{"class":760},[288,2445,2446],{"class":322},"\"你使用的是 IE\"",[288,2448,925],{"class":760},[288,2450,2451],{"class":290,"line":1698},[288,2452,930],{"class":760},[288,2454,2455],{"class":290,"line":1725},[288,2456,1207],{"emptyLinePlaceholder":120},[288,2458,2459,2461],{"class":290,"line":1730},[288,2460,1138],{"class":740},[288,2462,2463],{"class":760}," (isFirefox) {\n",[288,2465,2466,2468,2470,2473],{"class":290,"line":1752},[288,2467,2441],{"class":750},[288,2469,807],{"class":760},[288,2471,2472],{"class":322},"\"你使用的是 FireFox\"",[288,2474,925],{"class":760},[288,2476,2477],{"class":290,"line":1771},[288,2478,930],{"class":760},[288,2480,2481],{"class":290,"line":1777},[288,2482,1207],{"emptyLinePlaceholder":120},[288,2484,2485,2487],{"class":290,"line":1787},[288,2486,1138],{"class":740},[288,2488,2489],{"class":760}," (isOpera) {\n",[288,2491,2492,2494,2496,2499],{"class":290,"line":1802},[288,2493,2441],{"class":750},[288,2495,807],{"class":760},[288,2497,2498],{"class":322},"\"你使用的是 Opera\"",[288,2500,925],{"class":760},[288,2502,2503],{"class":290,"line":1809},[288,2504,930],{"class":760},[288,2506,2507],{"class":290,"line":1818},[288,2508,1207],{"emptyLinePlaceholder":120},[288,2510,2511,2513],{"class":290,"line":1823},[288,2512,1138],{"class":740},[288,2514,2515],{"class":760}," (isSafari) {\n",[288,2517,2518,2520,2522,2525],{"class":290,"line":1828},[288,2519,2441],{"class":750},[288,2521,807],{"class":760},[288,2523,2524],{"class":322},"\"你使用的是 Chrome 或 Safari\"",[288,2526,925],{"class":760},[288,2528,2529],{"class":290,"line":1833},[288,2530,930],{"class":760},[21,2532,2534],{"id":2533},"javascript-判斷瀏覽器版本-2","JavaScript 判斷瀏覽器：版本 2",[280,2536,2538],{"className":731,"code":2537,"language":733,"meta":109,"style":109},"\u002F\u002F Opera 8.0+\nvar isOpera =\n  (!!window.opr && !!opr.addons) ||\n  !!window.opera ||\n  navigator.userAgent.indexOf(\" OPR\u002F\") >= 0;\n\n\u002F\u002F Firefox 1.0+\nvar isFirefox =\n  typeof InstallTrigger !== \"undefined\";\n\n\u002F\u002F At least Safari 3+\nvar isSafari =\n  Object.prototype.toString\n    .call(window.HTMLElement)\n    .indexOf(\"Constructor\") > 0;\n\n\u002F\u002F Internet Explorer 6-11\nvar isIE =\n  false || !!document.documentMode;\n\n\u002F\u002F Edge 20+\nvar isEdge =\n  !isIE && !!window.StyleMedia;\n\n\u002F\u002F Chrome 1+\nvar isChrome =\n  !!window.chrome &&\n  !!window.chrome.webstore;\n\n\u002F\u002F Blink engine detection\nvar isBlink =\n  (isChrome || isOpera) &&\n  !!window.CSS;\n\nvar output =\n  \"Detecting browsers by ducktyping:\u003Chr>\";\n\noutput +=\n  \"isFirefox: \" + isFirefox + \"\u003Cbr>\";\n\noutput +=\n  \"isChrome: \" + isChrome + \"\u003Cbr>\";\n\noutput +=\n  \"isSafari: \" + isSafari + \"\u003Cbr>\";\n\noutput +=\n  \"isOpera: \" + isOpera + \"\u003Cbr>\";\n\noutput +=\n  \"isIE: \" + isIE + \"\u003Cbr>\";\n\noutput +=\n  \"isEdge: \" + isEdge + \"\u003Cbr>\";\n\noutput +=\n  \"isBlink: \" + isBlink + \"\u003Cbr>\";\n\ndocument.body.innerHTML = output;\n",[142,2539,2540,2545,2553,2575,2585,2605,2609,2614,2622,2638,2642,2647,2655,2668,2679,2699,2703,2708,2716,2729,2733,2738,2747,2762,2766,2771,2780,2790,2797,2801,2806,2815,2827,2839,2843,2852,2859,2863,2871,2888,2892,2899,2915,2920,2927,2943,2948,2955,2971,2976,2983,2999,3004,3011,3027,3032,3039,3055,3060],{"__ignoreMap":109},[288,2541,2542],{"class":290,"line":291},[288,2543,2544],{"class":1689},"\u002F\u002F Opera 8.0+\n",[288,2546,2547,2549,2551],{"class":290,"line":113},[288,2548,144],{"class":740},[288,2550,2374],{"class":760},[288,2552,2022],{"class":740},[288,2554,2555,2558,2561,2564,2567,2570,2573],{"class":290,"line":110},[288,2556,2557],{"class":760},"  (",[288,2559,2560],{"class":740},"!!",[288,2562,2563],{"class":760},"window.opr ",[288,2565,2566],{"class":740},"&&",[288,2568,2569],{"class":740}," !!",[288,2571,2572],{"class":760},"opr.addons) ",[288,2574,1568],{"class":740},[288,2576,2577,2580,2583],{"class":290,"line":769},[288,2578,2579],{"class":740},"  !!",[288,2581,2582],{"class":760},"window.opera ",[288,2584,1568],{"class":740},[288,2586,2587,2589,2591,2593,2596,2598,2600,2603],{"class":290,"line":781},[288,2588,2309],{"class":760},[288,2590,2187],{"class":750},[288,2592,807],{"class":760},[288,2594,2595],{"class":322},"\" OPR\u002F\"",[288,2597,1565],{"class":760},[288,2599,1443],{"class":740},[288,2601,2602],{"class":298}," 0",[288,2604,836],{"class":760},[288,2606,2607],{"class":290,"line":792},[288,2608,1207],{"emptyLinePlaceholder":120},[288,2610,2611],{"class":290,"line":816},[288,2612,2613],{"class":1689},"\u002F\u002F Firefox 1.0+\n",[288,2615,2616,2618,2620],{"class":290,"line":822},[288,2617,144],{"class":740},[288,2619,2302],{"class":760},[288,2621,2022],{"class":740},[288,2623,2624,2627,2630,2633,2636],{"class":290,"line":830},[288,2625,2626],{"class":740},"  typeof",[288,2628,2629],{"class":760}," InstallTrigger ",[288,2631,2632],{"class":740},"!==",[288,2634,2635],{"class":322}," \"undefined\"",[288,2637,836],{"class":760},[288,2639,2640],{"class":290,"line":1232},[288,2641,1207],{"emptyLinePlaceholder":120},[288,2643,2644],{"class":290,"line":1241},[288,2645,2646],{"class":1689},"\u002F\u002F At least Safari 3+\n",[288,2648,2649,2651,2653],{"class":290,"line":1247},[288,2650,144],{"class":740},[288,2652,2405],{"class":760},[288,2654,2022],{"class":740},[288,2656,2657,2660,2662,2665],{"class":290,"line":1370},[288,2658,2659],{"class":298},"  Object",[288,2661,2357],{"class":760},[288,2663,2664],{"class":298},"prototype",[288,2666,2667],{"class":760},".toString\n",[288,2669,2670,2673,2676],{"class":290,"line":1377},[288,2671,2672],{"class":760},"    .",[288,2674,2675],{"class":750},"call",[288,2677,2678],{"class":760},"(window.HTMLElement)\n",[288,2680,2681,2683,2685,2687,2690,2692,2695,2697],{"class":290,"line":1390},[288,2682,2672],{"class":760},[288,2684,2187],{"class":750},[288,2686,807],{"class":760},[288,2688,2689],{"class":322},"\"Constructor\"",[288,2691,1565],{"class":760},[288,2693,2694],{"class":740},">",[288,2696,2602],{"class":298},[288,2698,836],{"class":760},[288,2700,2701],{"class":290,"line":1686},[288,2702,1207],{"emptyLinePlaceholder":120},[288,2704,2705],{"class":290,"line":1693},[288,2706,2707],{"class":1689},"\u002F\u002F Internet Explorer 6-11\n",[288,2709,2710,2712,2714],{"class":290,"line":1698},[288,2711,144],{"class":740},[288,2713,2334],{"class":760},[288,2715,2022],{"class":740},[288,2717,2718,2721,2724,2726],{"class":290,"line":1725},[288,2719,2720],{"class":298},"  false",[288,2722,2723],{"class":740}," ||",[288,2725,2569],{"class":740},[288,2727,2728],{"class":760},"document.documentMode;\n",[288,2730,2731],{"class":290,"line":1730},[288,2732,1207],{"emptyLinePlaceholder":120},[288,2734,2735],{"class":290,"line":1752},[288,2736,2737],{"class":1689},"\u002F\u002F Edge 20+\n",[288,2739,2740,2742,2745],{"class":290,"line":1771},[288,2741,144],{"class":740},[288,2743,2744],{"class":760}," isEdge ",[288,2746,2022],{"class":740},[288,2748,2749,2752,2755,2757,2759],{"class":290,"line":1777},[288,2750,2751],{"class":740},"  !",[288,2753,2754],{"class":760},"isIE ",[288,2756,2566],{"class":740},[288,2758,2569],{"class":740},[288,2760,2761],{"class":760},"window.StyleMedia;\n",[288,2763,2764],{"class":290,"line":1787},[288,2765,1207],{"emptyLinePlaceholder":120},[288,2767,2768],{"class":290,"line":1802},[288,2769,2770],{"class":1689},"\u002F\u002F Chrome 1+\n",[288,2772,2773,2775,2778],{"class":290,"line":1809},[288,2774,144],{"class":740},[288,2776,2777],{"class":760}," isChrome ",[288,2779,2022],{"class":740},[288,2781,2782,2784,2787],{"class":290,"line":1818},[288,2783,2579],{"class":740},[288,2785,2786],{"class":760},"window.chrome ",[288,2788,2789],{"class":740},"&&\n",[288,2791,2792,2794],{"class":290,"line":1823},[288,2793,2579],{"class":740},[288,2795,2796],{"class":760},"window.chrome.webstore;\n",[288,2798,2799],{"class":290,"line":1828},[288,2800,1207],{"emptyLinePlaceholder":120},[288,2802,2803],{"class":290,"line":1833},[288,2804,2805],{"class":1689},"\u002F\u002F Blink engine detection\n",[288,2807,2808,2810,2813],{"class":290,"line":1854},[288,2809,144],{"class":740},[288,2811,2812],{"class":760}," isBlink ",[288,2814,2022],{"class":740},[288,2816,2817,2820,2822,2825],{"class":290,"line":1870},[288,2818,2819],{"class":760},"  (isChrome ",[288,2821,2117],{"class":740},[288,2823,2824],{"class":760}," isOpera) ",[288,2826,2789],{"class":740},[288,2828,2829,2831,2834,2837],{"class":290,"line":1876},[288,2830,2579],{"class":740},[288,2832,2833],{"class":760},"window.",[288,2835,2836],{"class":298},"CSS",[288,2838,836],{"class":760},[288,2840,2841],{"class":290,"line":1881},[288,2842,1207],{"emptyLinePlaceholder":120},[288,2844,2845,2847,2850],{"class":290,"line":1897},[288,2846,144],{"class":740},[288,2848,2849],{"class":760}," output ",[288,2851,2022],{"class":740},[288,2853,2854,2857],{"class":290,"line":1905},[288,2855,2856],{"class":322},"  \"Detecting browsers by ducktyping:\u003Chr>\"",[288,2858,836],{"class":760},[288,2860,2861],{"class":290,"line":1914},[288,2862,1207],{"emptyLinePlaceholder":120},[288,2864,2865,2868],{"class":290,"line":1923},[288,2866,2867],{"class":760},"output ",[288,2869,2870],{"class":740},"+=\n",[288,2872,2873,2876,2879,2881,2883,2886],{"class":290,"line":1931},[288,2874,2875],{"class":322},"  \"isFirefox: \"",[288,2877,2878],{"class":740}," +",[288,2880,2302],{"class":760},[288,2882,1320],{"class":740},[288,2884,2885],{"class":322}," \"\u003Cbr>\"",[288,2887,836],{"class":760},[288,2889,2890],{"class":290,"line":1937},[288,2891,1207],{"emptyLinePlaceholder":120},[288,2893,2895,2897],{"class":290,"line":2894},41,[288,2896,2867],{"class":760},[288,2898,2870],{"class":740},[288,2900,2902,2905,2907,2909,2911,2913],{"class":290,"line":2901},42,[288,2903,2904],{"class":322},"  \"isChrome: \"",[288,2906,2878],{"class":740},[288,2908,2777],{"class":760},[288,2910,1320],{"class":740},[288,2912,2885],{"class":322},[288,2914,836],{"class":760},[288,2916,2918],{"class":290,"line":2917},43,[288,2919,1207],{"emptyLinePlaceholder":120},[288,2921,2923,2925],{"class":290,"line":2922},44,[288,2924,2867],{"class":760},[288,2926,2870],{"class":740},[288,2928,2930,2933,2935,2937,2939,2941],{"class":290,"line":2929},45,[288,2931,2932],{"class":322},"  \"isSafari: \"",[288,2934,2878],{"class":740},[288,2936,2405],{"class":760},[288,2938,1320],{"class":740},[288,2940,2885],{"class":322},[288,2942,836],{"class":760},[288,2944,2946],{"class":290,"line":2945},46,[288,2947,1207],{"emptyLinePlaceholder":120},[288,2949,2951,2953],{"class":290,"line":2950},47,[288,2952,2867],{"class":760},[288,2954,2870],{"class":740},[288,2956,2958,2961,2963,2965,2967,2969],{"class":290,"line":2957},48,[288,2959,2960],{"class":322},"  \"isOpera: \"",[288,2962,2878],{"class":740},[288,2964,2374],{"class":760},[288,2966,1320],{"class":740},[288,2968,2885],{"class":322},[288,2970,836],{"class":760},[288,2972,2974],{"class":290,"line":2973},49,[288,2975,1207],{"emptyLinePlaceholder":120},[288,2977,2979,2981],{"class":290,"line":2978},50,[288,2980,2867],{"class":760},[288,2982,2870],{"class":740},[288,2984,2986,2989,2991,2993,2995,2997],{"class":290,"line":2985},51,[288,2987,2988],{"class":322},"  \"isIE: \"",[288,2990,2878],{"class":740},[288,2992,2334],{"class":760},[288,2994,1320],{"class":740},[288,2996,2885],{"class":322},[288,2998,836],{"class":760},[288,3000,3002],{"class":290,"line":3001},52,[288,3003,1207],{"emptyLinePlaceholder":120},[288,3005,3007,3009],{"class":290,"line":3006},53,[288,3008,2867],{"class":760},[288,3010,2870],{"class":740},[288,3012,3014,3017,3019,3021,3023,3025],{"class":290,"line":3013},54,[288,3015,3016],{"class":322},"  \"isEdge: \"",[288,3018,2878],{"class":740},[288,3020,2744],{"class":760},[288,3022,1320],{"class":740},[288,3024,2885],{"class":322},[288,3026,836],{"class":760},[288,3028,3030],{"class":290,"line":3029},55,[288,3031,1207],{"emptyLinePlaceholder":120},[288,3033,3035,3037],{"class":290,"line":3034},56,[288,3036,2867],{"class":760},[288,3038,2870],{"class":740},[288,3040,3042,3045,3047,3049,3051,3053],{"class":290,"line":3041},57,[288,3043,3044],{"class":322},"  \"isBlink: \"",[288,3046,2878],{"class":740},[288,3048,2812],{"class":760},[288,3050,1320],{"class":740},[288,3052,2885],{"class":322},[288,3054,836],{"class":760},[288,3056,3058],{"class":290,"line":3057},58,[288,3059,1207],{"emptyLinePlaceholder":120},[288,3061,3063,3066,3068],{"class":290,"line":3062},59,[288,3064,3065],{"class":760},"document.body.innerHTML ",[288,3067,1270],{"class":740},[288,3069,3070],{"class":760}," output;\n",[11,3072,3073],{},"當時在 Chrome 上測試的輸出：",[280,3075,3078],{"className":3076,"code":3077,"language":516,"meta":109},[514],"isFirefox: false\nisChrome: true\nisSafari: false\nisOpera: false\nisIE: false\nisEdge: false\nisBlink: true\n",[142,3079,3077],{"__ignoreMap":109},[21,3081,1045],{"id":1044},[11,3083,3084],{},"這篇是 2017 年留下來的瀏覽器相容性筆記，所以保留了當時使用 User Agent、IE 條件註解、jQuery 與瀏覽器特徵判斷的寫法。",[11,3086,3087],{},"現在瀏覽器環境已經和當時差很多，像是 IE、舊版 Edge、Windows Phone，以及程式碼裡拿來判斷瀏覽器的部分 API，都已經不適合直接套用到現在的新專案。",[11,3089,3090,3091,3094],{},"原文中的 ",[142,3092,3093],{},"AlphaImageLoader"," 也是早期 Internet Explorer 使用的專有濾鏡。這段程式碼保留下來，是作為當時處理瀏覽器相容性問題的紀錄，不建議拿來當現在的實作方式。",[11,3096,3097],{},"至於現在如果需要判斷裝置或瀏覽器能力，我會另外整理新的做法；這篇就先保留當年的版本。",[1080,3099,3100],{},"html pre.shiki code .sDgYj, html code.shiki .sDgYj{--shiki-default:#D73A49;--shiki-dark:#FF7B72}html pre.shiki code .szmH1, html code.shiki .szmH1{--shiki-default:#24292E;--shiki-dark:#E6EDF3}html pre.shiki code .sVjZL, html code.shiki .sVjZL{--shiki-default:#6F42C1;--shiki-dark:#D2A8FF}html pre.shiki code .sNbzA, html code.shiki .sNbzA{--shiki-default:#032F62;--shiki-dark:#A5D6FF}html pre.shiki code .sPyeA, html code.shiki .sPyeA{--shiki-default:#6A737D;--shiki-dark:#8B949E}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 .sjlk-, html code.shiki .sjlk-{--shiki-default:#E36209;--shiki-dark:#FFA657}html pre.shiki code .sPgVT, html code.shiki .sPgVT{--shiki-default:#005CC5;--shiki-dark:#79C0FF}html pre.shiki code .sh9l7, html code.shiki .sh9l7{--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#7EE787;--shiki-dark-font-weight:bold}",{"title":109,"searchDepth":110,"depth":110,"links":3102},[3103,3104,3105,3106,3107,3108],{"id":1491,"depth":113,"text":1492},{"id":1514,"depth":113,"text":1514},{"id":1942,"depth":113,"text":1943},{"id":2289,"depth":113,"text":2290},{"id":2533,"depth":113,"text":2534},{"id":1044,"depth":113,"text":1045},"2017 年整理的瀏覽器與手機裝置判斷筆記，包含 User Agent、IE 判斷、CSS Hack 與不同瀏覽器的判斷方式。",{},"\u002Fposts\u002Flegacy-browser-detection","2017-01-26",[],{"title":1483,"description":3109},"posts\u002F20170126.legacy-browser-detection",[254,3117,3118,3119],"jQuery","IE","瀏覽器偵測","upOlKnPsbMT6pXq5GRVGBk0NuzYSLqmR31NLIB357l4",{"id":3122,"title":3123,"body":3124,"category":5082,"description":5083,"draft":116,"extension":117,"image":118,"meta":5084,"navigation":120,"path":5085,"publishedAt":5086,"relatedExperiments":5087,"seo":5088,"stem":5089,"tags":5090,"updatedAt":122,"__hash__":5093},"posts\u002Fposts\u002F20180105.git-commands-cheatsheet.md","Git 常用指令與終端機筆記",{"type":8,"value":3125,"toc":5016},[3126,3129,3132,3141,3144,3157,3160,3172,3175,3188,3191,3203,3206,3215,3218,3221,3234,3237,3250,3253,3256,3265,3268,3281,3284,3290,3293,3311,3314,3326,3329,3345,3348,3363,3366,3384,3387,3399,3402,3417,3424,3439,3442,3447,3451,3463,3466,3470,3473,3479,3482,3485,3497,3500,3506,3509,3512,3527,3530,3533,3536,3542,3545,3548,3551,3554,3569,3572,3586,3589,3592,3610,3616,3632,3635,3641,3644,3656,3659,3662,3668,3671,3689,3692,3709,3712,3714,3720,3723,3726,3745,3749,3768,3772,3789,3793,3796,3821,3824,3842,3845,3848,3851,3857,3861,3864,3893,3896,3902,3905,3911,3924,3927,3933,3936,3941,3944,3947,3961,3964,3969,3972,3975,3981,3984,3998,4001,4004,4018,4021,4037,4041,4044,4056,4058,4073,4079,4081,4095,4098,4112,4115,4119,4136,4139,4143,4159,4162,4169,4173,4189,4192,4195,4199,4211,4214,4217,4220,4226,4229,4235,4238,4241,4253,4256,4271,4274,4290,4293,4296,4309,4312,4328,4331,4333,4339,4342,4348,4351,4354,4356,4362,4365,4368,4382,4385,4399,4402,4405,4411,4415,4418,4435,4438,4441,4446,4448,4452,4455,4470,4473,4479,4483,4486,4501,4504,4538,4541,4571,4574,4577,4583,4587,4590,4592,4611,4615,4618,4637,4640,4652,4655,4666,4669,4714,4717,4743,4747,4750,4756,4759,4765,4768,4774,4777,4782,4786,4789,4795,4798,4811,4814,4816,4826,4829,4836,4846,4849,4861,4864,4878,4881,4893,4896,4910,4916,4922,4925,4937,4940,4946,4949,4956,4968,4971,4974,4977,4983,4994,5000,5010,5013],[11,3127,3128],{},"這篇是當時學 Git 時整理下來的指令筆記，除了 Git 本身，也一起記了一些終端機、SourceTree 和 Vim 的操作。",[21,3130,3131],{"id":3131},"基本終端機指令",[280,3133,3135],{"className":282,"code":3134,"language":284,"meta":109,"style":109},"ls\n",[142,3136,3137],{"__ignoreMap":109},[288,3138,3139],{"class":290,"line":291},[288,3140,3134],{"class":294},[11,3142,3143],{},"可以看到目前目錄下的檔案。",[280,3145,3147],{"className":282,"code":3146,"language":284,"meta":109,"style":109},"ls -a\n",[142,3148,3149],{"__ignoreMap":109},[288,3150,3151,3154],{"class":290,"line":291},[288,3152,3153],{"class":294},"ls",[288,3155,3156],{"class":298}," -a\n",[11,3158,3159],{},"顯示包含隱藏檔案在內的內容。",[280,3161,3163],{"className":282,"code":3162,"language":284,"meta":109,"style":109},"ls -al\n",[142,3164,3165],{"__ignoreMap":109},[288,3166,3167,3169],{"class":290,"line":291},[288,3168,3153],{"class":294},[288,3170,3171],{"class":298}," -al\n",[11,3173,3174],{},"顯示比較完整的檔案資訊。",[280,3176,3178],{"className":282,"code":3177,"language":284,"meta":109,"style":109},"which git\n",[142,3179,3180],{"__ignoreMap":109},[288,3181,3182,3185],{"class":290,"line":291},[288,3183,3184],{"class":298},"which",[288,3186,3187],{"class":322}," git\n",[11,3189,3190],{},"查看 Git 安裝在哪裡。",[280,3192,3194],{"className":282,"code":3193,"language":284,"meta":109,"style":109},"git --version\n",[142,3195,3196],{"__ignoreMap":109},[288,3197,3198,3201],{"class":290,"line":291},[288,3199,3200],{"class":294},"git",[288,3202,368],{"class":298},[11,3204,3205],{},"查看目前 Git 版本。",[280,3207,3209],{"className":282,"code":3208,"language":284,"meta":109,"style":109},"pwd\n",[142,3210,3211],{"__ignoreMap":109},[288,3212,3213],{"class":290,"line":291},[288,3214,3208],{"class":298},[11,3216,3217],{},"查看現在所在的位置。",[272,3219,3220],{"id":3220},"建立檔案與資料夾",[280,3222,3224],{"className":282,"code":3223,"language":284,"meta":109,"style":109},"touch git.html\n",[142,3225,3226],{"__ignoreMap":109},[288,3227,3228,3231],{"class":290,"line":291},[288,3229,3230],{"class":294},"touch",[288,3232,3233],{"class":322}," git.html\n",[11,3235,3236],{},"建立檔案。",[280,3238,3240],{"className":282,"code":3239,"language":284,"meta":109,"style":109},"mkdir test\n",[142,3241,3242],{"__ignoreMap":109},[288,3243,3244,3247],{"class":290,"line":291},[288,3245,3246],{"class":294},"mkdir",[288,3248,3249],{"class":322}," test\n",[11,3251,3252],{},"建立新的資料夾。",[11,3254,3255],{},"當時有特別記：",[848,3257,3258],{},[11,3259,3260,3261,3264],{},"建立空的資料夾時 Git 不會感應到，要在資料夾裡面放入檔案後，",[142,3262,3263],{},"git status"," 才會出現。\n空的目錄本身無法提交到 Git。",[272,3266,3267],{"id":3267},"查看與操作檔案",[280,3269,3271],{"className":282,"code":3270,"language":284,"meta":109,"style":109},"echo \"hello\"\n",[142,3272,3273],{"__ignoreMap":109},[288,3274,3275,3278],{"class":290,"line":291},[288,3276,3277],{"class":298},"echo",[288,3279,3280],{"class":322}," \"hello\"\n",[11,3282,3283],{},"列印出：",[280,3285,3288],{"className":3286,"code":3287,"language":516,"meta":109},[514],"hello\n",[142,3289,3287],{"__ignoreMap":109},[11,3291,3292],{},"把內容寫入檔案：",[280,3294,3296],{"className":282,"code":3295,"language":284,"meta":109,"style":109},"echo \"hello\" > world.html\n",[142,3297,3298],{"__ignoreMap":109},[288,3299,3300,3302,3305,3308],{"class":290,"line":291},[288,3301,3277],{"class":298},[288,3303,3304],{"class":322}," \"hello\"",[288,3306,3307],{"class":740}," >",[288,3309,3310],{"class":322}," world.html\n",[11,3312,3313],{},"查看檔案內容：",[280,3315,3317],{"className":282,"code":3316,"language":284,"meta":109,"style":109},"cat world.html\n",[142,3318,3319],{"__ignoreMap":109},[288,3320,3321,3324],{"class":290,"line":291},[288,3322,3323],{"class":294},"cat",[288,3325,3310],{"class":322},[11,3327,3328],{},"複製檔案：",[280,3330,3332],{"className":282,"code":3331,"language":284,"meta":109,"style":109},"cp test.html asd.html\n",[142,3333,3334],{"__ignoreMap":109},[288,3335,3336,3339,3342],{"class":290,"line":291},[288,3337,3338],{"class":294},"cp",[288,3340,3341],{"class":322}," test.html",[288,3343,3344],{"class":322}," asd.html\n",[11,3346,3347],{},"移動或重新命名：",[280,3349,3351],{"className":282,"code":3350,"language":284,"meta":109,"style":109},"mv test.html cde.html\n",[142,3352,3353],{"__ignoreMap":109},[288,3354,3355,3358,3360],{"class":290,"line":291},[288,3356,3357],{"class":294},"mv",[288,3359,3341],{"class":322},[288,3361,3362],{"class":322}," cde.html\n",[11,3364,3365],{},"也可以直接用：",[280,3367,3369],{"className":282,"code":3368,"language":284,"meta":109,"style":109},"git mv test2.html ruby.html\n",[142,3370,3371],{"__ignoreMap":109},[288,3372,3373,3375,3378,3381],{"class":290,"line":291},[288,3374,3200],{"class":294},[288,3376,3377],{"class":322}," mv",[288,3379,3380],{"class":322}," test2.html",[288,3382,3383],{"class":322}," ruby.html\n",[272,3385,3386],{"id":3386},"刪除檔案",[280,3388,3390],{"className":282,"code":3389,"language":284,"meta":109,"style":109},"rm cde.html\n",[142,3391,3392],{"__ignoreMap":109},[288,3393,3394,3397],{"class":290,"line":291},[288,3395,3396],{"class":294},"rm",[288,3398,3362],{"class":322},[11,3400,3401],{},"直接刪除檔案。",[280,3403,3405],{"className":282,"code":3404,"language":284,"meta":109,"style":109},"rm *.html\n",[142,3406,3407],{"__ignoreMap":109},[288,3408,3409,3411,3414],{"class":290,"line":291},[288,3410,3396],{"class":294},[288,3412,3413],{"class":298}," *",[288,3415,3416],{"class":322},".html\n",[11,3418,3419,3420,3423],{},"刪除目前目錄下所有 ",[142,3421,3422],{},".html"," 檔案。",[280,3425,3427],{"className":282,"code":3426,"language":284,"meta":109,"style":109},"rm -rf .git\n",[142,3428,3429],{"__ignoreMap":109},[288,3430,3431,3433,3436],{"class":290,"line":291},[288,3432,3396],{"class":294},[288,3434,3435],{"class":298}," -rf",[288,3437,3438],{"class":322}," .git\n",[11,3440,3441],{},"刪除目前專案的 Git 版控資料。",[848,3443,3444],{},[11,3445,3446],{},"這個指令要非常小心。",[21,3448,3450],{"id":3449},"git-初始化","Git 初始化",[280,3452,3454],{"className":282,"code":3453,"language":284,"meta":109,"style":109},"git init\n",[142,3455,3456],{"__ignoreMap":109},[288,3457,3458,3460],{"class":290,"line":291},[288,3459,3200],{"class":294},[288,3461,3462],{"class":322}," init\n",[11,3464,3465],{},"初始化 Git，讓目前這個目錄開始由 Git 控管。",[272,3467,3469],{"id":3468},"sourcetree","SourceTree",[11,3471,3472],{},"當時使用 SourceTree 的方式：",[280,3474,3477],{"className":3475,"code":3476,"language":516,"meta":109},[514],"New \u002F Create Local Repository\n",[142,3478,3476],{"__ignoreMap":109},[11,3480,3481],{},"建立新的本機 Repository。",[21,3483,3484],{"id":3484},"查看目前狀態",[280,3486,3488],{"className":282,"code":3487,"language":284,"meta":109,"style":109},"git status\n",[142,3489,3490],{"__ignoreMap":109},[288,3491,3492,3494],{"class":290,"line":291},[288,3493,3200],{"class":294},[288,3495,3496],{"class":322}," status\n",[11,3498,3499],{},"如果看到：",[280,3501,3504],{"className":3502,"code":3503,"language":516,"meta":109},[514],"nothing to commit\n",[142,3505,3503],{"__ignoreMap":109},[11,3507,3508],{},"代表目前沒有新的變更需要提交。",[21,3510,3511],{"id":3511},"查詢檔案作者",[280,3513,3515],{"className":282,"code":3514,"language":284,"meta":109,"style":109},"git blame index.html\n",[142,3516,3517],{"__ignoreMap":109},[288,3518,3519,3521,3524],{"class":290,"line":291},[288,3520,3200],{"class":294},[288,3522,3523],{"class":322}," blame",[288,3525,3526],{"class":322}," index.html\n",[11,3528,3529],{},"查看檔案每一行最後是由誰修改。",[272,3531,3469],{"id":3532},"sourcetree-1",[11,3534,3535],{},"對檔案按右鍵：",[280,3537,3540],{"className":3538,"code":3539,"language":516,"meta":109},[514],"Blame Selected\n",[142,3541,3539],{"__ignoreMap":109},[11,3543,3544],{},"也可以查看每一行的修改紀錄。",[21,3546,3547],{"id":3547},"加入暫存區",[11,3549,3550],{},"工作目錄 → 暫存區。",[11,3552,3553],{},"加入單一檔案：",[280,3555,3557],{"className":282,"code":3556,"language":284,"meta":109,"style":109},"git add welcome.html\n",[142,3558,3559],{"__ignoreMap":109},[288,3560,3561,3563,3566],{"class":290,"line":291},[288,3562,3200],{"class":294},[288,3564,3565],{"class":322}," add",[288,3567,3568],{"class":322}," welcome.html\n",[11,3570,3571],{},"全部加入：",[280,3573,3575],{"className":282,"code":3574,"language":284,"meta":109,"style":109},"git add --all\n",[142,3576,3577],{"__ignoreMap":109},[288,3578,3579,3581,3583],{"class":290,"line":291},[288,3580,3200],{"class":294},[288,3582,3565],{"class":322},[288,3584,3585],{"class":298}," --all\n",[21,3587,3588],{"id":3588},"提交",[11,3590,3591],{},"暫存區 → Git 紀錄。",[280,3593,3595],{"className":282,"code":3594,"language":284,"meta":109,"style":109},"git commit -m \"init commit\"\n",[142,3596,3597],{"__ignoreMap":109},[288,3598,3599,3601,3604,3607],{"class":290,"line":291},[288,3600,3200],{"class":294},[288,3602,3603],{"class":322}," commit",[288,3605,3606],{"class":298}," -m",[288,3608,3609],{"class":322}," \"init commit\"\n",[11,3611,3612,3615],{},[142,3613,3614],{},"-m"," 後面接這次提交的訊息，例如：",[280,3617,3619],{"className":282,"code":3618,"language":284,"meta":109,"style":109},"git commit -m \"#34 bug fix\"\n",[142,3620,3621],{"__ignoreMap":109},[288,3622,3623,3625,3627,3629],{"class":290,"line":291},[288,3624,3200],{"class":294},[288,3626,3603],{"class":322},[288,3628,3606],{"class":298},[288,3630,3631],{"class":322}," \"#34 bug fix\"\n",[11,3633,3634],{},"當時記的基本操作順序：",[280,3636,3639],{"className":3637,"code":3638,"language":516,"meta":109},[514],"git status\n↓\ngit add 檔案\n↓\ngit commit -m \"訊息\"\n",[142,3640,3638],{"__ignoreMap":109},[21,3642,3643],{"id":3643},"查詢歷史紀錄",[280,3645,3647],{"className":282,"code":3646,"language":284,"meta":109,"style":109},"git log\n",[142,3648,3649],{"__ignoreMap":109},[288,3650,3651,3653],{"class":290,"line":291},[288,3652,3200],{"class":294},[288,3654,3655],{"class":322}," log\n",[11,3657,3658],{},"查看提交歷史。",[11,3660,3661],{},"每一筆 commit 都會有自己的 SHA：",[280,3663,3666],{"className":3664,"code":3665,"language":516,"meta":109},[514],"commit b11569e1ef6b1c873aa184350e07e490f78d3f50\n",[142,3667,3665],{"__ignoreMap":109},[11,3669,3670],{},"想看得簡單一點：",[280,3672,3674],{"className":282,"code":3673,"language":284,"meta":109,"style":109},"git log --oneline --graph\n",[142,3675,3676],{"__ignoreMap":109},[288,3677,3678,3680,3683,3686],{"class":290,"line":291},[288,3679,3200],{"class":294},[288,3681,3682],{"class":322}," log",[288,3684,3685],{"class":298}," --oneline",[288,3687,3688],{"class":298}," --graph\n",[272,3690,3691],{"id":3691},"查詢單一檔案紀錄",[280,3693,3695],{"className":282,"code":3694,"language":284,"meta":109,"style":109},"git log -p test.html\n",[142,3696,3697],{"__ignoreMap":109},[288,3698,3699,3701,3703,3706],{"class":290,"line":291},[288,3700,3200],{"class":294},[288,3702,3682],{"class":322},[288,3704,3705],{"class":298}," -p",[288,3707,3708],{"class":322}," test.html\n",[272,3710,3469],{"id":3711},"sourcetree-2",[11,3713,3535],{},[280,3715,3718],{"className":3716,"code":3717,"language":516,"meta":109},[514],"Log Selected\n",[142,3719,3717],{"__ignoreMap":109},[11,3721,3722],{},"可以查看這個檔案的歷史紀錄。",[272,3724,3725],{"id":3725},"查詢作者",[280,3727,3729],{"className":282,"code":3728,"language":284,"meta":109,"style":109},"git log --oneline --author=\"XXX\"\n",[142,3730,3731],{"__ignoreMap":109},[288,3732,3733,3735,3737,3739,3742],{"class":290,"line":291},[288,3734,3200],{"class":294},[288,3736,3682],{"class":322},[288,3738,3685],{"class":298},[288,3740,3741],{"class":298}," --author=",[288,3743,3744],{"class":322},"\"XXX\"\n",[272,3746,3748],{"id":3747},"查詢-commit-訊息","查詢 Commit 訊息",[280,3750,3752],{"className":282,"code":3751,"language":284,"meta":109,"style":109},"git log --oneline --grep=\"wtf\"\n",[142,3753,3754],{"__ignoreMap":109},[288,3755,3756,3758,3760,3762,3765],{"class":290,"line":291},[288,3757,3200],{"class":294},[288,3759,3682],{"class":322},[288,3761,3685],{"class":298},[288,3763,3764],{"class":298}," --grep=",[288,3766,3767],{"class":322},"\"wtf\"\n",[272,3769,3771],{"id":3770},"查詢曾經加入或刪除某段文字的-commit","查詢曾經加入或刪除某段文字的 Commit",[280,3773,3775],{"className":282,"code":3774,"language":284,"meta":109,"style":109},"git log -S \"xxx\"\n",[142,3776,3777],{"__ignoreMap":109},[288,3778,3779,3781,3783,3786],{"class":290,"line":291},[288,3780,3200],{"class":294},[288,3782,3682],{"class":322},[288,3784,3785],{"class":298}," -S",[288,3787,3788],{"class":322}," \"xxx\"\n",[272,3790,3792],{"id":3791},"查詢一段時間內的-commit","查詢一段時間內的 Commit",[11,3794,3795],{},"例如查今天早上的紀錄：",[280,3797,3799],{"className":282,"code":3798,"language":284,"meta":109,"style":109},"git log --oneline --since=\"9am\" --until=\"12pm\"\n",[142,3800,3801],{"__ignoreMap":109},[288,3802,3803,3805,3807,3809,3812,3815,3818],{"class":290,"line":291},[288,3804,3200],{"class":294},[288,3806,3682],{"class":322},[288,3808,3685],{"class":298},[288,3810,3811],{"class":298}," --since=",[288,3813,3814],{"class":322},"\"9am\"",[288,3816,3817],{"class":298}," --until=",[288,3819,3820],{"class":322},"\"12pm\"\n",[21,3822,3823],{"id":3823},"從暫存區移除",[280,3825,3827],{"className":282,"code":3826,"language":284,"meta":109,"style":109},"git rm --cached xxx.html\n",[142,3828,3829],{"__ignoreMap":109},[288,3830,3831,3833,3836,3839],{"class":290,"line":291},[288,3832,3200],{"class":294},[288,3834,3835],{"class":322}," rm",[288,3837,3838],{"class":298}," --cached",[288,3840,3841],{"class":322}," xxx.html\n",[11,3843,3844],{},"不是刪除檔案，而是停止追蹤這個檔案。",[272,3846,3469],{"id":3847},"sourcetree-3",[11,3849,3850],{},"在暫存區對檔案按右鍵：",[280,3852,3855],{"className":3853,"code":3854,"language":516,"meta":109},[514],"Stop Tracking\n",[142,3856,3854],{"__ignoreMap":109},[21,3858,3860],{"id":3859},"修改最後一次-commit","修改最後一次 Commit",[11,3862,3863],{},"如果想把新的檔案合併到上一筆 Git 紀錄：",[280,3865,3867],{"className":282,"code":3866,"language":284,"meta":109,"style":109},"touch cat.html\ngit add cat.html\ngit commit --amend\n",[142,3868,3869,3876,3884],{"__ignoreMap":109},[288,3870,3871,3873],{"class":290,"line":291},[288,3872,3230],{"class":294},[288,3874,3875],{"class":322}," cat.html\n",[288,3877,3878,3880,3882],{"class":290,"line":113},[288,3879,3200],{"class":294},[288,3881,3565],{"class":322},[288,3883,3875],{"class":322},[288,3885,3886,3888,3890],{"class":290,"line":110},[288,3887,3200],{"class":294},[288,3889,3603],{"class":322},[288,3891,3892],{"class":298}," --amend\n",[11,3894,3895],{},"進入 Vim 後：",[280,3897,3900],{"className":3898,"code":3899,"language":516,"meta":109},[514],":wq\n",[142,3901,3899],{"__ignoreMap":109},[11,3903,3904],{},"存檔並離開。",[11,3906,3907,3910],{},[142,3908,3909],{},"git commit --amend"," 也可以用來修改最後一次 Commit 的訊息：",[280,3912,3914],{"className":282,"code":3913,"language":284,"meta":109,"style":109},"git commit --amend\n",[142,3915,3916],{"__ignoreMap":109},[288,3917,3918,3920,3922],{"class":290,"line":291},[288,3919,3200],{"class":294},[288,3921,3603],{"class":322},[288,3923,3892],{"class":298},[11,3925,3926],{},"進入編輯畫面後：",[280,3928,3931],{"className":3929,"code":3930,"language":516,"meta":109},[514],"i\n",[142,3932,3930],{"__ignoreMap":109},[11,3934,3935],{},"進入輸入模式，修改訊息後：",[280,3937,3939],{"className":3938,"code":3899,"language":516,"meta":109},[514],[142,3940,3899],{"__ignoreMap":109},[11,3942,3943],{},"存檔離開。",[11,3945,3946],{},"再查看：",[280,3948,3950],{"className":282,"code":3949,"language":284,"meta":109,"style":109},"git log --oneline\n",[142,3951,3952],{"__ignoreMap":109},[288,3953,3954,3956,3958],{"class":290,"line":291},[288,3955,3200],{"class":294},[288,3957,3682],{"class":322},[288,3959,3960],{"class":298}," --oneline\n",[11,3962,3963],{},"當時也有記到一件事：",[848,3965,3966],{},[11,3967,3968],{},"Commit 經過 amend 後，SHA 值也會跟著改變。",[272,3970,3469],{"id":3971},"sourcetree-4",[11,3973,3974],{},"當時的操作路徑：",[280,3976,3979],{"className":3977,"code":3978,"language":516,"meta":109},[514],"Working Copy\n→ Commit Options\n→ Amend Last Commit\n→ 修改訊息\n→ Commit\n",[142,3980,3978],{"__ignoreMap":109},[21,3982,3983],{"id":3983},"還原檔案",[280,3985,3987],{"className":282,"code":3986,"language":284,"meta":109,"style":109},"git checkout test.html\n",[142,3988,3989],{"__ignoreMap":109},[288,3990,3991,3993,3996],{"class":290,"line":291},[288,3992,3200],{"class":294},[288,3994,3995],{"class":322}," checkout",[288,3997,3708],{"class":322},[11,3999,4000],{},"把尚未提交的檔案變更還原。",[11,4002,4003],{},"全部還原：",[280,4005,4007],{"className":282,"code":4006,"language":284,"meta":109,"style":109},"git checkout .\n",[142,4008,4009],{"__ignoreMap":109},[288,4010,4011,4013,4015],{"class":290,"line":291},[288,4012,3200],{"class":294},[288,4014,3995],{"class":322},[288,4016,4017],{"class":322}," .\n",[11,4019,4020],{},"拿兩個版本之前的檔案內容：",[280,4022,4024],{"className":282,"code":4023,"language":284,"meta":109,"style":109},"git checkout HEAD~2 test.html\n",[142,4025,4026],{"__ignoreMap":109},[288,4027,4028,4030,4032,4035],{"class":290,"line":291},[288,4029,3200],{"class":294},[288,4031,3995],{"class":322},[288,4033,4034],{"class":322}," HEAD~2",[288,4036,3708],{"class":322},[21,4038,4040],{"id":4039},"reset拆掉-commit-重做","Reset：拆掉 Commit 重做",[11,4042,4043],{},"先查看歷史：",[280,4045,4046],{"className":282,"code":3949,"language":284,"meta":109,"style":109},[142,4047,4048],{"__ignoreMap":109},[288,4049,4050,4052,4054],{"class":290,"line":291},[288,4051,3200],{"class":294},[288,4053,3682],{"class":322},[288,4055,3960],{"class":298},[11,4057,1423],{},[280,4059,4061],{"className":282,"code":4060,"language":284,"meta":109,"style":109},"git reset ae8a3ab^\n",[142,4062,4063],{"__ignoreMap":109},[288,4064,4065,4067,4070],{"class":290,"line":291},[288,4066,3200],{"class":294},[288,4068,4069],{"class":322}," reset",[288,4071,4072],{"class":322}," ae8a3ab^\n",[11,4074,4075,4078],{},[142,4076,4077],{},"^"," 可以理解成往前一個 Commit。",[11,4080,1423],{},[280,4082,4084],{"className":282,"code":4083,"language":284,"meta":109,"style":109},"git reset HEAD^\n",[142,4085,4086],{"__ignoreMap":109},[288,4087,4088,4090,4092],{"class":290,"line":291},[288,4089,3200],{"class":294},[288,4091,4069],{"class":322},[288,4093,4094],{"class":322}," HEAD^\n",[11,4096,4097],{},"往前兩個：",[280,4099,4101],{"className":282,"code":4100,"language":284,"meta":109,"style":109},"git reset HEAD~2\n",[142,4102,4103],{"__ignoreMap":109},[288,4104,4105,4107,4109],{"class":290,"line":291},[288,4106,3200],{"class":294},[288,4108,4069],{"class":322},[288,4110,4111],{"class":322}," HEAD~2\n",[11,4113,4114],{},"當時整理的三種模式：",[272,4116,4118],{"id":4117},"soft","Soft",[280,4120,4122],{"className":282,"code":4121,"language":284,"meta":109,"style":109},"git reset --soft 版號\n",[142,4123,4124],{"__ignoreMap":109},[288,4125,4126,4128,4130,4133],{"class":290,"line":291},[288,4127,3200],{"class":294},[288,4129,4069],{"class":322},[288,4131,4132],{"class":298}," --soft",[288,4134,4135],{"class":322}," 版號\n",[11,4137,4138],{},"拆出來的檔案會保留在暫存區。",[272,4140,4142],{"id":4141},"mixed","Mixed",[280,4144,4146],{"className":282,"code":4145,"language":284,"meta":109,"style":109},"git reset --mixed 版號\n",[142,4147,4148],{"__ignoreMap":109},[288,4149,4150,4152,4154,4157],{"class":290,"line":291},[288,4151,3200],{"class":294},[288,4153,4069],{"class":322},[288,4155,4156],{"class":298}," --mixed",[288,4158,4135],{"class":322},[11,4160,4161],{},"檔案會保留在工作目錄。",[11,4163,4164,4165,4168],{},"這也是 ",[142,4166,4167],{},"git reset"," 預設的模式。",[272,4170,4172],{"id":4171},"hard","Hard",[280,4174,4176],{"className":282,"code":4175,"language":284,"meta":109,"style":109},"git reset --hard 版號\n",[142,4177,4178],{"__ignoreMap":109},[288,4179,4180,4182,4184,4187],{"class":290,"line":291},[288,4181,3200],{"class":294},[288,4183,4069],{"class":322},[288,4185,4186],{"class":298}," --hard",[288,4188,4135],{"class":322},[11,4190,4191],{},"工作目錄的變更也一起丟掉。",[11,4193,4194],{},"這個要特別小心。",[272,4196,4198],{"id":4197},"reflog","Reflog",[280,4200,4202],{"className":282,"code":4201,"language":284,"meta":109,"style":109},"git reflog\n",[142,4203,4204],{"__ignoreMap":109},[288,4205,4206,4208],{"class":290,"line":291},[288,4207,3200],{"class":294},[288,4209,4210],{"class":322}," reflog\n",[11,4212,4213],{},"可以查看 Git 的 HEAD \u002F 分支移動紀錄。",[272,4215,3469],{"id":4216},"sourcetree-5",[11,4218,4219],{},"對某個 Commit 按右鍵：",[280,4221,4224],{"className":4222,"code":4223,"language":516,"meta":109},[514],"Reset master to this commit\n",[142,4225,4223],{"__ignoreMap":109},[11,4227,4228],{},"再選擇：",[280,4230,4233],{"className":4231,"code":4232,"language":516,"meta":109},[514],"Soft\nMixed\nHard\n",[142,4234,4232],{"__ignoreMap":109},[21,4236,4237],{"id":4237},"分支",[11,4239,4240],{},"查看目前分支：",[280,4242,4244],{"className":282,"code":4243,"language":284,"meta":109,"style":109},"git branch\n",[142,4245,4246],{"__ignoreMap":109},[288,4247,4248,4250],{"class":290,"line":291},[288,4249,3200],{"class":294},[288,4251,4252],{"class":322}," branch\n",[11,4254,4255],{},"建立分支：",[280,4257,4259],{"className":282,"code":4258,"language":284,"meta":109,"style":109},"git branch xxx\n",[142,4260,4261],{"__ignoreMap":109},[288,4262,4263,4265,4268],{"class":290,"line":291},[288,4264,3200],{"class":294},[288,4266,4267],{"class":322}," branch",[288,4269,4270],{"class":322}," xxx\n",[11,4272,4273],{},"刪除分支：",[280,4275,4277],{"className":282,"code":4276,"language":284,"meta":109,"style":109},"git branch -d xxx\n",[142,4278,4279],{"__ignoreMap":109},[288,4280,4281,4283,4285,4288],{"class":290,"line":291},[288,4282,3200],{"class":294},[288,4284,4267],{"class":322},[288,4286,4287],{"class":298}," -d",[288,4289,4270],{"class":322},[11,4291,4292],{},"不能刪除目前正在使用的分支，需要先切換到其他分支。",[11,4294,4295],{},"切換分支：",[280,4297,4299],{"className":282,"code":4298,"language":284,"meta":109,"style":109},"git checkout xxx\n",[142,4300,4301],{"__ignoreMap":109},[288,4302,4303,4305,4307],{"class":290,"line":291},[288,4304,3200],{"class":294},[288,4306,3995],{"class":322},[288,4308,4270],{"class":322},[11,4310,4311],{},"建立並直接切換：",[280,4313,4315],{"className":282,"code":4314,"language":284,"meta":109,"style":109},"git checkout -b xxx\n",[142,4316,4317],{"__ignoreMap":109},[288,4318,4319,4321,4323,4326],{"class":290,"line":291},[288,4320,3200],{"class":294},[288,4322,3995],{"class":322},[288,4324,4325],{"class":298}," -b",[288,4327,4270],{"class":322},[272,4329,3469],{"id":4330},"sourcetree-6",[11,4332,4255],{},[280,4334,4337],{"className":4335,"code":4336,"language":516,"meta":109},[514],"Branch\n",[142,4338,4336],{"__ignoreMap":109},[11,4340,4341],{},"如果勾選：",[280,4343,4346],{"className":4344,"code":4345,"language":516,"meta":109},[514],"Checkout New Branch\n",[142,4347,4345],{"__ignoreMap":109},[11,4349,4350],{},"建立完成後會直接切換過去。",[11,4352,4353],{},"切換分支時，也可以直接對分支點兩下。",[11,4355,4273],{},[280,4357,4360],{"className":4358,"code":4359,"language":516,"meta":109},[514],"右鍵分支\n→ Delete xxx\n",[142,4361,4359],{"__ignoreMap":109},[21,4363,4364],{"id":4364},"合併分支",[11,4366,4367],{},"先切換回主線：",[280,4369,4371],{"className":282,"code":4370,"language":284,"meta":109,"style":109},"git checkout master\n",[142,4372,4373],{"__ignoreMap":109},[288,4374,4375,4377,4379],{"class":290,"line":291},[288,4376,3200],{"class":294},[288,4378,3995],{"class":322},[288,4380,4381],{"class":322}," master\n",[11,4383,4384],{},"再把其他分支合併進來：",[280,4386,4388],{"className":282,"code":4387,"language":284,"meta":109,"style":109},"git merge xxx\n",[142,4389,4390],{"__ignoreMap":109},[288,4391,4392,4394,4397],{"class":290,"line":291},[288,4393,3200],{"class":294},[288,4395,4396],{"class":322}," merge",[288,4398,4270],{"class":322},[272,4400,3469],{"id":4401},"sourcetree-7",[11,4403,4404],{},"對想合併的分支按右鍵：",[280,4406,4409],{"className":4407,"code":4408,"language":516,"meta":109},[514],"Merge xxx into current branch\n",[142,4410,4408],{"__ignoreMap":109},[21,4412,4414],{"id":4413},"不使用-fast-forward-合併","不使用 Fast-forward 合併",[11,4416,4417],{},"當時把這個畫面記成「小耳朵」。",[280,4419,4421],{"className":282,"code":4420,"language":284,"meta":109,"style":109},"git merge cat --no-ff\n",[142,4422,4423],{"__ignoreMap":109},[288,4424,4425,4427,4429,4432],{"class":290,"line":291},[288,4426,3200],{"class":294},[288,4428,4396],{"class":322},[288,4430,4431],{"class":322}," cat",[288,4433,4434],{"class":298}," --no-ff\n",[11,4436,4437],{},"會保留一筆 Merge Commit。",[11,4439,4440],{},"如果進入 Vim：",[280,4442,4444],{"className":4443,"code":3899,"language":516,"meta":109},[514],[142,4445,3899],{"__ignoreMap":109},[11,4447,3943],{},[21,4449,4451],{"id":4450},"clone-專案","Clone 專案",[11,4453,4454],{},"把專案下載到本機：",[280,4456,4458],{"className":282,"code":4457,"language":284,"meta":109,"style":109},"git clone xxxxxxxxxxxxx\n",[142,4459,4460],{"__ignoreMap":109},[288,4461,4462,4464,4467],{"class":290,"line":291},[288,4463,3200],{"class":294},[288,4465,4466],{"class":322}," clone",[288,4468,4469],{"class":322}," xxxxxxxxxxxxx\n",[272,4471,3469],{"id":4472},"sourcetree-8",[280,4474,4477],{"className":4475,"code":4476,"language":516,"meta":109},[514],"File\n→ New\n→ Clone Repository\n→ 貼上 Repository 資訊\n",[142,4478,4476],{"__ignoreMap":109},[21,4480,4482],{"id":4481},"git-config","Git Config",[11,4484,4485],{},"查看目前設定：",[280,4487,4489],{"className":282,"code":4488,"language":284,"meta":109,"style":109},"git config --list\n",[142,4490,4491],{"__ignoreMap":109},[288,4492,4493,4495,4498],{"class":290,"line":291},[288,4494,3200],{"class":294},[288,4496,4497],{"class":322}," config",[288,4499,4500],{"class":298}," --list\n",[272,4502,4503],{"id":4503},"全域設定",[280,4505,4507],{"className":282,"code":4506,"language":284,"meta":109,"style":109},"git config --global user.name \"XXX\"\ngit config --global user.email \"XXX@xxx.xx\"\n",[142,4508,4509,4524],{"__ignoreMap":109},[288,4510,4511,4513,4515,4518,4521],{"class":290,"line":291},[288,4512,3200],{"class":294},[288,4514,4497],{"class":322},[288,4516,4517],{"class":298}," --global",[288,4519,4520],{"class":322}," user.name",[288,4522,4523],{"class":322}," \"XXX\"\n",[288,4525,4526,4528,4530,4532,4535],{"class":290,"line":113},[288,4527,3200],{"class":294},[288,4529,4497],{"class":322},[288,4531,4517],{"class":298},[288,4533,4534],{"class":322}," user.email",[288,4536,4537],{"class":322}," \"XXX@xxx.xx\"\n",[272,4539,4540],{"id":4540},"專案專屬設定",[280,4542,4544],{"className":282,"code":4543,"language":284,"meta":109,"style":109},"git config --local user.name \"XXX\"\ngit config --local user.email \"XXX@xxx.xx\"\n",[142,4545,4546,4559],{"__ignoreMap":109},[288,4547,4548,4550,4552,4555,4557],{"class":290,"line":291},[288,4549,3200],{"class":294},[288,4551,4497],{"class":322},[288,4553,4554],{"class":298}," --local",[288,4556,4520],{"class":322},[288,4558,4523],{"class":322},[288,4560,4561,4563,4565,4567,4569],{"class":290,"line":113},[288,4562,3200],{"class":294},[288,4564,4497],{"class":322},[288,4566,4554],{"class":298},[288,4568,4534],{"class":322},[288,4570,4537],{"class":322},[272,4572,3469],{"id":4573},"sourcetree-9",[11,4575,4576],{},"當時的設定位置：",[280,4578,4581],{"className":4579,"code":4580,"language":516,"meta":109},[514],"Repository Settings\n→ User Information\n",[142,4582,4580],{"__ignoreMap":109},[21,4584,4586],{"id":4585},"修改-git-編輯器","修改 Git 編輯器",[11,4588,4589],{},"當時 Git 預設會進 Vim，也可以換成其他編輯器。",[11,4591,1423],{},[280,4593,4595],{"className":282,"code":4594,"language":284,"meta":109,"style":109},"git config --global core.editor emacs\n",[142,4596,4597],{"__ignoreMap":109},[288,4598,4599,4601,4603,4605,4608],{"class":290,"line":291},[288,4600,3200],{"class":294},[288,4602,4497],{"class":322},[288,4604,4517],{"class":298},[288,4606,4607],{"class":322}," core.editor",[288,4609,4610],{"class":322}," emacs\n",[21,4612,4614],{"id":4613},"git-alias","Git Alias",[11,4616,4617],{},"可以幫常用指令設定縮寫。",[280,4619,4621],{"className":282,"code":4620,"language":284,"meta":109,"style":109},"git config --global alias.co checkout\n",[142,4622,4623],{"__ignoreMap":109},[288,4624,4625,4627,4629,4631,4634],{"class":290,"line":291},[288,4626,3200],{"class":294},[288,4628,4497],{"class":322},[288,4630,4517],{"class":298},[288,4632,4633],{"class":322}," alias.co",[288,4635,4636],{"class":322}," checkout\n",[11,4638,4639],{},"之後：",[280,4641,4643],{"className":282,"code":4642,"language":284,"meta":109,"style":109},"git co\n",[142,4644,4645],{"__ignoreMap":109},[288,4646,4647,4649],{"class":290,"line":291},[288,4648,3200],{"class":294},[288,4650,4651],{"class":322}," co\n",[11,4653,4654],{},"等同：",[280,4656,4658],{"className":282,"code":4657,"language":284,"meta":109,"style":109},"git checkout\n",[142,4659,4660],{"__ignoreMap":109},[288,4661,4662,4664],{"class":290,"line":291},[288,4663,3200],{"class":294},[288,4665,4636],{"class":322},[11,4667,4668],{},"其他：",[280,4670,4672],{"className":282,"code":4671,"language":284,"meta":109,"style":109},"git config --global alias.br branch\ngit config --global alias.st status\ngit config --global alias.l \"log --oneline --graph\"\n",[142,4673,4674,4687,4700],{"__ignoreMap":109},[288,4675,4676,4678,4680,4682,4685],{"class":290,"line":291},[288,4677,3200],{"class":294},[288,4679,4497],{"class":322},[288,4681,4517],{"class":298},[288,4683,4684],{"class":322}," alias.br",[288,4686,4252],{"class":322},[288,4688,4689,4691,4693,4695,4698],{"class":290,"line":113},[288,4690,3200],{"class":294},[288,4692,4497],{"class":322},[288,4694,4517],{"class":298},[288,4696,4697],{"class":322}," alias.st",[288,4699,3496],{"class":322},[288,4701,4702,4704,4706,4708,4711],{"class":290,"line":110},[288,4703,3200],{"class":294},[288,4705,4497],{"class":322},[288,4707,4517],{"class":298},[288,4709,4710],{"class":322}," alias.l",[288,4712,4713],{"class":322}," \"log --oneline --graph\"\n",[11,4715,4716],{},"之後就可以使用：",[280,4718,4720],{"className":282,"code":4719,"language":284,"meta":109,"style":109},"git br\ngit st\ngit l\n",[142,4721,4722,4729,4736],{"__ignoreMap":109},[288,4723,4724,4726],{"class":290,"line":291},[288,4725,3200],{"class":294},[288,4727,4728],{"class":322}," br\n",[288,4730,4731,4733],{"class":290,"line":113},[288,4732,3200],{"class":294},[288,4734,4735],{"class":322}," st\n",[288,4737,4738,4740],{"class":290,"line":110},[288,4739,3200],{"class":294},[288,4741,4742],{"class":322}," l\n",[21,4744,4746],{"id":4745},"vim-基本操作","Vim 基本操作",[11,4748,4749],{},"當時順便記了一些 Vim 操作。",[280,4751,4754],{"className":4752,"code":4753,"language":516,"meta":109},[514],"i = insert\na = append\no = new line\n",[142,4755,4753],{"__ignoreMap":109},[11,4757,4758],{},"存檔：",[280,4760,4763],{"className":4761,"code":4762,"language":516,"meta":109},[514],":w\n",[142,4764,4762],{"__ignoreMap":109},[11,4766,4767],{},"離開：",[280,4769,4772],{"className":4770,"code":4771,"language":516,"meta":109},[514],":q\n",[142,4773,4771],{"__ignoreMap":109},[11,4775,4776],{},"存檔並離開：",[280,4778,4780],{"className":4779,"code":3899,"language":516,"meta":109},[514],[142,4781,3899],{"__ignoreMap":109},[21,4783,4785],{"id":4784},"windows-指令筆記","Windows 指令筆記",[11,4787,4788],{},"當時也一起記了一些 Windows 終端機常用指令：",[280,4790,4793],{"className":4791,"code":4792,"language":516,"meta":109},[514],"cd        切換目錄\ndir       列出目前檔案\nmkdir     建立新的資料夾\ncopy      複製檔案\nmove      移動檔案\ndel       刪除檔案\ncls       清除畫面內容\ncd ..     回到上一層\n",[142,4794,4792],{"__ignoreMap":109},[11,4796,4797],{},"另外在 Unix \u002F Git Bash 類型的終端機中：",[280,4799,4801],{"className":282,"code":4800,"language":284,"meta":109,"style":109},"cd ~\n",[142,4802,4803],{"__ignoreMap":109},[288,4804,4805,4808],{"class":290,"line":291},[288,4806,4807],{"class":298},"cd",[288,4809,4810],{"class":322}," ~\n",[11,4812,4813],{},"可以回到目前使用者的 Home 目錄。",[21,4815,1045],{"id":1044},[11,4817,4818,4819,145,4822,4825],{},"這篇是 2018 年學 Git 時留下來的筆記，所以保留了當時使用 ",[142,4820,4821],{},"git checkout",[142,4823,4824],{},"master","、SourceTree 和 Vim 的操作方式。",[11,4827,4828],{},"現在回頭看，有幾個地方需要特別補充：",[272,4830,4832,4835],{"id":4831},"checkout-現在有更明確的替代指令",[142,4833,4834],{},"checkout"," 現在有更明確的替代指令",[11,4837,4838,4839,4842,4843,238],{},"Git 2.23 之後新增了 ",[142,4840,4841],{},"git switch"," 和 ",[142,4844,4845],{},"git restore",[11,4847,4848],{},"以前切換分支：",[280,4850,4851],{"className":282,"code":4298,"language":284,"meta":109,"style":109},[142,4852,4853],{"__ignoreMap":109},[288,4854,4855,4857,4859],{"class":290,"line":291},[288,4856,3200],{"class":294},[288,4858,3995],{"class":322},[288,4860,4270],{"class":322},[11,4862,4863],{},"現在也可以寫：",[280,4865,4867],{"className":282,"code":4866,"language":284,"meta":109,"style":109},"git switch xxx\n",[142,4868,4869],{"__ignoreMap":109},[288,4870,4871,4873,4876],{"class":290,"line":291},[288,4872,3200],{"class":294},[288,4874,4875],{"class":322}," switch",[288,4877,4270],{"class":322},[11,4879,4880],{},"以前還原工作目錄的檔案：",[280,4882,4883],{"className":282,"code":3986,"language":284,"meta":109,"style":109},[142,4884,4885],{"__ignoreMap":109},[288,4886,4887,4889,4891],{"class":290,"line":291},[288,4888,3200],{"class":294},[288,4890,3995],{"class":322},[288,4892,3708],{"class":322},[11,4894,4895],{},"現在也可以使用：",[280,4897,4899],{"className":282,"code":4898,"language":284,"meta":109,"style":109},"git restore test.html\n",[142,4900,4901],{"__ignoreMap":109},[288,4902,4903,4905,4908],{"class":290,"line":291},[288,4904,3200],{"class":294},[288,4906,4907],{"class":322}," restore",[288,4909,3708],{"class":322},[11,4911,4912,4913,4915],{},"原本的 ",[142,4914,4821],{}," 並沒有不能用，只是現在多了語意比較清楚的寫法。",[272,4917,4919,4920],{"id":4918},"主分支名稱不一定是-master","主分支名稱不一定是 ",[142,4921,4824],{},[11,4923,4924],{},"這篇當年使用：",[280,4926,4927],{"className":282,"code":4370,"language":284,"meta":109,"style":109},[142,4928,4929],{"__ignoreMap":109},[288,4930,4931,4933,4935],{"class":290,"line":291},[288,4932,3200],{"class":294},[288,4934,3995],{"class":322},[288,4936,4381],{"class":322},[11,4938,4939],{},"現在很多新的 Repository 預設主分支會叫做：",[280,4941,4944],{"className":4942,"code":4943,"language":516,"meta":109},[514],"main\n",[142,4945,4943],{"__ignoreMap":109},[11,4947,4948],{},"實際名稱還是要看專案本身。",[272,4950,4952,4953],{"id":4951},"刪除-git","刪除 ",[142,4954,4955],{},".git",[280,4957,4958],{"className":282,"code":3426,"language":284,"meta":109,"style":109},[142,4959,4960],{"__ignoreMap":109},[288,4961,4962,4964,4966],{"class":290,"line":291},[288,4963,3396],{"class":294},[288,4965,3435],{"class":298},[288,4967,3438],{"class":322},[11,4969,4970],{},"會刪除目前目錄的 Git Repository 資訊，但不會把工作目錄裡的程式碼一起刪掉。",[11,4972,4973],{},"如果專案已經有推送到 GitHub 或其他遠端 Repository，歷史紀錄也不一定真的就此消失。",[11,4975,4976],{},"不過這仍然是一個要非常小心使用的指令。",[272,4978,4980],{"id":4979},"git-reset-hard",[142,4981,4982],{},"git reset --hard",[11,4984,4985,4986,4989,4990,4993],{},"這篇以前把 ",[142,4987,4988],{},"git reflog"," 記成誤用 ",[142,4991,4992],{},"--hard"," 後的救援方式，但它並不是所有情況都能救。",[11,4995,4996,4997,4999],{},"如果丟掉的是曾經 Commit 過、Git 還保有紀錄的內容，可能可以透過 ",[142,4998,4197],{}," 找回。",[11,5001,5002,5003,5006,5007,5009],{},"但如果只是工作目錄裡從來沒有 Commit 過的修改，被 ",[142,5004,5005],{},"reset --hard"," 丟掉之後，就不能把 ",[142,5008,4197],{}," 當成一定救得回來的方法。",[11,5011,5012],{},"這篇其他內容就先保留當年的學習紀錄。",[1080,5014,5015],{},"html pre.shiki code .sYRkA, html code.shiki .sYRkA{--shiki-default:#6F42C1;--shiki-dark:#FFA657}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 .sPgVT, html code.shiki .sPgVT{--shiki-default:#005CC5;--shiki-dark:#79C0FF}html pre.shiki code .sNbzA, html code.shiki .sNbzA{--shiki-default:#032F62;--shiki-dark:#A5D6FF}html pre.shiki code .sDgYj, html code.shiki .sDgYj{--shiki-default:#D73A49;--shiki-dark:#FF7B72}",{"title":109,"searchDepth":110,"depth":110,"links":5017},[5018,5023,5026,5027,5030,5031,5032,5040,5043,5046,5047,5054,5057,5060,5061,5064,5069,5070,5071,5072,5073],{"id":3131,"depth":113,"text":3131,"children":5019},[5020,5021,5022],{"id":3220,"depth":110,"text":3220},{"id":3267,"depth":110,"text":3267},{"id":3386,"depth":110,"text":3386},{"id":3449,"depth":113,"text":3450,"children":5024},[5025],{"id":3468,"depth":110,"text":3469},{"id":3484,"depth":113,"text":3484},{"id":3511,"depth":113,"text":3511,"children":5028},[5029],{"id":3532,"depth":110,"text":3469},{"id":3547,"depth":113,"text":3547},{"id":3588,"depth":113,"text":3588},{"id":3643,"depth":113,"text":3643,"children":5033},[5034,5035,5036,5037,5038,5039],{"id":3691,"depth":110,"text":3691},{"id":3711,"depth":110,"text":3469},{"id":3725,"depth":110,"text":3725},{"id":3747,"depth":110,"text":3748},{"id":3770,"depth":110,"text":3771},{"id":3791,"depth":110,"text":3792},{"id":3823,"depth":113,"text":3823,"children":5041},[5042],{"id":3847,"depth":110,"text":3469},{"id":3859,"depth":113,"text":3860,"children":5044},[5045],{"id":3971,"depth":110,"text":3469},{"id":3983,"depth":113,"text":3983},{"id":4039,"depth":113,"text":4040,"children":5048},[5049,5050,5051,5052,5053],{"id":4117,"depth":110,"text":4118},{"id":4141,"depth":110,"text":4142},{"id":4171,"depth":110,"text":4172},{"id":4197,"depth":110,"text":4198},{"id":4216,"depth":110,"text":3469},{"id":4237,"depth":113,"text":4237,"children":5055},[5056],{"id":4330,"depth":110,"text":3469},{"id":4364,"depth":113,"text":4364,"children":5058},[5059],{"id":4401,"depth":110,"text":3469},{"id":4413,"depth":113,"text":4414},{"id":4450,"depth":113,"text":4451,"children":5062},[5063],{"id":4472,"depth":110,"text":3469},{"id":4481,"depth":113,"text":4482,"children":5065},[5066,5067,5068],{"id":4503,"depth":110,"text":4503},{"id":4540,"depth":110,"text":4540},{"id":4573,"depth":110,"text":3469},{"id":4585,"depth":113,"text":4586},{"id":4613,"depth":113,"text":4614},{"id":4745,"depth":113,"text":4746},{"id":4784,"depth":113,"text":4785},{"id":1044,"depth":113,"text":1045,"children":5074},[5075,5077,5079,5081],{"id":4831,"depth":110,"text":5076},"checkout 現在有更明確的替代指令",{"id":4918,"depth":110,"text":5078},"主分支名稱不一定是 master",{"id":4951,"depth":110,"text":5080},"刪除 .git",{"id":4979,"depth":110,"text":4982},"notes","2018 年整理的 Git 學習筆記，包含基本終端機指令、Git 操作、分支、reset、SourceTree、Vim 與一些常用設定。",{},"\u002Fposts\u002Fgit-commands-cheatsheet","2018-01-05",[],{"title":3123,"description":5083},"posts\u002F20180105.git-commands-cheatsheet",[5091,5092],"Git","版本控制","uJ6Iyc7HRET6uc4zL9_isq3AGn9CO29Q9ojLjegfmFs",{"id":5095,"title":5096,"body":5097,"category":245,"description":5626,"draft":116,"extension":117,"image":118,"meta":5627,"navigation":120,"path":5628,"publishedAt":5629,"relatedExperiments":5630,"seo":5631,"stem":5632,"tags":5633,"updatedAt":122,"__hash__":5635},"posts\u002Fposts\u002F20180108.vue2-password-strength.md","用 Vue 寫一個密碼強度計",{"type":8,"value":5098,"toc":5620},[5099,5102,5106,5180,5182,5582,5584,5599,5601,5617],[11,5100,5101],{},"這篇記錄用 Vue 做一個簡單的密碼強度判斷。",[21,5103,5105],{"id":5104},"html","HTML",[280,5107,5110],{"className":5108,"code":5109,"language":5104,"meta":109,"style":109},"language-html shiki shiki-themes github-light github-dark-default","\u003Cdiv id=\"app\">\n  \u003Cinput type=\"password\" v-model=\"password\">\n  \u003Cp>{{ strength }}\u003C\u002Fp>\n\u003C\u002Fdiv>\n",[142,5111,5112,5133,5158,5171],{"__ignoreMap":109},[288,5113,5114,5117,5121,5125,5127,5130],{"class":290,"line":291},[288,5115,5116],{"class":760},"\u003C",[288,5118,5120],{"class":5119},"sXQ1o","div",[288,5122,5124],{"class":5123},"syv4q"," id",[288,5126,1270],{"class":760},[288,5128,5129],{"class":322},"\"app\"",[288,5131,5132],{"class":760},">\n",[288,5134,5135,5138,5141,5144,5146,5149,5152,5154,5156],{"class":290,"line":113},[288,5136,5137],{"class":760},"  \u003C",[288,5139,5140],{"class":5119},"input",[288,5142,5143],{"class":5123}," type",[288,5145,1270],{"class":760},[288,5147,5148],{"class":322},"\"password\"",[288,5150,5151],{"class":5123}," v-model",[288,5153,1270],{"class":760},[288,5155,5148],{"class":322},[288,5157,5132],{"class":760},[288,5159,5160,5162,5164,5167,5169],{"class":290,"line":110},[288,5161,5137],{"class":760},[288,5163,11],{"class":5119},[288,5165,5166],{"class":760},">{{ strength }}\u003C\u002F",[288,5168,11],{"class":5119},[288,5170,5132],{"class":760},[288,5172,5173,5176,5178],{"class":290,"line":769},[288,5174,5175],{"class":760},"\u003C\u002F",[288,5177,5120],{"class":5119},[288,5179,5132],{"class":760},[21,5181,1124],{"id":365},[280,5183,5185],{"className":5108,"code":5184,"language":5104,"meta":109,"style":109},"\u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fvue@2\">\u003C\u002Fscript>\n\n\u003Cscript>\n  const vm = new Vue({\n    el: '#app',\n\n    data: {\n      password: '',\n    },\n\n    computed: {\n      strength() {\n        let score = this.password.length;\n\n        \u002F\u002F 包含大寫 A-Z\n        if (\u002F[A-Z]\u002F.test(this.password)) score *= 1.25;\n\n        \u002F\u002F 包含小寫 a-z\n        if (\u002F[a-z]\u002F.test(this.password)) score *= 1.25;\n\n        \u002F\u002F 包含數字 0-9\n        if (\u002F[0-9]\u002F.test(this.password)) score *= 1.25;\n\n        \u002F\u002F 包含不是大寫 A-Z、小寫 a-z、數字 0-9 的字元\n        if (\u002F[^A-Za-z0-9]\u002F.test(this.password)) score *= 1.25;\n\n        \u002F\u002F 密碼夠長夠完美\n        if (score > 40) return 'Perfect';\n\n        if (score > 20) return 'Great';\n\n        if (score > 10) return 'Good';\n\n        return 'weak';\n      },\n    },\n  });\n\u003C\u002Fscript>\n",[142,5186,5187,5209,5213,5221,5238,5248,5252,5257,5267,5271,5275,5280,5287,5307,5311,5316,5349,5353,5358,5387,5391,5396,5425,5429,5434,5468,5472,5477,5499,5503,5523,5527,5547,5551,5561,5566,5570,5574],{"__ignoreMap":109},[288,5188,5189,5191,5194,5197,5199,5202,5205,5207],{"class":290,"line":291},[288,5190,5116],{"class":760},[288,5192,5193],{"class":5119},"script",[288,5195,5196],{"class":5123}," src",[288,5198,1270],{"class":760},[288,5200,5201],{"class":322},"\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fvue@2\"",[288,5203,5204],{"class":760},">\u003C\u002F",[288,5206,5193],{"class":5119},[288,5208,5132],{"class":760},[288,5210,5211],{"class":290,"line":113},[288,5212,1207],{"emptyLinePlaceholder":120},[288,5214,5215,5217,5219],{"class":290,"line":110},[288,5216,5116],{"class":760},[288,5218,5193],{"class":5119},[288,5220,5132],{"class":760},[288,5222,5223,5226,5229,5231,5233,5236],{"class":290,"line":769},[288,5224,5225],{"class":740},"  const",[288,5227,5228],{"class":298}," vm",[288,5230,1975],{"class":740},[288,5232,747],{"class":740},[288,5234,5235],{"class":750}," Vue",[288,5237,755],{"class":760},[288,5239,5240,5243,5246],{"class":290,"line":781},[288,5241,5242],{"class":760},"    el: ",[288,5244,5245],{"class":322},"'#app'",[288,5247,778],{"class":760},[288,5249,5250],{"class":290,"line":792},[288,5251,1207],{"emptyLinePlaceholder":120},[288,5253,5254],{"class":290,"line":816},[288,5255,5256],{"class":760},"    data: {\n",[288,5258,5259,5262,5265],{"class":290,"line":822},[288,5260,5261],{"class":760},"      password: ",[288,5263,5264],{"class":322},"''",[288,5266,778],{"class":760},[288,5268,5269],{"class":290,"line":830},[288,5270,819],{"class":760},[288,5272,5273],{"class":290,"line":1232},[288,5274,1207],{"emptyLinePlaceholder":120},[288,5276,5277],{"class":290,"line":1241},[288,5278,5279],{"class":760},"    computed: {\n",[288,5281,5282,5285],{"class":290,"line":1247},[288,5283,5284],{"class":750},"      strength",[288,5286,908],{"class":760},[288,5288,5289,5292,5295,5297,5300,5303,5305],{"class":290,"line":1370},[288,5290,5291],{"class":740},"        let",[288,5293,5294],{"class":760}," score ",[288,5296,1270],{"class":740},[288,5298,5299],{"class":298}," this",[288,5301,5302],{"class":760},".password.",[288,5304,2072],{"class":298},[288,5306,836],{"class":760},[288,5308,5309],{"class":290,"line":1377},[288,5310,1207],{"emptyLinePlaceholder":120},[288,5312,5313],{"class":290,"line":1390},[288,5314,5315],{"class":1689},"        \u002F\u002F 包含大寫 A-Z\n",[288,5317,5318,5321,5323,5325,5328,5330,5332,5334,5336,5338,5341,5344,5347],{"class":290,"line":1686},[288,5319,5320],{"class":740},"        if",[288,5322,1981],{"class":760},[288,5324,2354],{"class":322},[288,5326,5327],{"class":298},"[A-Z]",[288,5329,2354],{"class":322},[288,5331,2357],{"class":760},[288,5333,2360],{"class":750},[288,5335,807],{"class":760},[288,5337,2164],{"class":298},[288,5339,5340],{"class":760},".password)) score ",[288,5342,5343],{"class":740},"*=",[288,5345,5346],{"class":298}," 1.25",[288,5348,836],{"class":760},[288,5350,5351],{"class":290,"line":1693},[288,5352,1207],{"emptyLinePlaceholder":120},[288,5354,5355],{"class":290,"line":1698},[288,5356,5357],{"class":1689},"        \u002F\u002F 包含小寫 a-z\n",[288,5359,5360,5362,5364,5366,5369,5371,5373,5375,5377,5379,5381,5383,5385],{"class":290,"line":1725},[288,5361,5320],{"class":740},[288,5363,1981],{"class":760},[288,5365,2354],{"class":322},[288,5367,5368],{"class":298},"[a-z]",[288,5370,2354],{"class":322},[288,5372,2357],{"class":760},[288,5374,2360],{"class":750},[288,5376,807],{"class":760},[288,5378,2164],{"class":298},[288,5380,5340],{"class":760},[288,5382,5343],{"class":740},[288,5384,5346],{"class":298},[288,5386,836],{"class":760},[288,5388,5389],{"class":290,"line":1730},[288,5390,1207],{"emptyLinePlaceholder":120},[288,5392,5393],{"class":290,"line":1752},[288,5394,5395],{"class":1689},"        \u002F\u002F 包含數字 0-9\n",[288,5397,5398,5400,5402,5404,5407,5409,5411,5413,5415,5417,5419,5421,5423],{"class":290,"line":1771},[288,5399,5320],{"class":740},[288,5401,1981],{"class":760},[288,5403,2354],{"class":322},[288,5405,5406],{"class":298},"[0-9]",[288,5408,2354],{"class":322},[288,5410,2357],{"class":760},[288,5412,2360],{"class":750},[288,5414,807],{"class":760},[288,5416,2164],{"class":298},[288,5418,5340],{"class":760},[288,5420,5343],{"class":740},[288,5422,5346],{"class":298},[288,5424,836],{"class":760},[288,5426,5427],{"class":290,"line":1777},[288,5428,1207],{"emptyLinePlaceholder":120},[288,5430,5431],{"class":290,"line":1787},[288,5432,5433],{"class":1689},"        \u002F\u002F 包含不是大寫 A-Z、小寫 a-z、數字 0-9 的字元\n",[288,5435,5436,5438,5440,5442,5445,5447,5450,5452,5454,5456,5458,5460,5462,5464,5466],{"class":290,"line":1802},[288,5437,5320],{"class":740},[288,5439,1981],{"class":760},[288,5441,2354],{"class":322},[288,5443,5444],{"class":298},"[",[288,5446,4077],{"class":740},[288,5448,5449],{"class":298},"A-Za-z0-9]",[288,5451,2354],{"class":322},[288,5453,2357],{"class":760},[288,5455,2360],{"class":750},[288,5457,807],{"class":760},[288,5459,2164],{"class":298},[288,5461,5340],{"class":760},[288,5463,5343],{"class":740},[288,5465,5346],{"class":298},[288,5467,836],{"class":760},[288,5469,5470],{"class":290,"line":1809},[288,5471,1207],{"emptyLinePlaceholder":120},[288,5473,5474],{"class":290,"line":1818},[288,5475,5476],{"class":1689},"        \u002F\u002F 密碼夠長夠完美\n",[288,5478,5479,5481,5484,5486,5489,5491,5494,5497],{"class":290,"line":1823},[288,5480,5320],{"class":740},[288,5482,5483],{"class":760}," (score ",[288,5485,2694],{"class":740},[288,5487,5488],{"class":298}," 40",[288,5490,1565],{"class":760},[288,5492,5493],{"class":740},"return",[288,5495,5496],{"class":322}," 'Perfect'",[288,5498,836],{"class":760},[288,5500,5501],{"class":290,"line":1828},[288,5502,1207],{"emptyLinePlaceholder":120},[288,5504,5505,5507,5509,5511,5514,5516,5518,5521],{"class":290,"line":1833},[288,5506,5320],{"class":740},[288,5508,5483],{"class":760},[288,5510,2694],{"class":740},[288,5512,5513],{"class":298}," 20",[288,5515,1565],{"class":760},[288,5517,5493],{"class":740},[288,5519,5520],{"class":322}," 'Great'",[288,5522,836],{"class":760},[288,5524,5525],{"class":290,"line":1854},[288,5526,1207],{"emptyLinePlaceholder":120},[288,5528,5529,5531,5533,5535,5538,5540,5542,5545],{"class":290,"line":1870},[288,5530,5320],{"class":740},[288,5532,5483],{"class":760},[288,5534,2694],{"class":740},[288,5536,5537],{"class":298}," 10",[288,5539,1565],{"class":760},[288,5541,5493],{"class":740},[288,5543,5544],{"class":322}," 'Good'",[288,5546,836],{"class":760},[288,5548,5549],{"class":290,"line":1876},[288,5550,1207],{"emptyLinePlaceholder":120},[288,5552,5553,5556,5559],{"class":290,"line":1881},[288,5554,5555],{"class":740},"        return",[288,5557,5558],{"class":322}," 'weak'",[288,5560,836],{"class":760},[288,5562,5563],{"class":290,"line":1897},[288,5564,5565],{"class":760},"      },\n",[288,5567,5568],{"class":290,"line":1905},[288,5569,819],{"class":760},[288,5571,5572],{"class":290,"line":1914},[288,5573,1774],{"class":760},[288,5575,5576,5578,5580],{"class":290,"line":1923},[288,5577,5175],{"class":760},[288,5579,5193],{"class":5119},[288,5581,5132],{"class":760},[21,5583,1045],{"id":1044},[11,5585,5586,5587,5590,5591,5594,5595,5598],{},"這篇是 2018 年留下來的 Vue 練習，當時是直接透過 CDN 引入 Vue 2，再使用 ",[142,5588,5589],{},"new Vue()"," 搭配 ",[142,5592,5593],{},"el"," 掛載到頁面上。\n現在 Vue 專案的寫法已經和當年不同，Vue 3 也改成使用 ",[142,5596,5597],{},"createApp()"," 建立應用程式。\n另外，這裡的密碼強度計分方式只是當時練習使用的簡單判斷，並不適合直接作為正式服務的密碼安全標準。\n這篇就保留當年的寫法，作為以前的技術紀錄。",[21,5600,1067],{"id":1067},[462,5602,5603,5610],{},[465,5604,5605],{},[1073,5606,5609],{"href":5607,"rel":5608},"https:\u002F\u002Fv2.vuejs.org\u002Fv2\u002Fguide\u002F",[1077],"Vue 2 官方文件（封存版）",[465,5611,5612],{},[1073,5613,5616],{"href":5614,"rel":5615},"https:\u002F\u002Fv2.vuejs.org\u002Fv2\u002Fguide\u002Fcomputed.html",[1077],"Vue 2 computed 屬性",[1080,5618,5619],{},"html pre.shiki code .szmH1, html code.shiki .szmH1{--shiki-default:#24292E;--shiki-dark:#E6EDF3}html pre.shiki code .sXQ1o, html code.shiki .sXQ1o{--shiki-default:#22863A;--shiki-dark:#7EE787}html pre.shiki code .syv4q, html code.shiki .syv4q{--shiki-default:#6F42C1;--shiki-dark:#79C0FF}html pre.shiki code .sNbzA, html code.shiki .sNbzA{--shiki-default:#032F62;--shiki-dark:#A5D6FF}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 .sDgYj, html code.shiki .sDgYj{--shiki-default:#D73A49;--shiki-dark:#FF7B72}html pre.shiki code .sPgVT, html code.shiki .sPgVT{--shiki-default:#005CC5;--shiki-dark:#79C0FF}html pre.shiki code .sVjZL, html code.shiki .sVjZL{--shiki-default:#6F42C1;--shiki-dark:#D2A8FF}html pre.shiki code .sPyeA, html code.shiki .sPyeA{--shiki-default:#6A737D;--shiki-dark:#8B949E}",{"title":109,"searchDepth":110,"depth":110,"links":5621},[5622,5623,5624,5625],{"id":5104,"depth":113,"text":5105},{"id":365,"depth":113,"text":1124},{"id":1044,"depth":113,"text":1045},{"id":1067,"depth":113,"text":1067},"使用 Vue 的 computed 製作一個簡單的密碼強度判斷。",{},"\u002Fposts\u002Fvue2-password-strength","2018-01-08",[],{"title":5096,"description":5626},"posts\u002F20180108.vue2-password-strength",[1124,254,5634],"表單驗證","IxRQGjJZoHSSvXZgZiycMAIsFzwL7N7YT7gQtY3ihXI",{"id":260,"title":261,"body":5637,"category":245,"description":1116,"draft":116,"extension":117,"image":118,"meta":6238,"navigation":120,"path":1118,"publishedAt":1119,"relatedExperiments":6239,"seo":6240,"stem":1122,"tags":6241,"updatedAt":122,"__hash__":1126},{"type":8,"value":5638,"toc":6208},[5639,5641,5643,5645,5647,5657,5659,5661,5663,5677,5679,5693,5695,5705,5709,5711,5721,5723,5725,5727,5729,5731,5733,5735,5737,5741,5743,5745,5765,5767,5769,5771,5777,5779,5781,5785,5787,5799,5801,5803,5805,5810,5812,5814,5819,5821,5823,5839,5841,5843,5845,5847,5852,5854,5862,5864,5869,5871,5873,5878,5880,5882,5884,5889,5891,5893,5898,5902,5904,5906,5918,5920,5922,5934,5936,5938,5940,5942,5944,5949,5951,5953,5955,5957,5959,5963,6035,6039,6041,6049,6051,6053,6058,6060,6072,6074,6100,6102,6106,6110,6112,6117,6121,6161,6165,6167,6169,6183,6185,6187,6189,6195,6197,6199,6206],[11,5640,266],{},[21,5642,270],{"id":269},[272,5644,275],{"id":274},[11,5646,278],{},[280,5648,5649],{"className":282,"code":283,"language":284,"meta":109,"style":109},[142,5650,5651],{"__ignoreMap":109},[288,5652,5653,5655],{"class":290,"line":291},[288,5654,295],{"class":294},[288,5656,299],{"class":298},[11,5658,302],{},[272,5660,306],{"id":305},[11,5662,309],{},[280,5664,5665],{"className":282,"code":312,"language":284,"meta":109,"style":109},[142,5666,5667],{"__ignoreMap":109},[288,5668,5669,5671,5673,5675],{"class":290,"line":291},[288,5670,319],{"class":294},[288,5672,323],{"class":322},[288,5674,326],{"class":322},[288,5676,329],{"class":298},[272,5678,333],{"id":332},[280,5680,5681],{"className":282,"code":336,"language":284,"meta":109,"style":109},[142,5682,5683],{"__ignoreMap":109},[288,5684,5685,5687,5689,5691],{"class":290,"line":291},[288,5686,319],{"class":294},[288,5688,345],{"class":322},[288,5690,348],{"class":298},[288,5692,351],{"class":322},[272,5694,355],{"id":354},[280,5696,5697],{"className":282,"code":358,"language":284,"meta":109,"style":109},[142,5698,5699],{"__ignoreMap":109},[288,5700,5701,5703],{"class":290,"line":291},[288,5702,365],{"class":294},[288,5704,368],{"class":298},[21,5706,160,5707,375],{"id":371},[142,5708,374],{},[11,5710,378],{},[280,5712,5713],{"className":282,"code":381,"language":284,"meta":109,"style":109},[142,5714,5715],{"__ignoreMap":109},[288,5716,5717,5719],{"class":290,"line":291},[288,5718,365],{"class":294},[288,5720,390],{"class":322},[11,5722,393],{},[11,5724,396],{},[272,5726,399],{"id":399},[11,5728,402],{},[272,5730,405],{"id":405},[11,5732,408],{},[272,5734,411],{"id":411},[11,5736,414],{},[11,5738,417,5739,421],{},[142,5740,420],{},[272,5742,424],{"id":424},[11,5744,427],{},[280,5746,5747],{"className":282,"code":430,"language":284,"meta":109,"style":109},[142,5748,5749,5757],{"__ignoreMap":109},[288,5750,5751,5753,5755],{"class":290,"line":291},[288,5752,319],{"class":294},[288,5754,439],{"class":322},[288,5756,442],{"class":322},[288,5758,5759,5761,5763],{"class":290,"line":113},[288,5760,319],{"class":294},[288,5762,439],{"class":322},[288,5764,451],{"class":322},[11,5766,454],{},[11,5768,457],{},[11,5770,460],{},[462,5772,5773,5775],{},[465,5774,467],{},[465,5776,470],{},[11,5778,473],{},[11,5780,476],{},[21,5782,160,5783,375],{"id":479},[142,5784,482],{},[11,5786,485],{},[280,5788,5789],{"className":282,"code":488,"language":284,"meta":109,"style":109},[142,5790,5791],{"__ignoreMap":109},[288,5792,5793,5795,5797],{"class":290,"line":291},[288,5794,365],{"class":294},[288,5796,497],{"class":322},[288,5798,500],{"class":322},[11,5800,503],{},[272,5802,507],{"id":506},[11,5804,510],{},[280,5806,5808],{"className":5807,"code":515,"language":516,"meta":109},[514],[142,5809,515],{"__ignoreMap":109},[11,5811,521],{},[11,5813,524],{},[280,5815,5817],{"className":5816,"code":528,"language":516,"meta":109},[514],[142,5818,528],{"__ignoreMap":109},[11,5820,533],{},[11,5822,536],{},[462,5824,5825,5827,5829,5831,5833,5835,5837],{},[465,5826,541],{},[465,5828,544],{},[465,5830,547],{},[465,5832,550],{},[465,5834,553],{},[465,5836,556],{},[465,5838,559],{},[11,5840,562],{},[21,5842,566],{"id":565},[11,5844,569],{},[11,5846,572],{},[280,5848,5850],{"className":5849,"code":576,"language":516,"meta":109},[514],[142,5851,576],{"__ignoreMap":109},[11,5853,581],{},[462,5855,5856,5858,5860],{},[465,5857,586],{},[465,5859,589],{},[465,5861,592],{},[11,5863,595],{},[280,5865,5867],{"className":5866,"code":599,"language":516,"meta":109},[514],[142,5868,599],{"__ignoreMap":109},[11,5870,604],{},[11,5872,607],{},[280,5874,5876],{"className":5875,"code":611,"language":516,"meta":109},[514],[142,5877,611],{"__ignoreMap":109},[11,5879,616],{},[21,5881,619],{"id":619},[11,5883,622],{},[280,5885,5887],{"className":5886,"code":626,"language":516,"meta":109},[514],[142,5888,626],{"__ignoreMap":109},[11,5890,631],{},[11,5892,607],{},[280,5894,5896],{"className":5895,"code":637,"language":516,"meta":109},[514],[142,5897,637],{"__ignoreMap":109},[11,5899,642,5900,238],{},[142,5901,645],{},[21,5903,648],{"id":648},[11,5905,651],{},[280,5907,5908],{"className":282,"code":654,"language":284,"meta":109,"style":109},[142,5909,5910],{"__ignoreMap":109},[288,5911,5912,5914,5916],{"class":290,"line":291},[288,5913,319],{"class":294},[288,5915,439],{"class":322},[288,5917,442],{"class":322},[11,5919,667],{},[11,5921,670],{},[280,5923,5924],{"className":282,"code":673,"language":284,"meta":109,"style":109},[142,5925,5926],{"__ignoreMap":109},[288,5927,5928,5930,5932],{"class":290,"line":291},[288,5929,319],{"class":294},[288,5931,439],{"class":322},[288,5933,451],{"class":322},[11,5935,686],{},[11,5937,689],{},[21,5939,693],{"id":692},[11,5941,696],{},[11,5943,699],{},[280,5945,5947],{"className":5946,"code":703,"language":516,"meta":109},[514],[142,5948,703],{"__ignoreMap":109},[272,5950,708],{"id":708},[11,5952,711],{},[272,5954,714],{"id":714},[11,5956,717],{},[272,5958,721],{"id":720},[11,5960,724,5961,728],{},[142,5962,727],{},[280,5964,5965],{"className":731,"code":732,"language":733,"meta":109,"style":109},[142,5966,5967,5979,5983,5987,5995,6003,6019,6023,6029],{"__ignoreMap":109},[288,5968,5969,5971,5973,5975,5977],{"class":290,"line":291},[288,5970,741],{"class":740},[288,5972,744],{"class":740},[288,5974,747],{"class":740},[288,5976,751],{"class":750},[288,5978,755],{"class":754},[288,5980,5981],{"class":290,"line":113},[288,5982,761],{"class":760},[288,5984,5985],{"class":290,"line":110},[288,5986,766],{"class":760},[288,5988,5989,5991,5993],{"class":290,"line":769},[288,5990,772],{"class":760},[288,5992,775],{"class":322},[288,5994,778],{"class":760},[288,5996,5997,5999,6001],{"class":290,"line":781},[288,5998,784],{"class":760},[288,6000,787],{"class":322},[288,6002,778],{"class":760},[288,6004,6005,6007,6009,6011,6013,6015,6017],{"class":290,"line":792},[288,6006,795],{"class":750},[288,6008,798],{"class":760},[288,6010,801],{"class":740},[288,6012,804],{"class":740},[288,6014,807],{"class":760},[288,6016,810],{"class":322},[288,6018,813],{"class":760},[288,6020,6021],{"class":290,"line":816},[288,6022,819],{"class":760},[288,6024,6025,6027],{"class":290,"line":822},[288,6026,825],{"class":760},[288,6028,778],{"class":754},[288,6030,6031,6033],{"class":290,"line":830},[288,6032,833],{"class":754},[288,6034,836],{"class":760},[11,6036,839,6037,843],{},[142,6038,842],{},[11,6040,846],{},[848,6042,6043],{},[11,6044,852,6045,856,6047,860],{},[142,6046,855],{},[142,6048,859],{},[21,6050,863],{"id":863},[11,6052,866],{},[280,6054,6056],{"className":6055,"code":870,"language":516,"meta":109},[514],[142,6057,870],{"__ignoreMap":109},[11,6059,875],{},[280,6061,6062],{"className":878,"code":879,"language":880,"meta":109,"style":109},[142,6063,6064,6068],{"__ignoreMap":109},[288,6065,6066],{"class":290,"line":291},[288,6067,887],{},[288,6069,6070],{"class":290,"line":113},[288,6071,892],{},[11,6073,895],{},[280,6075,6076],{"className":731,"code":898,"language":733,"meta":109,"style":109},[142,6077,6078,6084,6096],{"__ignoreMap":109},[288,6079,6080,6082],{"class":290,"line":291},[288,6081,905],{"class":750},[288,6083,908],{"class":760},[288,6085,6086,6088,6090,6092,6094],{"class":290,"line":113},[288,6087,913],{"class":760},[288,6089,916],{"class":750},[288,6091,919],{"class":760},[288,6093,922],{"class":298},[288,6095,925],{"class":760},[288,6097,6098],{"class":290,"line":110},[288,6099,930],{"class":760},[11,6101,933],{},[11,6103,936,6104,940],{},[142,6105,939],{},[21,6107,944,6108],{"id":943},[142,6109,939],{},[11,6111,949],{},[280,6113,6115],{"className":6114,"code":953,"language":516,"meta":109},[514],[142,6116,953],{"__ignoreMap":109},[11,6118,958,6119,961],{},[142,6120,645],{},[280,6122,6123],{"className":964,"code":965,"language":966,"meta":109,"style":109},[142,6124,6125,6129,6135,6145,6153,6157],{"__ignoreMap":109},[288,6126,6127],{"class":290,"line":291},[288,6128,973],{"class":760},[288,6130,6131,6133],{"class":290,"line":113},[288,6132,979],{"class":978},[288,6134,982],{"class":760},[288,6136,6137,6139,6141,6143],{"class":290,"line":110},[288,6138,987],{"class":978},[288,6140,990],{"class":760},[288,6142,993],{"class":322},[288,6144,778],{"class":760},[288,6146,6147,6149,6151],{"class":290,"line":769},[288,6148,1000],{"class":978},[288,6150,990],{"class":760},[288,6152,1005],{"class":322},[288,6154,6155],{"class":290,"line":781},[288,6156,1010],{"class":760},[288,6158,6159],{"class":290,"line":792},[288,6160,930],{"class":760},[11,6162,1017,6163,1020],{},[142,6164,939],{},[21,6166,1024],{"id":1023},[11,6168,1027],{},[280,6170,6171],{"className":282,"code":312,"language":284,"meta":109,"style":109},[142,6172,6173],{"__ignoreMap":109},[288,6174,6175,6177,6179,6181],{"class":290,"line":291},[288,6176,319],{"class":294},[288,6178,323],{"class":322},[288,6180,326],{"class":322},[288,6182,329],{"class":298},[21,6184,1045],{"id":1044},[11,6186,1048],{},[11,6188,1051],{},[11,6190,1054,6191,1057,6193,1061],{},[142,6192,374],{},[142,6194,1060],{},[11,6196,1064],{},[21,6198,1067],{"id":1067},[462,6200,6201],{},[465,6202,6203],{},[1073,6204,1078],{"href":1075,"rel":6205},[1077],[1080,6207,1082],{},{"title":109,"searchDepth":110,"depth":110,"links":6209},[6210,6216,6222,6225,6226,6227,6228,6233,6234,6235,6236,6237],{"id":269,"depth":113,"text":270,"children":6211},[6212,6213,6214,6215],{"id":274,"depth":110,"text":275},{"id":305,"depth":110,"text":306},{"id":332,"depth":110,"text":333},{"id":354,"depth":110,"text":355},{"id":371,"depth":113,"text":1092,"children":6217},[6218,6219,6220,6221],{"id":399,"depth":110,"text":399},{"id":405,"depth":110,"text":405},{"id":411,"depth":110,"text":411},{"id":424,"depth":110,"text":424},{"id":479,"depth":113,"text":1099,"children":6223},[6224],{"id":506,"depth":110,"text":507},{"id":565,"depth":113,"text":566},{"id":619,"depth":113,"text":619},{"id":648,"depth":113,"text":648},{"id":692,"depth":113,"text":693,"children":6229},[6230,6231,6232],{"id":708,"depth":110,"text":708},{"id":714,"depth":110,"text":714},{"id":720,"depth":110,"text":721},{"id":863,"depth":113,"text":863},{"id":943,"depth":113,"text":1112},{"id":1023,"depth":113,"text":1024},{"id":1044,"depth":113,"text":1045},{"id":1067,"depth":113,"text":1067},{},[],{"title":261,"description":1116},[1124,1125,319],{"id":134,"title":135,"body":6243,"category":245,"description":246,"draft":116,"extension":117,"image":118,"meta":6315,"navigation":120,"path":248,"publishedAt":249,"relatedExperiments":6316,"seo":6317,"stem":252,"tags":6318,"updatedAt":257,"__hash__":258},{"type":8,"value":6244,"toc":6309},[6245,6253,6255,6259,6263,6265,6271,6275,6281,6285,6287,6291,6295,6297,6301,6303],[11,6246,140,6247,145,6249,149,6251,153],{},[142,6248,144],{},[142,6250,148],{},[142,6252,152],{},[21,6254,157],{"id":156},[11,6256,160,6257,163],{},[142,6258,144],{},[11,6260,6261],{},[167,6262],{"alt":169,"src":170},[21,6264,174],{"id":173},[11,6266,6267,179,6269,182],{},[142,6268,144],{},[142,6270,148],{},[11,6272,6273],{},[167,6274],{"alt":187,"src":188},[11,6276,191,6277,149,6279,196],{},[142,6278,144],{},[142,6280,148],{},[11,6282,6283],{},[167,6284],{"alt":201,"src":202},[21,6286,206],{"id":205},[11,6288,6289,211],{},[142,6290,152],{},[11,6292,6293],{},[167,6294],{"alt":216,"src":217},[11,6296,220],{},[11,6298,6299],{},[167,6300],{"alt":225,"src":226},[21,6302,229],{"id":229},[11,6304,232,6305,235,6307,238],{},[142,6306,152],{},[142,6308,148],{},{"title":109,"searchDepth":110,"depth":110,"links":6310},[6311,6312,6313,6314],{"id":156,"depth":113,"text":157},{"id":173,"depth":113,"text":174},{"id":205,"depth":113,"text":206},{"id":229,"depth":113,"text":229},{},[],{"title":135,"description":246},[254,255,256],{"id":5,"title":6,"body":6320,"category":114,"description":115,"draft":116,"extension":117,"image":118,"meta":6391,"navigation":120,"path":121,"publishedAt":122,"relatedExperiments":6392,"seo":6393,"stem":126,"tags":6394,"updatedAt":131,"__hash__":132},{"type":8,"value":6321,"toc":6388},[6322,6324,6326,6328,6330,6332,6386],[11,6323,13],{},[11,6325,16],{},[11,6327,19],{},[21,6329,23],{"id":23},[11,6331,26],{},[28,6333,6334,6344],{},[31,6335,6336],{},[34,6337,6338,6340,6342],{},[37,6339,39],{},[37,6341,42],{},[37,6343,45],{},[47,6345,6346,6354,6362,6370,6378],{},[34,6347,6348,6350,6352],{},[52,6349,54],{},[52,6351,57],{},[52,6353,60],{},[34,6355,6356,6358,6360],{},[52,6357,65],{},[52,6359,68],{},[52,6361,71],{},[34,6363,6364,6366,6368],{},[52,6365,76],{},[52,6367,79],{},[52,6369,82],{},[34,6371,6372,6374,6376],{},[52,6373,87],{},[52,6375,90],{},[52,6377,93],{},[34,6379,6380,6382,6384],{},[52,6381,98],{},[52,6383,101],{},[52,6385,104],{},[11,6387,107],{},{"title":109,"searchDepth":110,"depth":110,"links":6389},[6390],{"id":23,"depth":113,"text":23},{},[124],{"title":6,"description":115},[128,129,130],1787580221098]