bookmark/js/app.js.map
caojiezi2003 883a42fa3b 更新为构建的静态文件
更改为静态文件,以便于在Cloudflare的Pages直接部署。
2023-10-25 14:31:21 +08:00

1 line
153 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/svg/search.svg","webpack:///./src/App.vue?a0e0","webpack:///./src/assets/svg/translate.svg","webpack:///./src/components/Dialog.vue?2ab5","webpack:///./src/components/Bg.vue?0b76","webpack:///./src/assets/svg/user.svg","webpack:///./src/App.vue","webpack:///./src/assets/Json/印象笔记.js","webpack:///./src/components/Dialog.vue","webpack:///./src/components/Dialog.vue?7af5","webpack:///./src/components/Bg.vue","webpack:///./src/components/Bg.vue?5c03","webpack:///./src/components/Login.vue","webpack:///./src/Api/user.js","webpack:///./src/components/Login.vue?2273","webpack:///./src/components/Configd.vue","webpack:///./src/components/config.js","webpack:///./src/components/Configd.vue?6892","webpack:///./src/Api/common.js","webpack:///./src/components/utils.js","webpack:///./src/components/theme.js","webpack:///./src/App.vue?c56b","webpack:///./src/main.js","webpack:///./src/components/Configd.vue?6fd1","webpack:///./src/assets/svg/logo.svg","webpack:///./src/assets/svg/add.svg","webpack:///./src/components/Login.vue?2a67","webpack:///./src/assets/svg/blog.svg","webpack:///./src/assets/svg/file.svg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","id","class","_createElementVNode","href","target","src","_imports_0","title","_imports_1","_imports_3","_imports_4","_imports_5","_imports_6","type","ref","_hoisted_31","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","placeholder","_ctx","searchVal","$event","_imports_2","onClick","_cache","$setup","add","_hoisted_7","_hoisted_8","args","loginClick","_hoisted_9","userInfo","username","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_createElementBlock","_Fragment","_renderList","item","index","_normalizeClass","activeIndex","selectType","_hoisted_15","_hoisted_16","_toDisplayString","_hoisted_17","_hoisted_18","importBookmark","_hoisted_19","exportBookmark","configClick","resetClick","_hoisted_20","bookMark","_createBlock","_TransitionGroup","tag","css","onBeforeEnter","$options","beforeEnter","onEnter","enter","onLeave","leave","card","idx","navigate","_hoisted_22","logo","_hoisted_24","_hoisted_25","_withModifiers","deleteClick","_hoisted_28","_hoisted_29","desc","_hoisted_30","_hoisted_32","_createVNode","_component_Dialog","isDetailVisible","onCloseViews","closeViews","detail","onFresh","search","_component_Login","isLoginVisible","closeLoginViews","onSetUser","setUsername","_component_Configd","isConfigVisible","closeConfigViews","fresh","_component_Bg","myData","children","url","contribute","is_docschina","repository","_id","_updateTime","team","homeBackup","imgStyle","objectFit","_createTime","_component_el_dialog","custom-class","visible","$props","width","footer","_withCtx","_component_el_button","size","submitForm","_component_el_form","status-icon","rules","model","ruleForm","label-width","_component_el_row","gutter","_component_el_col","span","_component_el_form_item","label","prop","_component_el_input","_component_el_select","style","BOOKMARK","_component_el_option","clearable","events","props","Boolean","default","Number","setup","context","isBOOKMARK","JSON","parse","localStorage","getItem","map","v","form","reactive","required","message","trigger","refruleForm","validate","valid","myDetail","formData","flag","sIndex","findIndex","ElMessage","success","pindex","setItem","stringify","emit","resetFields","watch","nextTick","deep","toRefs","__exports__","defaultConfig","direction","isPausedWhenNotInView","opacity","states","gradients","color","pos","image","source","position","stretchMode","blendingMode","granimInstance","init","granimConfig","Granim","element","expose","onMounted","destroy","email","password","show-password","login","Promise","resolve","reject","AV","User","logIn","then","user","catch","error","loginEmail","loginWithEmail","logout","logOut","register","setPassword","signUp","getInfo","params","loginWithAuthData","openid","access_token","expires_in","Api","res","Cookie","set","err","code","onChange","handleFileChange","accept","multiple","theme","setGranim","selectVal","options","opacity0","onkeyup","directions","opacity1","opacity2","config","gradient1","gradient2","gradient3","gradient4","transitionSpeed","state","imageUrl","granimRef","obj","changeFileIntoBase64","file","fr","FileReader","readAsDataURL","onload","base64Str","currentTarget","e","files","finally","attrs","useAttrs","modelValue","saveObject","className","Todo","extend","current","todo","formDatas","save","getObject","query","Query","equalTo","find","walkBookmarksTree","root","walk","node","list","els","tagName","child","isDir","querySelector","innerText","folder","_item","myBookmark","filter","flagBrowerList","flatten","content","eleLink","document","createElement","download","display","blob","Blob","URL","createObjectURL","body","appendChild","click","removeChild","this","$message","warning","themeConfig","light","bgColor","activeColor","textColor","hoverColor","borderColor","scrollbarColor","svgColor","dark","rowData","__default__","components","Dialog","Login","Configd","Bg","arr","Array","isArray","allData","themeStyle","getBookmarkList","fn","objectId","attributes","toLowerCase","indexOf","open","row","temp","assign","handleUserLogin","async","delDetail","cindex","LoginOut","ElMessageBox","confirm","confirmButtonText","cancelButtonText","remove","getElementById","dispatchEvent","MouseEvent","mybookmark","addEventListener","reader","readAsText","innerHTML","saveBookmarkList","bgRef","setTheme","obj1","computed","removeItem","methods","el","height","done","gsap","to","delay","dataset","onComplete","render","appId","appKey","serverURL","app","createApp","App","use","ElementPlus","mount"],"mappings":"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","file":"js/app.bdf5fee8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/search.c77e1385.svg\";","export * from \"-!../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/.pnpm/sass-loader@8.0.2_node-sass@4.14.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=58ce68a6&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/translate.fa0bf271.svg\";","export * from \"-!../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/stylePostLoader.js!../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/.pnpm/sass-loader@8.0.2_node-sass@4.14.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/index.js??ref--1-1!./Dialog.vue?vue&type=style&index=0&id=1232f72c&scoped=true&lang=scss\"","export * from \"-!../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/stylePostLoader.js!../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/.pnpm/sass-loader@8.0.2_node-sass@4.14.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/index.js??ref--1-1!./Bg.vue?vue&type=style&index=0&id=08a9f3f2&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/user.6e444b4a.svg\";","<template>\r\n <div id=\"app\">\r\n <div class=\"bookmark\" id=\"bookmark\">\r\n <div class=\"tool-bar\">\r\n <div class=\"tool-logo\">\r\n <a href=\"\" target=\"_blank\"><img src=\"./assets/svg/logo.svg\" title=\"感谢作者 是半夏鸭 设计的图标\" class=\"tool-icon\" />红隼书签</a>\r\n </div>\r\n <div>\r\n <div class=\"search-box\">\r\n <img src=\"./assets/svg/search.svg\">\r\n <input type=\"text\" placeholder=\"请输入书签名称\" v-model=\"searchVal\" />\r\n </div>\r\n <img src=\"./assets/svg/add.svg\" class=\"tool-icon\" @click=\"add({},'add')\" />\r\n <a title=\"我的博客\" href=\"https://zhanhongzhu.top\" target=\"_blank\"><img src=\"./assets/svg/blog.svg\" class=\"tool-icon\" /></a>\r\n <a title=\"github\" href=\"https://github.com\" target=\"_blank\"><img src=\"./assets/svg/translate.svg\" class=\"tool-icon\" /></a>\r\n <span class=\"login-s\" @click=\"loginClick\"><img src=\"./assets/svg/user.svg\" class=\"tool-icon\" title=\"已登录\" /><span class=\"login-status\" :title=\"userInfo.username\">{{userInfo.username.slice(0, 5)}}</span></span>\r\n </div>\r\n <!-- userInfo.objectId?LoginOut:handleUserLogin -->\r\n </div>\r\n <!-- 侧边导航栏 -->\r\n <div class=\"box-m\">\r\n <div class=\"left-box\">\r\n <div class=\"left-box-item\">\r\n <div class=\"label\" :class=\"activeIndex===index?'active':'inactive'\" v-for=\"(item,index) in data\" :key=\"index\" @click=\"selectType(item,index)\">\r\n <img src=\"./assets/svg/file.svg\" />\r\n <div class=\"text-elipss\"> {{item.type}} </div>\r\n </div>\r\n </div>\r\n <!-- 导入导出 -->\r\n <div class=\"import-tool\">\r\n <span class=\"import-text\">导入/导出:</span>\r\n <i class=\"el-icon-upload2\" title=\"导入浏览器书签\" @click=\"importBookmark\">\r\n <input type=\"file\" ref=\"filElem\" id=\"file\">\r\n </i>\r\n <i class=\"el-icon-download\" title=\"导出浏览器书签\" @click=\"exportBookmark\"></i>\r\n <i class=\"el-icon-setting\" title=\"配置项\" @click=\"configClick\"></i>\r\n <i class=\"el-icon-refresh\" title=\"重置\" @click=\"resetClick\"></i>\r\n </div>\r\n </div>\r\n <div class=\"right-box\">\r\n <transition-group v-if=\"bookMark.length\" name=\"staggered-fade\" class=\"card-s\" tag=\"ul\" :css=\"false\" @before-enter=\"beforeEnter\" @enter=\"enter\" @leave=\"leave\">\r\n <div class=\"card-item list-complete-item\" v-for=\"(card,idx) in bookMark\" :key=\"idx\" @click=\"navigate(card)\">\r\n <div class=\"logo-img\"><img :src=\"card.logo?card.logo:'/img/logo.f38dc2e8.svg'\" /></div>\r\n <div class=\"logo-box\">\r\n <span class=\"logo-box-tools\">\r\n <i class=\"el-icon-edit\" @click.stop=\"add(card,'modify')\"></i>\r\n <i class=\"el-icon-delete\" @click.stop=\"deleteClick(card)\"></i>\r\n </span>\r\n <span class=\"title\">{{card.title || 'Kestrel-bookmark'}}</span>\r\n <span class=\"subtitle\">{{card.desc || \"红隼书签-为中国 Web 前端开发人员提供优质网站导航\"}}</span>\r\n </div>\r\n </div>\r\n </transition-group>\r\n <!-- 无数据显示 -->\r\n <div v-if=\"!bookMark.length\" class=\"card-item-nodata\">\r\n <div>\r\n <svg width=\"66\" height=\"68\" viewBox=\"0 0 66 68\" class=\"icon empty-icon\" data-v-8739e5ce=\"\">\r\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(4 3)\" data-v-8739e5ce=\"\">\r\n <g fill=\"#F7F7F7\" data-v-8739e5ce=\"\">\r\n <path d=\"M9 10h23.751v3.221H9zM9 16.494h41.083v4.026H9zM9 26.104h23.751v3.221H9zM9 42.208h23.751v3.221H9zM9 33.351h41.083v4.026H9zM9 49.455h41.083v4.026H9z\" data-v-8739e5ce=\"\">\r\n </path>\r\n </g>\r\n <rect width=\"56\" height=\"60\" x=\"1.139\" y=\"1.338\" stroke=\"#EBEBEB\" stroke-width=\"2\" rx=\"6\" data-v-8739e5ce=\"\"></rect>\r\n </g>\r\n </svg><span class=\"empty-text\" data-v-8739e5ce=\"\">暂无数据</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 新增/修改弹窗 -->\r\n <Dialog class=\"my-dialog\" v-model=\"isDetailVisible\" @closeViews=\"closeViews\" :detail=\"detail\" :selectType=\"activeIndex\" @fresh=\"search\" />\r\n <!-- 登录弹窗 -->\r\n <Login v-model=\"isLoginVisible\" @closeViews=\"closeLoginViews\" @setUser=\"setUsername\" />\r\n\r\n <!-- 配置项-背景 动画效果 -->\r\n <Configd v-model=\"isConfigVisible\" @closeViews=\"closeConfigViews\" @fresh=\"fresh\" />\r\n\r\n <!-- 配置项-背景 -->\r\n <Bg ref=\"bgRef\" />\r\n</template>\r\n<script>\r\nimport { reactive, toRefs, watch, ref, onMounted, computed } from 'vue'\r\nimport { myData } from './assets/Json/印象笔记.js'\r\nimport Dialog from './components/Dialog.vue'\r\nimport Bg from './components/Bg.vue'\r\nimport Login from './components/Login.vue'\r\nimport Configd from './components/Configd.vue'\r\nimport gsap from 'gsap'\r\nimport { ElMessage, ElMessageBox } from 'element-plus'\r\nimport { saveObject, getObject } from './Api/common.js'\r\nimport { exportBookmark, walkBookmarksTree } from './components/utils.js'\r\nimport Cookie from 'js-cookie'\r\nimport { themeConfig } from './components/theme'\r\nimport Api from './Api/user.js'\r\nvar rowData = []\r\nexport default {\r\n components: { Dialog, Login, Configd, Bg },\r\n name: 'kestrel-bookmark',\r\n setup() {\r\n // 扁平化数组\r\n const flatten = (arr, result = []) => {\r\n for (const item of arr) {\r\n Array.isArray(item.children)\r\n ? flatten(item.children, result)\r\n : result.push(item)\r\n }\r\n return result\r\n }\r\n\r\n const data = reactive({\r\n activeIndex: 0,\r\n data: [],\r\n bookMark: [],\r\n searchVal: '',\r\n allData: [],\r\n isDetailVisible: false,\r\n isLoginVisible: false,\r\n isConfigVisible: false,\r\n detail: {},\r\n userInfo: {\r\n username: '未登录'\r\n },\r\n themeStyle: {},\r\n theme: 'light'\r\n })\r\n /*\r\n **数据来源\r\n 1.未登录 缓存无数据 取默认\r\n 2.未登录 缓存有数据 取缓存\r\n 3.已登录 系统无数据 取默认\r\n 4.已登录 系统有数据 取系统数据\r\n */\r\n const getBookmarkList = (fn = () => {}) => {\r\n if (Cookie.get('userInfo')) {\r\n data.userInfo = JSON.parse(Cookie.get('userInfo'))\r\n }\r\n if (!data.userInfo.objectId) {\r\n if (localStorage.getItem('BOOKMARK')) {\r\n rowData = JSON.parse(localStorage.getItem('BOOKMARK'))\r\n } else {\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n rowData = JSON.parse(JSON.stringify(myData))\r\n }\r\n data.data = rowData\r\n data.bookMark = rowData[0].children\r\n data.allData = flatten(rowData)\r\n fn()\r\n } else {\r\n // 已登录 系统无数据\r\n getObject('BOOKMARK')\r\n .then((res) => {\r\n if (res.length > 0) {\r\n rowData = JSON.parse(res[0].attributes.formDatas)\r\n } else {\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n rowData = JSON.parse(JSON.stringify(myData))\r\n }\r\n })\r\n .catch(() => {\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n rowData = JSON.parse(JSON.stringify(myData))\r\n })\r\n .finally(() => {\r\n fn()\r\n data.data = rowData\r\n data.bookMark = rowData[0].children\r\n data.allData = flatten(rowData)\r\n })\r\n }\r\n }\r\n\r\n // 设置用户\r\n const setUsername = () => {\r\n if (Cookie.get('userInfo')) {\r\n data.userInfo = JSON.parse(Cookie.get('userInfo'))\r\n } else {\r\n data.userInfo = { username: '未登录' }\r\n }\r\n getBookmarkList()\r\n }\r\n setUsername()\r\n // 全部数据筛选功能\r\n watch(\r\n () => data.searchVal,\r\n () => {\r\n data.bookMark = data.allData.filter(\r\n (v) =>\r\n v.title.toLowerCase().indexOf(data.searchVal.toLowerCase()) > -1\r\n )\r\n }\r\n )\r\n // 书签类别选择\r\n const selectType = (item, index) => {\r\n data.bookMark = item.children\r\n data.activeIndex = index\r\n }\r\n // 书签跳转\r\n const navigate = (v) => window.open(v.url, '_target')\r\n\r\n // 新增书签\r\n function add(row = {}, flag = 'add') {\r\n const temp = { ...row }\r\n if (flag === 'modify') {\r\n data.detail = Object.assign(temp, {\r\n type: rowData[data.activeIndex].type,\r\n flag: 'modify'\r\n })\r\n } else {\r\n data.detail = Object.assign(\r\n {},\r\n { type: rowData[data.activeIndex].type, flag: 'add' }\r\n )\r\n }\r\n data.isDetailVisible = true\r\n }\r\n // 用户登录\r\n const handleUserLogin = () => {\r\n data.isLoginVisible = true\r\n }\r\n\r\n // 配置项\r\n const configClick = () => {\r\n data.isConfigVisible = true\r\n }\r\n const closeConfigViews = (v) => (data.isConfigVisible = v)\r\n\r\n // 关闭弹窗事件\r\n const closeViews = (v) => (data.isDetailVisible = v)\r\n const closeLoginViews = (v) => (data.isLoginVisible = v)\r\n\r\n // 获取书签分类数据\r\n const search = async () => {\r\n await getBookmarkList(() => {\r\n data.data = rowData\r\n data.bookMark = rowData[data.activeIndex].children\r\n })\r\n }\r\n // 删除书签\r\n const deleteClick = (row) => {\r\n const myData = JSON.parse(localStorage.getItem('BOOKMARK'))\r\n const delDetail = Object.assign(row, {\r\n type: rowData[data.activeIndex].type\r\n })\r\n for (let i = 0; i < myData.length; i++) {\r\n if (delDetail.type === myData[i].type) {\r\n const cindex = myData[i].children.findIndex(\r\n (s) => s.title === delDetail.title\r\n )\r\n if (cindex > -1) {\r\n myData[i].children.splice(cindex, 1)\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n ElMessage.success('删除成功')\r\n search()\r\n }\r\n }\r\n }\r\n }\r\n // 退出登录\r\n const LoginOut = () => {\r\n ElMessageBox.confirm('确认要退出登录?', '温馨提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n const params = { username: '', password: '' }\r\n Api.logout(params.username, params.password).then((res) => {\r\n Cookie.remove('userInfo')\r\n setUsername()\r\n })\r\n ElMessage({\r\n type: 'success',\r\n message: '已退出登录'\r\n })\r\n })\r\n }\r\n // 登录或退出\r\n const loginClick = () => {\r\n data.userInfo.objectId ? LoginOut() : handleUserLogin()\r\n }\r\n\r\n // 导入书签\r\n const importBookmark = () => {\r\n if (data.userInfo.objectId) {\r\n const file = document.getElementById('file')\r\n file.dispatchEvent(new MouseEvent('click'))\r\n const mybookmark = document.getElementById('mybookmark')\r\n document.getElementById('file').addEventListener('change', function () {\r\n var file = document.getElementById('file').files[0]\r\n var reader = new FileReader()\r\n reader.readAsText(file, 'utf-8')\r\n reader.onload = function () {\r\n mybookmark.innerHTML = reader.result\r\n const formDatas = JSON.stringify(walkBookmarksTree(mybookmark))\r\n if (formDatas) {\r\n const params = { formDatas: formDatas }\r\n saveBookmarkList(params)\r\n }\r\n }\r\n })\r\n } else {\r\n ElMessage.warning('请先登录')\r\n }\r\n }\r\n\r\n // 书签数据存储\r\n const saveBookmarkList = (params) => {\r\n saveObject('BOOKMARK', params).then((res) => {\r\n ElMessage.success('导入成功')\r\n getBookmarkList()\r\n })\r\n }\r\n const bgRef = ref(null)\r\n const fresh = () => {\r\n setTheme()\r\n bgRef.value.init()\r\n }\r\n\r\n // 设置主题\r\n const setTheme = () => {\r\n const obj1 = localStorage.getItem('granimConfig')\r\n if (obj1) {\r\n const obj = JSON.parse(obj1)\r\n data.theme = obj.theme\r\n data.themeStyle = themeConfig[`${data.theme}`]\r\n data.themeStyle.opacity0 =\r\n obj.opacity0 && obj.opacity0 > 0.5 ? obj.opacity0 : 0.5\r\n } else {\r\n data.themeStyle = themeConfig.light\r\n data.themeStyle.opacity0 = 0.8\r\n }\r\n }\r\n // 背景色\r\n const bgColor = computed(() => {\r\n return themeConfig[`${data.theme}`].bgColor\r\n })\r\n // 激活样式\r\n const activeColor = computed(() => {\r\n return themeConfig[`${data.theme}`].activeColor\r\n })\r\n // 亮度\r\n const opacity0 = computed(() => {\r\n return data.themeStyle.opacity0\r\n })\r\n // 文字颜色\r\n const textColor = computed(() => {\r\n return themeConfig[`${data.theme}`].textColor\r\n })\r\n // 边框色\r\n const borderColor = computed(() => {\r\n return themeConfig[`${data.theme}`].borderColor\r\n })\r\n // 滚动条样式\r\n const scrollbarColor = computed(() => {\r\n return themeConfig[`${data.theme}`].scrollbarColor\r\n })\r\n\r\n onMounted(() => {\r\n setTheme()\r\n })\r\n\r\n // 重置配置项\r\n const resetClick = () => {\r\n localStorage.removeItem('granimConfig')\r\n bgRef.value.init()\r\n }\r\n\r\n return {\r\n scrollbarColor,\r\n textColor,\r\n opacity0,\r\n activeColor,\r\n borderColor,\r\n bgColor,\r\n resetClick,\r\n bgRef,\r\n fresh,\r\n deleteClick,\r\n ...toRefs(data),\r\n selectType,\r\n navigate,\r\n add,\r\n closeViews,\r\n closeLoginViews,\r\n search,\r\n importBookmark,\r\n exportBookmark,\r\n loginClick,\r\n setUsername,\r\n configClick,\r\n closeConfigViews\r\n }\r\n },\r\n methods: {\r\n beforeEnter(el) {\r\n el.style.opacity = 0\r\n el.style.height = 0\r\n },\r\n enter(el, done) {\r\n gsap.to(el, {\r\n opacity: 1,\r\n height: '1.6em',\r\n delay: el.dataset.index * 0.15,\r\n onComplete: done\r\n })\r\n },\r\n leave(el, done) {\r\n gsap.to(el, {\r\n opacity: 0,\r\n height: 0,\r\n delay: el.dataset.index * 0.15,\r\n onComplete: done\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n#app {\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100vh;\r\n width: 100vw;\r\n overflow: hidden;\r\n}\r\n\r\n.bookmark {\r\n position: relative;\r\n margin-top: 8vh;\r\n width: 1200px;\r\n height: calc(75vh);\r\n border: 1px solid rgba(255, 255, 255, 0.18);\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n border-radius: 6px;\r\n background: v-bind(bgColor);\r\n opacity: v-bind(opacity0);\r\n .left-box {\r\n width: 200px;\r\n height: 100%;\r\n border: 1px solid rgba(255, 255, 255, 0.18);\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n position: relative;\r\n // overflow-y: auto;\r\n padding: 8px 0;\r\n img {\r\n width: 20px;\r\n height: auto;\r\n margin-right: 5px;\r\n cursor: pointer;\r\n }\r\n .active {\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n background: v-bind(activeColor);\r\n }\r\n .inactive {\r\n box-shadow: none;\r\n background: v-bind(bgColor);\r\n }\r\n .label {\r\n font-size: 14px;\r\n display: flex;\r\n cursor: pointer;\r\n border: none;\r\n position: relative;\r\n padding: 10px 15px;\r\n &:hover {\r\n box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);\r\n background: v-bind(activeColor);\r\n }\r\n .text-elipss {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n .right-box {\r\n width: calc(100% - 200px);\r\n .card-s {\r\n width: 100%;\r\n padding-top: 10px;\r\n max-height: calc(80vh - 49px);\r\n // height:calc(100% - 48px);\r\n display: flex;\r\n flex-wrap: wrap;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n .card-item {\r\n cursor: pointer;\r\n width: calc(33% - 40px);\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n border: 1px solid rgba(255, 255, 255, 0.18);\r\n box-shadow: 0 8px 18px 0 rgba(31, 38, 135, 0.2);\r\n padding: 10px;\r\n margin: 7px 20px 7px 20px;\r\n position: relative;\r\n border-radius: 8px;\r\n max-height: 200px;\r\n height: 72px !important;\r\n &:hover {\r\n transform: scale(1.04);\r\n animation-delay: 0.3ms;\r\n animation: 0.3ms;\r\n box-shadow: 0 8px 18px 0 rgba(31, 38, 135, 0.3);\r\n background: v-bind(activeColor);\r\n }\r\n &:hover .logo-box-tools {\r\n opacity: 0.85;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n.tool-icon {\r\n width: 20px;\r\n height: 20px;\r\n object-fit: contain;\r\n display: inline-block;\r\n margin-right: 12px;\r\n cursor: pointer;\r\n &:hover {\r\n fill: '#3eaf7c';\r\n }\r\n}\r\n.tool-bar {\r\n height: 48px;\r\n border-bottom: 1px solid v-bind(borderColor);\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n background: v-bind(bgColor);\r\n .tool-logo {\r\n margin: 0 15px;\r\n a {\r\n color: #e03b5d;\r\n display: flex;\r\n align-items: center;\r\n }\r\n }\r\n .search-box {\r\n display: inline-block;\r\n position: relative;\r\n margin-right: 1rem;\r\n white-space: nowrap;\r\n img {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 0;\r\n left: 0.6rem;\r\n margin: auto;\r\n width: 20px;\r\n height: auto;\r\n }\r\n input {\r\n text-align: initial;\r\n text-indent: initial;\r\n text-shadow: initial;\r\n text-transform: initial;\r\n word-spacing: initial;\r\n letter-spacing: initial;\r\n cursor: text;\r\n width: 14rem;\r\n height: 2rem;\r\n color: #4e6e8e;\r\n display: inline-block;\r\n border: 1px solid v-bind(borderColor);\r\n border-radius: 0.25rem;\r\n font-size: 0.9rem;\r\n line-height: 2rem;\r\n padding: 0 0.5rem 0 2rem;\r\n outline: none;\r\n transition: all 0.2s ease;\r\n background: transparent;\r\n background-size: auto;\r\n background-size: 1rem;\r\n }\r\n }\r\n}\r\n\r\n::-webkit-scrollbar-thumb {\r\n background-color: v-bind(scrollbarColor);\r\n background-clip: padding-box;\r\n min-height: 28px;\r\n border-radius: 10px;\r\n}\r\n\r\n.box-m {\r\n display: flex;\r\n height: calc(100% - 50px);\r\n}\r\n.logo-img {\r\n width: 62px;\r\n height: 100%;\r\n margin-right: 10px;\r\n filter: drop-shadow(0px 0px 1px #888);\r\n img {\r\n height: 100%;\r\n width: 100%;\r\n object-fit: contain;\r\n display: block;\r\n max-width: 70px;\r\n width: 62px;\r\n }\r\n}\r\n.logo-box {\r\n position: relative;\r\n flex: 1;\r\n .title {\r\n width: 100%;\r\n max-width: 145px;\r\n display: block;\r\n padding-top: 3px;\r\n font-size: 16px;\r\n font-weight: bold;\r\n color: v-bind(textColor);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n display: block;\r\n }\r\n .subtitle {\r\n width: 100%;\r\n position: relative;\r\n max-width: 185px;\r\n margin-top: 5px;\r\n font-size: 13px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n color: v-bind(textColor);\r\n opacity: 0.8;\r\n display: block;\r\n }\r\n}\r\n.list-complete-item {\r\n transition: all 0.8s ease;\r\n display: inline-block;\r\n margin-right: 10px;\r\n}\r\n\r\n.list-complete-enter-from,\r\n.list-complete-leave-to {\r\n opacity: 0;\r\n transform: translateY(30px);\r\n}\r\n\r\n.list-complete-leave-active {\r\n position: absolute;\r\n}\r\n.card-item-nodata {\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n span {\r\n display: block;\r\n margin-top: 20px;\r\n color: #999;\r\n }\r\n}\r\n\r\n.logo-box-tools {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n opacity: 0;\r\n transition: 0.4s opacity;\r\n i {\r\n padding: 4px;\r\n display: inline-block;\r\n &:hover {\r\n color: #e03b5d;\r\n background: #ff00001f;\r\n border-radius: 5px;\r\n }\r\n }\r\n}\r\n\r\n.import-tool {\r\n position: absolute;\r\n width: 100%;\r\n background: v-bind(bgColor);\r\n height: 36px;\r\n padding: 3px 10px;\r\n display: flex;\r\n align-items: center;\r\n bottom: 0;\r\n z-index: 99;\r\n border-top: 1px solid v-bind(borderColor);\r\n i {\r\n font-size: 15px;\r\n margin: 1px 2px;\r\n padding: 3px;\r\n cursor: pointer;\r\n color: #e03b5d;\r\n background: #ff00001f;\r\n border-radius: 5px;\r\n opacity: 0.7;\r\n &:hover {\r\n color: #e03b5d;\r\n background: #c804041f;\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n.left-box-item {\r\n height: 100%;\r\n overflow-y: auto;\r\n padding-bottom: 40px;\r\n}\r\n.import-text {\r\n font-size: 12px;\r\n color: #999;\r\n margin-right: 3px;\r\n}\r\n.el-icon-upload2 {\r\n position: relative;\r\n input {\r\n width: 1.46rem;\r\n height: 100%;\r\n z-index: 1;\r\n opacity: 0;\r\n position: absolute;\r\n cursor: pointer;\r\n }\r\n}\r\n.login-status {\r\n display: inline-block;\r\n font-size: 12px;\r\n padding-right: 8px;\r\n color: #999;\r\n cursor: pointer;\r\n}\r\n\r\n.login-s .tool-icon {\r\n margin-right: 5px;\r\n}\r\n.login-s:hover .login-status {\r\n color: #e03b5d;\r\n}\r\n</style>\r\n","export const myData = [{\r\n type: '语言文档和规范',\r\n children: [{\r\n desc: '提供 Web 技术文档,学习 Web 开发的最佳实践',\r\n url: 'https://developer.mozilla.org/zh-CN/docs/Web',\r\n logo: '',\r\n title: 'MDN'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/ecma262',\r\n desc: 'ECMAScript 2018 标准',\r\n url: 'https://ecma262.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/ecma.svg',\r\n title: 'ECMAScript'\r\n },\r\n {\r\n contribute: 'https://github.com/LinFeng1997/markdown-it-docs',\r\n desc: 'Markdown 解析器。完全支持 CommonMark 规范,并且进行语法扩展、提供可编写插件和快速编译',\r\n url: 'https://markdown-it.docschina.org/',\r\n is_docschina: true,\r\n title: 'markdown-it 中文文档',\r\n repository: 'https://github.com/markdown-it/markdown-it'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/GFM-docs',\r\n url: 'https://gfm.docschina.org/zh-hans/',\r\n is_docschina: true,\r\n title: 'GitHub 风格 Markdown 规范',\r\n repository: 'https://github.com/docschina/GFM-docs'\r\n },\r\n {\r\n url: 'https://www.markdownguide.org/basic-syntax/',\r\n title: 'Markdown 基本语法'\r\n },\r\n {\r\n contribute: 'https://github.com/xitu/graphql.github.io',\r\n desc: '一种用于 API 的查询语言',\r\n url: 'http://graphql.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/graphql.svg',\r\n title: 'GraphQL'\r\n },\r\n {\r\n contribute: 'https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md',\r\n desc: 'OpenAPI 规范为 RESTful API 定义了一个与语言无关的标准接口',\r\n url: 'https://swagger.io/docs/specification/about/',\r\n logo: 'https://cdn.docschina.org/home/logo/openapi.png',\r\n title: 'OpenAPI'\r\n },\r\n {\r\n contribute: 'https://github.com/json-schema-org/json-schema-spec',\r\n desc: 'JSON Schema 是一个词汇表,可以验证、注释和操作 JSON 文档',\r\n url: 'http://json-schema.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/json-schema.svg',\r\n title: 'JSON Schema'\r\n },\r\n {\r\n desc: '一门语言,帮助开发者构建可靠和高效软件',\r\n url: 'https://www.rust-lang.org/zh-CN/',\r\n logo: 'https://www.rust-lang.org/static/images/rust-logo-blk.svg',\r\n title: 'Rust'\r\n }],\r\n title: 'standard'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57b2d7881b8',\r\n _updateTime: 1614568539818,\r\n type: '视频音频',\r\n children: [{\r\n desc: '带解析器、能节省流量的 Web 视频播放器',\r\n url: 'https://h5player.bytedance.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/xgplayer.png',\r\n title: 'XGPlayer',\r\n repository: 'https://github.com/bytedance/xgplayer',\r\n team: '今日头条'\r\n },\r\n {\r\n desc: '奇舞团研制的 h5 播放器,它支持 mp4、m3u8、flv 等多种格式',\r\n url: 'http://chimee.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/75team.svg',\r\n title: 'Chimee',\r\n repository: 'https://github.com/Chimeejs/chimee',\r\n team: '360'\r\n },\r\n {\r\n desc: 'HTML5 视频播放器以纯 JavaScript 编写,不含 Flash',\r\n url: 'https://github.com/Bilibili/flv.js',\r\n logo: '',\r\n title: 'flv.js',\r\n team: '哔哩哔哩'\r\n }],\r\n title: 'media'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57508ba180c',\r\n type: '函数式编程',\r\n children: [{\r\n contribute: 'https://github.com/RxJS-CN/RxJS-Docs-CN/',\r\n desc: 'RxJS 是 Reactive Extensions 的 JavaScript 实现,可以通过响应式和函数式编程模型组合异步数据流',\r\n url: 'http://cn.rx.js.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/rxjs.png',\r\n title: 'RxJS'\r\n },\r\n {\r\n desc: '函数式和响应式的 JavaScript 框架',\r\n url: 'http://cyclejs.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/cyclejs.svg',\r\n title: 'Cycle.js'\r\n },\r\n {\r\n desc: '一款实用的 JavaScript 函数式编程库',\r\n url: 'http://ramda.cn/',\r\n logo: 'https://ramdajs.com/ramdaFilled_200x235.png',\r\n title: 'Ramda'\r\n }],\r\n title: 'functional'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56d1789876d',\r\n _updateTime: 1611132890668,\r\n type: 'Vue(Mobile)',\r\n children: [{\r\n desc: '移动端 Vue 组件库',\r\n url: 'https://youzan.github.io/vant/',\r\n logo: 'https://cdn.docschina.org/home/logo/vant.png',\r\n title: 'Vant',\r\n repository: 'https://github.com/youzan/vant',\r\n team: '有赞'\r\n },\r\n {\r\n desc: '基于 Vue 实现的精致移动端组件库',\r\n url: 'https://didi.github.io/cube-ui/',\r\n logo: 'https://cdn.docschina.org/home/logo/cube.png',\r\n title: 'Cube UI',\r\n repository: 'https://github.com/didi/cube-ui',\r\n team: '滴滴'\r\n },\r\n {\r\n desc: '面向金融场景的 Vue 移动端组件库',\r\n url: 'https://didi.github.io/mand-mobile/',\r\n logo: 'https://cdn.docschina.org/home/logo/mand.svg',\r\n title: 'Mand Mobile',\r\n repository: 'https://github.com/didi/mand-mobile',\r\n team: '滴滴'\r\n },\r\n {\r\n desc: '可视化 Mand Mobile 主题编辑器',\r\n url: 'https://mand-mobile.github.io/palette/',\r\n logo: 'https://cdn.docschina.org/home/logo/mand.svg',\r\n title: 'Mand Mobile Palette',\r\n repository: 'https://github.com/mand-mobile/palette',\r\n team: '滴滴'\r\n },\r\n {\r\n desc: '基于 Vue 的移动端跨平台 UI',\r\n url: 'https://weex.apache.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/weex.svg',\r\n title: 'Weex',\r\n repository: 'https://github.com/apache/incubator-weex',\r\n team: '阿里巴巴'\r\n }],\r\n title: 'vue-mobile'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57a3885d353',\r\n _updateTime: 1612263116672,\r\n type: '工具',\r\n children: [{\r\n contribute: 'https://github.com/xmoyking/localForage-cn',\r\n desc: '通过简单类似 localStorage API 的异步数据存储来改进你的 Web 应用程序的离线体验',\r\n url: 'https://localforage.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/lf.png',\r\n title: 'localForage'\r\n },\r\n {\r\n contribute: 'https://github.com/iamkun/dayjs',\r\n desc: '处理时间和日期的 JavaScript 函数库',\r\n url: 'https://day.js.org/zh-CN/',\r\n title: 'Day.js'\r\n },\r\n {\r\n contribute: 'https://github.com/moment/moment',\r\n desc: '处理时间和日期的 JavaScript 函数库',\r\n url: 'https://momentjs.com/docs/',\r\n title: 'Moment.js'\r\n },\r\n {\r\n desc: '一个现代的 JavaScript 工具库',\r\n url: 'http://lodash.think2011.net/',\r\n logo: 'https://cdn.docschina.org/home/logo/lodash.svg',\r\n title: 'Lodash'\r\n },\r\n {\r\n desc: 'jQuery API 速查表',\r\n url: 'http://hemin.cn/jq/',\r\n logo: 'https://cdn.docschina.org/home/logo/jquery.svg',\r\n title: 'jQuery API'\r\n },\r\n {\r\n desc: '高效精简强大的工具库',\r\n url: 'http://www.jquery123.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/jquery.svg',\r\n title: 'jQuery'\r\n },\r\n {\r\n desc: '轻量级的工具库',\r\n url: 'http://zeptojs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/zepto.png',\r\n title: 'Zepto'\r\n }],\r\n title: 'utils'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56a6fb97586',\r\n _updateTime: 1618062117484,\r\n type: 'React',\r\n children: [{\r\n contribute: 'https://github.com/docschina/create-react-app',\r\n desc: 'React 官方维护的创建 React 单页面应用的工具',\r\n url: 'https://cra.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/react.svg',\r\n title: 'Create React App'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/preact-www',\r\n desc: 'React 的 3kb 轻量化方案,拥有同样的 ES6 API',\r\n url: 'https://preactjs.com/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/preact.png',\r\n title: 'Preact'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/react-router.cn',\r\n desc: 'React 官方维护的路由库',\r\n url: 'https://react-router.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/react-router.svg',\r\n title: 'React-Router'\r\n },\r\n {\r\n contribute: 'https://github.com/dvajs/dva',\r\n desc: '基于 React 和 redux具有 elm 风格的轻量级框架。',\r\n url: 'https://dvajs.com/',\r\n logo: '',\r\n title: 'dva'\r\n },\r\n {\r\n desc: 'Element UI 的 React 实现',\r\n url: 'https://elemefe.github.io/element-react/',\r\n logo: 'https://cdn.docschina.org/home/logo/element.svg',\r\n title: 'Element React',\r\n repository: 'https://github.com/eleme/element-react',\r\n team: '饿了么'\r\n },\r\n {\r\n desc: 'PC 端 WebUI 规范的 React 实现,提供了一整套基础的 UI 组件以及一些常用的业务组件',\r\n url: 'https://youzan.github.io/zent/zh/guides/install',\r\n logo: 'https://cdn.docschina.org/home/logo/zent.png',\r\n title: 'Zent',\r\n repository: 'https://github.com/youzan/zent',\r\n team: '有赞'\r\n },\r\n {\r\n desc: 'Nerv 是一款基于虚拟 DOM 技术的 JavaScriptTypeScript它提供了与 React 16 一致的使用方式与 API并且拥有更高的性能表现、更小的包大小以及更好的浏览器兼容性',\r\n url: 'https://nerv.aotu.io/',\r\n logo: 'https://camo.githubusercontent.com/3e1b76e514b895760055987f164ce6c95935a3aa/687474703a2f2f73746f726167652e333630627579696d672e636f6d2f6d74642f686f6d652f6c6f676f2d3278313531333833373932363730372e706e67',\r\n title: 'Nerv',\r\n repository: 'https://github.com/NervJS/nerv',\r\n team: '京东'\r\n },\r\n {\r\n desc: '基于 React 的移动端跨平台 UI',\r\n url: 'https://reactnative.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/react.svg',\r\n title: 'React Native',\r\n repository: 'https://github.com/reactnativecn/react-native.cn'\r\n },\r\n {\r\n desc: 'React Native 应用程序的路由和导航',\r\n url: 'https://reactnavigation.org/docs/getting-started',\r\n logo: 'https://reactnavigation.org/img/spiro.svg',\r\n title: 'React Navigation',\r\n repository: 'https://github.com/react-navigation'\r\n }],\r\n title: 'react'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56873ba5666',\r\n _updateTime: 1618062691090,\r\n type: 'web 框架',\r\n children: [{\r\n contribute: 'https://github.com/reactjs/zh-hans.reactjs.org',\r\n desc: '构建用户界面的 JavaScript 库',\r\n url: 'https://react.docschina.org',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/react.svg',\r\n title: 'React'\r\n },\r\n {\r\n contribute: 'https://github.com/vuejs/cn.vuejs.org',\r\n desc: '渐进式 JavaScript 框架',\r\n url: 'https://cn.vuejs.org/v2/guide/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue 2'\r\n },\r\n {\r\n contribute: 'https://github.com/vuejs/vue-next',\r\n desc: '渐进式 JavaScript 框架',\r\n url: 'https://v3.cn.vuejs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue 3'\r\n },\r\n {\r\n contribute: 'https://github.com/single-spa/single-spa',\r\n desc: 'JavaScript 框架,将多个微前端组合成一个应用程序',\r\n url: 'https://single-spa.js.org/',\r\n logo: 'https://single-spa.js.org/img/logo-white-bgblue.svg',\r\n title: 'single-spa'\r\n },\r\n {\r\n contribute: 'https://github.com/angular/angular',\r\n desc: '应用程序设计框架和开发平台,用于创建高效且复杂的单页应用程序',\r\n url: 'https://angular.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/angular.svg',\r\n title: 'Angular'\r\n },\r\n {\r\n contribute: 'https://github.com/sveltejs/svelte',\r\n desc: '将声明性组件转换为精准高效更新 DOM 的 JavaScript 代码。',\r\n url: 'https://svelte.dev/',\r\n logo: 'https://svelte.dev/svelte-logo-horizontal.svg',\r\n title: 'Svelte'\r\n }],\r\n title: 'web-framework'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5725620766a',\r\n type: '代码风格检查',\r\n children: [{\r\n desc: '可组装的、用于 JavaScript 和 JSX 的代码检查工具',\r\n url: 'https://cn.eslint.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/eslint.svg',\r\n title: 'ESLint'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/stylelint',\r\n desc: '强大的现代 CSS 检测工具,帮助样式表遵循一致的约定和避免错误',\r\n url: 'https://stylelint.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/stylelint.svg',\r\n title: 'StyleLint'\r\n },\r\n {\r\n desc: 'JavaScript 风格指南、检查工具和格式化工具',\r\n url: 'https://standardjs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/standardjs.svg',\r\n title: 'Standard JS'\r\n },\r\n {\r\n desc: 'Vue 代码的风格指南',\r\n url: 'https://vue.docschina.org/v2/style-guide/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue 风格指南'\r\n }],\r\n title: 'codestyle'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56f23ffeb15',\r\n _updateTime: 1618761523555,\r\n type: 'Node.js & Deno',\r\n children: [{\r\n contribute: 'https://github.com/nodejscn/node-api-cn',\r\n desc: '基于 V8 引擎的 JavaScript 运行环境',\r\n url: 'http://nodejs.cn/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/node.svg',\r\n title: 'Node.js'\r\n },\r\n {\r\n contribute: 'https://deno.js.cn/',\r\n desc: 'Deno 是一个 JavaScript/TypeScript 的运行时',\r\n url: 'https://manual.deno.js.cn/',\r\n logo: 'https://deno.land/logo.svg',\r\n title: 'Deno'\r\n },\r\n {\r\n contribute: 'https://github.com/demopark/koa-docs-Zh-CN',\r\n desc: '新一代的 Web 后台框架',\r\n url: 'https://koajs.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/koa.svg',\r\n title: 'Koa'\r\n },\r\n {\r\n desc: '为企业级框架和 Node.js & Koa 应用程序而生',\r\n url: 'https://eggjs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/egg.png',\r\n title: 'egg',\r\n repository: 'https://github.com/eggjs/egg',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '快速极简的 Web 框架',\r\n url: 'http://expressjs.com/zh-cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/express.png',\r\n title: 'Express',\r\n repository: 'https://github.com/expressjs/express'\r\n },\r\n {\r\n desc: '渐进式 Node.js 框架,构建高效、可靠和可扩展的 server 应用程序',\r\n url: 'https://nestjs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/nest.png',\r\n title: 'nest',\r\n repository: 'https://github.com/nestjs/nest'\r\n },\r\n {\r\n desc: '能够使用完整 ES6/7 特性进行开发的 Node.js 应用程序',\r\n url: 'https://thinkjs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/think.png',\r\n title: 'ThinkJS',\r\n repository: 'https://github.com/thinkjs/thinkjs',\r\n team: '360'\r\n },\r\n {\r\n desc: 'npm 是 JavaScript package 管理工具,在这里可以找到可复用代码,并以强大的全新方式进行聚合',\r\n url: 'https://docs.npmjs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/npm.png',\r\n title: 'npm'\r\n },\r\n {\r\n desc: '淘宝提供的 npmjs.org 镜像',\r\n url: 'https://npm.taobao.org/',\r\n logo: 'https://npm.taobao.org/favicon.png',\r\n title: 'cnpm'\r\n },\r\n {\r\n desc: '快速、可靠和安全的依赖管理',\r\n url: 'https://yarnpkg.com/zh-Hans/',\r\n logo: 'https://cdn.docschina.org/home/logo/yarn.png',\r\n title: 'yarn'\r\n }],\r\n title: 'node'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5741113911d',\r\n _updateTime: 1618213635311,\r\n type: '编程教程',\r\n children: [{\r\n contribute: 'https://github.com/javascript-tutorial/zh.javascript.info',\r\n desc: '以最新的 JavaScript 标准为基准,通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。',\r\n url: 'https://zh.javascript.info/',\r\n is_docschina: false,\r\n logo: 'https://user-images.githubusercontent.com/26959437/67275005-3df25500-f4f4-11e9-9c13-36e442ff40cc.jpg',\r\n title: '现代 JavaScript 教程'\r\n },\r\n {\r\n contribute: 'https://github.com/RxJS-CN/learn-rxjs-operators',\r\n desc: '通过每个操作符的清晰示例及解释来进行 RxJS 的学习',\r\n url: 'https://rxjs-cn.github.io/learn-rxjs-operators/',\r\n is_docschina: true,\r\n logo: '',\r\n title: '学习 RxJS 操作符'\r\n },\r\n {\r\n desc: '从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript',\r\n url: 'https://ts.xcatliu.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/typescript.svg',\r\n title: 'TypeScript 入门教程',\r\n repository: 'https://github.com/xcatliu/typescript-tutorial'\r\n },\r\n {\r\n desc: '基于 Promise 进行异步编程的基本使用方法以及测试的编写方法、应用及反模式等内容的文档',\r\n url: 'http://liubin.org/promises-book/',\r\n logo: '',\r\n title: 'JavaScript Promise 迷你书'\r\n },\r\n {\r\n contribute: 'https://github.com/RxJS-CN/learn-rxjs-operators',\r\n desc: '通过每个操作符的清晰示例及解释来进行 RxJS 的学习',\r\n url: 'https://rxjs-cn.github.io/learn-rxjs-operators/',\r\n is_docschina: true,\r\n logo: '',\r\n title: '学习 RxJS 操作符'\r\n },\r\n {\r\n desc: '这是一本有关 Rust的入门书籍',\r\n url: 'https://doc.rust-lang.org/book/',\r\n logo: 'https://www.rust-lang.org/static/images/rust-logo-blk.svg',\r\n title: 'Rust 编程语言'\r\n }],\r\n title: 'tutorial'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56c79303c20',\r\n _updateTime: 1611204893455,\r\n type: 'Vue(PC)',\r\n children: [{\r\n desc: '基于 Vue 的组件库',\r\n url: 'http://element-cn.eleme.io/',\r\n logo: 'https://cdn.docschina.org/home/logo/element.svg',\r\n title: 'Element UI',\r\n repository: 'https://github.com/ElemeFE/element',\r\n team: '饿了么'\r\n },\r\n {\r\n desc: '基于 Vue 的 Material 组件库',\r\n url: 'https://vuetifyjs.com/zh-Hans/',\r\n logo: 'https://cdn.docschina.org/home/logo/vuetify.svg',\r\n title: 'Vuetify',\r\n repository: 'https://github.com/vuetifyjs/vuetify'\r\n },\r\n {\r\n desc: '基于 Vue 的组件库',\r\n url: 'https://www.iviewui.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/iview.png',\r\n title: 'View UI',\r\n repository: 'https://github.com/iview/iview',\r\n team: 'TalkingData'\r\n },\r\n {\r\n desc: 'Vue 官方 UI 组件',\r\n url: 'https://vuejs.github.io/ui/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue UI Framework',\r\n repository: 'https://github.com/vuejs/ui'\r\n },\r\n {\r\n desc: '一个基于 Vue 的高质量 UI 组件库',\r\n url: 'https://www.heyui.top/',\r\n logo: 'https://camo.githubusercontent.com/1424cb86c2634f96fe82db55f01f07c3c29e53a1/68747470733a2f2f7777772e68657975692e746f702f7374617469632f696d616765732f6c6f676f2e706e67',\r\n title: 'HeyUI',\r\n repository: 'https://github.com/heyui/heyui'\r\n },\r\n {\r\n desc: '灵活易用的 JavaScript 组件框架,兼容到 IE6',\r\n url: 'https://baidu.github.io/san/',\r\n logo: 'https://cdn.docschina.org/home/logo/san.svg',\r\n title: 'San',\r\n repository: 'https://github.com/baidu/san',\r\n team: '百度'\r\n },\r\n {\r\n desc: 'vue-loader 可以将 Vue 单文件组件转换为 JavaScript 模块的 webpack loader',\r\n url: 'https://vue-loader.vuejs.org/zh/',\r\n logo: '',\r\n title: 'vue-loader',\r\n repository: 'https://github.com/vuejs/vue-loader'\r\n },\r\n {\r\n contribute: 'https://github.com/vuejs/vuepress',\r\n desc: '由 Vue 提供支持的静态站点生成器',\r\n url: 'https://vuepress.vuejs.org/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/vuepress.svg',\r\n title: 'VuePress'\r\n },\r\n {\r\n desc: 'vue-router 是 Vue 官方提供的 router',\r\n url: 'https://router.vuejs.org/zh/',\r\n logo: '',\r\n title: 'vue-router',\r\n repository: 'https://github.com/vuejs/vue-router'\r\n },\r\n {\r\n desc: 'vue-rx 帮助用户在 Vue 应用程序中实现简单的 RxJS 绑定',\r\n url: 'https://github.com/vuejs/vue-rx/blob/master/README-CN.md',\r\n logo: '',\r\n title: 'vue-rx',\r\n repository: 'https://github.com/vuejs/vue-rx'\r\n },\r\n {\r\n desc: 'vue-cli 帮助用户快速开发 Vue 的脚手架(scaffold)',\r\n url: 'https://cli.vuejs.org/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'vue-cli',\r\n repository: 'https://github.com/vuejs/vue-cli'\r\n },\r\n {\r\n desc: 'Vue 官方提供的服务器端渲染(SSR)指南',\r\n url: 'https://ssr.vuejs.org/zh/',\r\n logo: '',\r\n title: 'vue-ssr',\r\n repository: 'https://github.com/vuejs/vue-ssr-docs'\r\n },\r\n {\r\n desc: 'Vue.js 元框架,用于快速创建复杂、高性能的通用 Web 应用程序',\r\n url: 'https://zh.nuxtjs.org/',\r\n logo: 'https://zh.nuxtjs.org/logos/nuxt-icon.png',\r\n title: 'Nuxt.js',\r\n repository: 'https://github.com/nuxt/nuxt.js'\r\n }],\r\n title: 'vue-pc'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57622981fde',\r\n type: '测试工具',\r\n children: [{\r\n desc: 'Vue Test Utils 是 Vue.js 官方的单元测试实用工具库',\r\n url: 'https://vue-test-utils.vuejs.org/zh/',\r\n logo: '',\r\n title: 'Vue Test Utils',\r\n repository: 'https://github.com/vuejs/vue-test-utils'\r\n },\r\n {\r\n desc: 'Facebook 开发的零配置测试平台,让代码库更加稳定和健壮',\r\n url: 'https://jest.docschina.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/jest.png',\r\n title: 'Jest',\r\n repository: 'https://github.com/facebook/jest'\r\n },\r\n {\r\n desc: '未来的测试运行器',\r\n url: 'https://github.com/avajs/ava',\r\n logo: 'https://cdn.docschina.org/home/logo/ava.png',\r\n title: 'ava'\r\n },\r\n {\r\n desc: 'Karma 的主要目标是,让测试驱动开发(TDD)变得简单、快速和有趣。',\r\n url: 'https://karma-runner.github.io/2.0/index.html',\r\n logo: 'https://cdn.docschina.org/home/logo/karma.png',\r\n title: 'Karma',\r\n repository: 'https://github.com/karma-runner/karma'\r\n },\r\n {\r\n desc: 'Mocha 是运行在 Node.js 和浏览器上的功能丰富的 JavaScript 测试框架使异步测试变得简单而有趣。Mocha 串行运行测试,提供灵活精准的报告,同时将未捕获的异常映射到正确的测试用例。',\r\n url: 'https://mochajs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/mocha.svg',\r\n title: 'Mocha',\r\n repository: 'https://github.com/mochajs/mocha'\r\n },\r\n {\r\n desc: 'Jasmine 是一个用于测试 JavaScript 代码的行为驱动开发(BDD)框架',\r\n url: 'https://jasmine.github.io/',\r\n logo: 'https://cdn.docschina.org/home/logo/jasmine.png',\r\n title: 'Jasmine',\r\n repository: 'https://github.com/jasmine/jasmine'\r\n },\r\n {\r\n desc: 'Puppeteer 可以通过 DevTools 协议控制 headless Chrome 或 Chromium',\r\n url: 'https://pptr.dev/',\r\n logo: 'https://cdn.docschina.org/home/logo/puppeteer.png',\r\n title: 'Puppeteer',\r\n repository: 'https://github.com/GoogleChrome/puppeteer'\r\n },\r\n {\r\n desc: '用于对 JavaScript 隔离测试 spy, stub 和 mock。适用于任何单元测试框架',\r\n url: 'http://sinonjs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/sinon.png',\r\n title: 'Sinon.JS',\r\n repository: 'https://github.com/sinonjs/sinon'\r\n },\r\n {\r\n desc: 'Chai 是一个用于 Node.js 和浏览器的 BDD/TDD 断言库,可以与任何 JavaScript 测试框架便捷配对',\r\n url: 'http://chaijs.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/chai.png',\r\n title: 'Chai',\r\n repository: 'https://github.com/chaijs/chai'\r\n },\r\n {\r\n desc: 'expect 帮助你编写更好的断言',\r\n url: 'https://github.com/mjackson/expect',\r\n logo: '',\r\n title: 'expect'\r\n },\r\n {\r\n desc: '一个富于表现力、可读性强、与框架无关,用于 Node.js 的 BDD 风格断言库',\r\n url: 'https://shouldjs.github.io/',\r\n logo: '',\r\n title: 'Should.js',\r\n repository: 'https://github.com/shouldjs/should.js'\r\n },\r\n {\r\n desc: '生成随机数据,拦截 Ajax 请求',\r\n url: 'http://mockjs.com/',\r\n logo: '',\r\n title: 'Mock.js',\r\n repository: 'https://github.com/nuysoft/Mock'\r\n }],\r\n title: 'test'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5770943917c',\r\n _updateTime: 1613989291342,\r\n type: '编译构建',\r\n children: [{\r\n contribute: 'https://github.com/docschina/webpack.js.org',\r\n desc: '用于现代 JavaScript 应用程序的静态模块打包工具',\r\n url: 'https://webpack.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/webpack-offical.svg',\r\n title: 'webpack'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/babeljs.io',\r\n desc: '一个编译工具,让你可以项目中直接使用下一代 JavaScript',\r\n url: 'https://babel.docschina.org/',\r\n homeBackup: 'https://babeljs.cn/',\r\n imgStyle: { objectFit: 'contain' },\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/babel.png',\r\n title: 'Babel'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/parceljs.io',\r\n desc: '零配置打包工具',\r\n url: 'https://parceljs.docschina.org/',\r\n homeBackup: 'https://www.parceljs.io/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/parcel.png',\r\n title: 'Parcel'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/rollupjs.org',\r\n desc: '新一代 JavaScript 模块打包器',\r\n url: 'https://rollup.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/rollup.svg',\r\n title: 'Rollup'\r\n },\r\n {\r\n contribute: 'https://github.com/vitejs/docs-cn',\r\n desc: '下一代前端开发与构建工具',\r\n url: 'https://cn.vitejs.dev/',\r\n logo: 'https://vitejs.dev/logo.svg',\r\n title: 'Vite'\r\n },\r\n {\r\n desc: 'JavaScript 超集',\r\n url: 'https://zhongsp.gitbooks.io/typescript-handbook/',\r\n logo: 'https://cdn.docschina.org/home/logo/typescript.svg',\r\n title: 'TypeScript',\r\n repository: 'https://github.com/zhongsp/TypeScript'\r\n },\r\n {\r\n desc: '基于流的自动化构建工具',\r\n url: 'http://www.gulpjs.com.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/gulp.svg',\r\n title: 'Gulp'\r\n },\r\n {\r\n desc: 'JavaScript 世界的构建工具',\r\n url: 'https://grunt.docschina.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/grunt.svg',\r\n title: 'Grunt'\r\n },\r\n {\r\n desc: '用于管理有多个包的 JavaScript 项目的工具',\r\n url: 'https://lerna.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/lerna.svg',\r\n title: 'Lerna',\r\n repository: 'https://github.com/lerna/lerna'\r\n }],\r\n title: 'build'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5781a2d68bb',\r\n type: '模板引擎',\r\n children: [{\r\n desc: 'JavaScript 模板引擎',\r\n url: 'http://ejs.co/',\r\n logo: '',\r\n title: 'EJS'\r\n },\r\n {\r\n desc: 'JavaScript 模板引擎',\r\n url: 'https://pugjs.org/',\r\n logo: '',\r\n title: 'Pug'\r\n },\r\n {\r\n desc: 'JavaScript 模板引擎',\r\n url: 'https://handlebarsjs.com/',\r\n logo: '',\r\n title: 'Handlebars.js'\r\n }],\r\n title: 'template'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5733b66fd34',\r\n _updateTime: 1618063291445,\r\n type: '状态管理',\r\n children: [{\r\n contribute: 'https://github.com/SangKa/mobx-docs-cn',\r\n desc: '简单、可扩展的状态管理',\r\n url: 'https://cn.mobx.js.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/mobx.png',\r\n title: 'Mobx'\r\n },\r\n {\r\n contribute: 'https://www.github.com/reduxjs/react-redux',\r\n desc: 'React 官方版本 Redux',\r\n url: 'https://react-redux.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/redux.svg',\r\n title: 'React Redux'\r\n },\r\n {\r\n contribute: 'https://github.com/camsong/redux-in-chinese',\r\n desc: 'JavaScript 状态容器,提供可预测化的状态管理',\r\n url: 'https://cn.redux.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/redux.svg',\r\n title: 'Redux'\r\n },\r\n {\r\n contribute: 'https://github.com/rematch/rematch',\r\n desc: 'Rematch 是没有 boilerplate 的 Redux 最佳实践',\r\n url: 'https://rematch.gitbook.io/',\r\n logo: 'https://cdn.docschina.org/home/logo/rematch.png',\r\n title: 'Rematch'\r\n },\r\n {\r\n desc: 'vuex 是 Vue 官方提供的状态管理工具',\r\n url: 'https://vuex.vuejs.org/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vuex',\r\n repository: 'https://github.com/vuejs/vuex'\r\n }],\r\n title: 'data-model'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d57c78a8184a',\r\n _updateTime: 1606363580152,\r\n type: '技术周刊',\r\n children: [{\r\n desc: '关于 JavaScript 的文章、新闻和项目的周刊',\r\n url: 'https://docschina.org/weekly/js/docs/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/docschina-logo.svg',\r\n title: '印记中文周刊 - JavaScript'\r\n },\r\n {\r\n desc: '关于 React 的文章、新闻和项目的周刊',\r\n url: 'https://docschina.org/weekly/react/docs/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/docschina-logo.svg',\r\n title: '印记中文周刊 - React'\r\n },\r\n {\r\n desc: 'Node.js 新闻和文章',\r\n url: 'https://nodeweekly.com/',\r\n logo: '',\r\n title: 'Node Weekly'\r\n },\r\n {\r\n desc: 'CSS 文章、教程、实验、工具等摘要',\r\n url: 'https://css-weekly.com/',\r\n logo: 'https://css-weekly.com/wp-content/themes/cssweekly/img/cssweekly-logo.png',\r\n title: 'CSS Weekly'\r\n },\r\n {\r\n desc: 'Vue 官方提供的最新实时动态资讯',\r\n url: 'https://news.vuejs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'Vue news',\r\n repository: 'https://github.com/vuejs/news.vuejs.org'\r\n }],\r\n title: 'weekly'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5691d88abc2',\r\n type: '小程序框架',\r\n children: [{\r\n contribute: 'https://github.com/remaxjs/remax',\r\n desc: 'Remax 将 React 运行在小程序环境中,让你可以使用完整的 React 进行小程序开发。',\r\n url: 'https://remaxjs.org/',\r\n logo: 'https://gw.alipayobjects.com/mdn/rms_b5fcc5/afts/img/A*1NHAQYduQiQAAAAAAAAAAABkARQnAQ',\r\n title: 'Remax'\r\n },\r\n {\r\n contribute: 'https://github.com/NervJS/taro',\r\n desc: 'Taro 是一套遵循 React 语法规范的 多端开发 解决方案。',\r\n url: 'https://taro.jd.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/taro.png',\r\n title: 'Taro'\r\n },\r\n {\r\n contribute: 'https://github.com/wechat-miniprogram/kbone',\r\n desc: 'kbone 用于支持一个项目可以同时在 Web 端和小程序端被使用',\r\n url: 'https://developers.weixin.qq.com/miniprogram/dev/extended/kbone/',\r\n logo: '',\r\n title: 'kbone'\r\n },\r\n {\r\n contribute: 'https://github.com/Tencent/omi',\r\n desc: 'Omi 可以开发桌面 Web、移动 H5同时支持开发小程序',\r\n url: 'http://omijs.org',\r\n logo: 'https://camo.githubusercontent.com/5a3ce051411cca4d8abd0e0abff879bb5a871520/68747470733a2f2f74656e63656e742e6769746875622e696f2f6f6d692f6173736574732f6f6d692d6c6f676f323031392e737667',\r\n title: 'omi/omip'\r\n },\r\n {\r\n contribute: 'https://github.com/Tencent/wepy',\r\n desc: 'WePY 是一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序',\r\n url: 'https://developers.weixin.qq.com/miniprogram/dev/extended/kbone/',\r\n logo: 'https://opensource.tencent.com/img/wepy.png',\r\n title: 'wepy'\r\n },\r\n {\r\n contribute: 'https://github.com/RubyLouvre/nanachi',\r\n desc: '基于 React 的多端小程序转译框架,完美兼容 React 生命周期',\r\n url: 'https://rubylouvre.github.io/nanachi/',\r\n logo: 'https://cdn.docschina.org/home/logo/nanachi.png',\r\n title: 'nanachi'\r\n },\r\n {\r\n contribute: 'https://github.com/Meituan-Dianping/mpvue',\r\n desc: '框架基于 Vue.js 核心mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。',\r\n url: 'http://mpvue.com',\r\n logo: 'https://cdn.docschina.org/home/logo/mpvue.png',\r\n title: 'mpvue'\r\n },\r\n {\r\n contribute: 'https://github.com/wxajs/wxa',\r\n desc: 'wxa 是一个 AOP 框架,主要使用 Decorator运行时改写拦截和预编译实现框架功能。',\r\n url: 'https://wxajs.github.io/wxa/',\r\n logo: 'https://github.com/wxajs/wxa/raw/dev/wxa-logo.png',\r\n title: 'wxa'\r\n },\r\n {\r\n contribute: 'https://github.com/didi/mpx',\r\n desc: 'Mpx 是一款致力于提高小程序开发体验的增强型小程序框架,通过 Mpx我们能够以最先进的 web 开发体验来开发生产性能深度优化的小程序。',\r\n url: 'https://didi.github.io/mpx/',\r\n logo: 'https://cdn.docschina.org/home/logo/mpx-logo.png',\r\n title: 'mpx'\r\n },\r\n {\r\n contribute: 'https://github.com/kaola-fed/megalo',\r\n desc: 'Megalo 是基于 VueVue@2.6.6 的小程序开发框架,让开发者可以用 Vue 的开发方式开发小程序应用。',\r\n url: 'https://megalojs.org/#/',\r\n logo: 'https://megalojs.org/static/megalo.png',\r\n title: 'megalo'\r\n },\r\n {\r\n contribute: 'https://github.com/didi/chameleon',\r\n desc: 'Chameleon/kəˈmiːlɪən/简写CML中文名卡梅龙中文意思变色龙意味着就像变色龙一样能适应不同环境的跨端整体解决方案。',\r\n url: 'https://cml.js.org/',\r\n logo: 'https://camo.githubusercontent.com/9a6e165b9188a8ac4e5173bc382688a418fad711/68747470733a2f2f636d6c2e6a732e6f72672f646f632f6173736574732f3130302a3130302e706e67',\r\n title: 'chameleon'\r\n },\r\n {\r\n contribute: 'https://github.com/dcloudio/uni-app',\r\n desc: '框架基于 Vue.js 核心mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。',\r\n url: 'https://uniapp.dcloud.io/',\r\n logo: 'https://img-cdn-qiniu.dcloud.net.cn/new-page/uni.png',\r\n title: 'uni-app'\r\n }],\r\n title: 'mini-program'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d56e41e13c2b',\r\n _updateTime: 1612264536260,\r\n type: 'Angular',\r\n children: [{\r\n desc: 'Material Design 组件库 for Angular',\r\n url: 'https://material.angular.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/angular.svg',\r\n title: 'Angular Material',\r\n repository: 'https://github.com/ng-docs/components'\r\n },\r\n {\r\n desc: 'Element UI 的 Angular 实现',\r\n url: 'https://element-angular.faas.ele.me/',\r\n logo: 'https://cdn.docschina.org/home/logo/element.svg',\r\n title: 'Element Angular',\r\n repository: 'https://github.com/ElemeFE/element-angular',\r\n team: '饿了么'\r\n },\r\n {\r\n desc: '基于 Angular 的移动端跨平台 UI',\r\n url: 'https://ionicframework.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/ionic.png',\r\n title: 'Ionic',\r\n repository: 'https://github.com/ionic-team/ionic'\r\n }],\r\n title: 'angular'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5706183e0bf',\r\n type: 'CSS',\r\n children: [{\r\n desc: 'Sass 是 CSS 的一个扩展,它使 CSS 的使用起来更加优雅和强大。',\r\n url: 'https://sass-guidelin.es/zh/',\r\n logo: 'https://cdn.docschina.org/home/logo/sass.svg',\r\n title: 'Sass'\r\n },\r\n {\r\n desc: 'Less 是 CSS 预处理语言,使 CSS 更易维护和扩展',\r\n url: 'http://lesscss.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/less.svg',\r\n title: 'Less'\r\n },\r\n {\r\n desc: '富有表现力、动态、健壮的 CSS',\r\n url: 'http://www.zhangxinxu.com/jq/stylus/',\r\n homeBackup: 'http://stylus-lang.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/stylus.svg',\r\n title: 'Stylus'\r\n },\r\n {\r\n contribute: 'https://github.com/docschina/postcss/blob/cn/Translation.md',\r\n desc: '通过 JavaScript 来转换 CSS并且提供强大的插件系统',\r\n url: 'http://postcss.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/postcss.svg',\r\n title: 'PostCSS'\r\n }],\r\n title: 'css'\r\n},\r\n{\r\n _id: 'c497f5885f9e324e0118d5793d4545a7',\r\n type: '可视化工具',\r\n children: [{\r\n contribute: 'https://github.com/docschina/threejs.org',\r\n desc: 'JavaScript 3d 库',\r\n url: 'https://threejs.docschina.org/',\r\n is_docschina: true,\r\n logo: 'https://cdn.docschina.org/home/logo/threejs.png',\r\n title: 'Threejs',\r\n repository: 'https://github.com/mrdoob/three.js'\r\n },\r\n {\r\n desc: '使用 JavaScript 实现的开源可视化库',\r\n url: 'http://echarts.baidu.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/echarts.png',\r\n title: 'ECharts',\r\n repository: 'https://github.com/ecomfe/echarts',\r\n team: '百度'\r\n },\r\n {\r\n desc: '跨平台的轻量级 2D 渲染对象模型',\r\n url: 'http://spritejs.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/spritejs.png',\r\n title: 'SpriteJS',\r\n repository: 'https://github.com/spritejs/spritejs',\r\n team: '360'\r\n },\r\n {\r\n desc: '基于全新一代数据可视化解决方案 AntV',\r\n url: 'https://antv.alipay.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'AntV 可视化解决方案',\r\n repository: 'https://github.com/ecomfe/echarts',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性',\r\n url: 'https://antv.alipay.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'G2 可视化图形语法',\r\n repository: 'https://github.com/antvis/g2/',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: 'G6 是解决流程图和关系分析的图表库',\r\n url: 'https://antv.alipay.com/zh-cn/g6/1.x/index.html',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'G6 关系图类库',\r\n repository: 'https://github.com/antvis/g6/',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '面向移动端的一套基于可视化图形语法的图表库,具有精简、高性能、易扩展的特性',\r\n url: 'https://antv.alipay.com/zh-cn/f2/3.x/index.html',\r\n logo: 'https://cdn.docschina.org/home/logo/antv.svg',\r\n title: 'F2 移动端图表库',\r\n repository: 'https://github.com/antvis/f2/',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '一个遵循 Web 标准,用于可视化数据的 JavaScript 库',\r\n url: 'https://d3js.org.cn/',\r\n logo: 'https://cdn.docschina.org/home/logo/d3.svg',\r\n title: 'D3.js',\r\n repository: 'https://github.com/xswei/d3js_doc'\r\n },\r\n {\r\n desc: '基于 Vue 和 ECharts 封装的图表组件',\r\n url: 'https://v-charts.js.org/',\r\n logo: 'https://cdn.docschina.org/home/logo/vue.svg',\r\n title: 'v-charts',\r\n repository: 'https://github.com/elemefe/v-charts',\r\n team: '饿了么'\r\n }],\r\n title: 'visualization'\r\n},\r\n{\r\n _createTime: 1611133617441,\r\n _id: '1526e12a6007f2b1002d9ab04359d927',\r\n _updateTime: 1616657640052,\r\n type: 'UmiJS 框架',\r\n children: [{\r\n desc: '可插拔的企业级 React 应用框架',\r\n url: 'https://umijs.org/',\r\n logo: '',\r\n title: 'UmiJS',\r\n repository: 'https://github.com/umijs/umi',\r\n team: '蚂蚁金服'\r\n },\r\n {\r\n desc: '基于 Umi 的场景化框架',\r\n url: 'https://alitajs.com/',\r\n logo: '',\r\n title: 'alita',\r\n repository: 'https://github.com/alitajs/alita'\r\n },\r\n {\r\n desc: '为微前端提供快速、简单和完整的解决方案',\r\n url: 'https://qiankun.umijs.org/',\r\n logo: '',\r\n title: 'qiankun',\r\n repository: 'https://github.com/umijs/qiankun',\r\n team: '蚂蚁金服'\r\n },\r\n {\r\n desc: 'React 组件文档生成工具',\r\n url: 'https://d.umijs.org/',\r\n logo: '',\r\n title: 'dumi',\r\n repository: 'https://github.com/umijs/dumi',\r\n team: '蚂蚁金服'\r\n },\r\n {\r\n desc: '零基础 UmiJS 入门教程',\r\n url: 'https://www.yuque.com/umijs/umi',\r\n logo: '',\r\n title: 'Umi 入门',\r\n repository: 'https://github.com/umijs/umi-course',\r\n team: '蚂蚁金服'\r\n }],\r\n title: 'umi'\r\n},\r\n{\r\n _createTime: 1611195580301,\r\n _id: '79550af26008e4bc004838e050c2c0c1',\r\n _updateTime: 1611205328048,\r\n type: 'ant design 系列',\r\n children: [{\r\n desc: '企业级的 UI 设计语言和 React 实现',\r\n url: 'https://ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design',\r\n repository: 'https://github.com/ant-design/ant-design'\r\n },\r\n {\r\n desc: '开箱即用的中台前端/设计解决方案',\r\n url: 'https://pro.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design Pro',\r\n repository: 'https://github.com/ant-design/ant-design-pro',\r\n team: '阿里巴巴'\r\n },\r\n {\r\n desc: '一个基于 Preact / React / React Native 的 UI 组件库',\r\n url: 'https://mobile.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design Mobile',\r\n repository: 'https://github.com/ant-design/ant-design-mobile'\r\n },\r\n {\r\n desc: 'Ant Design 的 Vue 实现',\r\n url: 'https://antdv.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant Design Vue',\r\n repository: 'https://github.com/vueComponent/ant-design-vue'\r\n },\r\n {\r\n desc: '开箱即用的中台前端/设计解决方案',\r\n url: 'https://pro.antdv.com/',\r\n logo: 'https://pro.antdv.com/logo.png',\r\n title: 'Ant Design Pro Vue',\r\n repository: 'https://github.com/vueComponent/ant-design-vue-pro'\r\n },\r\n {\r\n desc: 'Ant Design 的 Angular 实现',\r\n url: 'https://ng.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/NG-ZORRO.svg',\r\n title: 'NG-ZORRO',\r\n repository: 'https://github.com/NG-ZORRO/ng-zorro-antd'\r\n },\r\n {\r\n desc: 'Ant Design Mobile 的 Angular 实现',\r\n url: 'http://ng.mobile.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/NG-ZORRO.svg',\r\n title: 'NG-ZORRO-MOBILE',\r\n repository: 'https://github.com/NG-ZORRO/ng-zorro-antd-mobile'\r\n },\r\n {\r\n desc: '基于 ng-zorro-antd 的中台前端解决方案',\r\n url: 'http://ng-alain.com/',\r\n logo: 'https://cdn.docschina.org/home/logo/ng-alain.svg',\r\n title: 'ng-alain',\r\n repository: 'https://github.com/cipchk/ng-alain/'\r\n },\r\n {\r\n contribute: 'https://github.com/ant-design/ant-ux',\r\n desc: '用于 OG, Sketch,Axure,Affinity,Adobe XD 等 UX 的 sitemap 模板',\r\n url: 'https://ux.ant.design/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'Ant UX'\r\n },\r\n {\r\n contribute: 'https://github.com/react-component',\r\n desc: 'ant design 内部使用的 React 基础组件',\r\n url: 'http://react-component.github.io/badgeboard/',\r\n logo: 'https://cdn.docschina.org/home/logo/antdesign.svg',\r\n title: 'react-component'\r\n }]\r\n}]\r\n","<template>\r\n <el-dialog custom-class=\"my-dialog\" title=\"新增书签\" :visible=\"isDetailVisible\" width=\"758px\">\r\n <el-form status-icon ref=\"refruleForm\" :rules=\"rules\" :model=\"ruleForm\" label-width=\"100px\" size=\"small\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"书签名称\" prop=\"title\">\r\n <el-input v-model=\"ruleForm.title\" placeholder=\"请输入书签名称\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"书签类别\" prop=\"type\">\r\n <el-select v-model=\"ruleForm.type\" placeholder=\"请选择书签类别\" style=\"width:100%\">\r\n <el-option v-for=\"(item,index) in BOOKMARK\" :value=\"item\" :key=\"index\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"LOGO地址\" prop=\"logo\">\r\n <el-input v-model=\"ruleForm.logo\" placeholder=\"请输入LOGO地址\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"访问地址\" prop=\"url\">\r\n <el-input v-model=\"ruleForm.url\" placeholder=\"请输入访问绝对地址\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"书签描述\" prop=\"desc\">\r\n <el-input type=\"textarea\" clearable placeholder=\"请输入书签描述\" v-model=\"ruleForm.desc\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button @click=\"closeViews\" size=\"small\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"submitForm\" size=\"small\">确 定</el-button>\r\n </span>\r\n </template>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport { reactive, ref, toRefs, nextTick, watch } from 'vue'\r\nimport { ElMessage } from 'element-plus'\r\nexport default {\r\n model: {\r\n value: 'isDetailVisible',\r\n events: 'closeViews'\r\n },\r\n props: {\r\n isDetailVisible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n selectType: {\r\n type: Number,\r\n default: 0\r\n },\r\n detail: {\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup(props, context) {\r\n const isBOOKMARK = JSON.parse(localStorage.getItem('BOOKMARK'))\r\n const BOOKMARK = isBOOKMARK ? isBOOKMARK.map((v) => v.type) : []\r\n const form = reactive({\r\n ruleForm: {\r\n title: '',\r\n type: '',\r\n desc: '',\r\n url: '',\r\n logo: ''\r\n }\r\n })\r\n // 定义校验规则 表单代码中必须以 :rules 接收\r\n const rules = {\r\n title: [{ required: true, message: '请输入书签名称', trigger: 'blur' }],\r\n type: [{ required: true, message: '请选择书签类别', trigger: 'change' }]\r\n }\r\n const refruleForm = ref(null)\r\n // 确定按钮的格式\r\n const submitForm = () => {\r\n refruleForm.value.validate((valid) => {\r\n if (valid) {\r\n const myData = isBOOKMARK.map((v) => {\r\n const myDetail = { ...props.detail }\r\n const formData = { ...form.ruleForm }\r\n if (props.detail.flag === 'modify') {\r\n // 分类没有变\r\n if (myDetail.type === formData.type && v.type === formData.type) {\r\n const sIndex = v.children.findIndex(\r\n (d) => d.title === myDetail.title\r\n )\r\n if (sIndex > -1) {\r\n v.children[sIndex] = formData\r\n ElMessage.success('编辑成功')\r\n }\r\n } else if (myDetail.type !== formData.type) {\r\n // 更改了分类\r\n // 当前分类删除该数据\r\n if (myDetail.type === v.type) {\r\n const pindex = v.children.findIndex(\r\n (p) => p.title === myDetail.title\r\n )\r\n v.children.splice(pindex, 1)\r\n }\r\n // 新分类添加该分类\r\n if (formData.type === v.type) {\r\n v.children.push(formData)\r\n ElMessage.success('编辑成功')\r\n }\r\n }\r\n } else {\r\n // 新增书签\r\n if (v.type === formData.type) {\r\n v.children.push(formData)\r\n ElMessage.success('新增成功')\r\n }\r\n }\r\n return v\r\n })\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n context.emit('fresh')\r\n closeViews()\r\n }\r\n })\r\n }\r\n // 关闭弹窗\r\n function closeViews() {\r\n refruleForm.value.resetFields()\r\n context.emit('closeViews', false)\r\n }\r\n // 修改书签\r\n watch(\r\n () => props.detail,\r\n (v) => {\r\n if (v) {\r\n nextTick(() => {\r\n form.ruleForm = { ...props.detail }\r\n })\r\n }\r\n },\r\n { deep: true }\r\n )\r\n return {\r\n ...toRefs(form),\r\n closeViews,\r\n submitForm,\r\n refruleForm,\r\n rules,\r\n BOOKMARK\r\n }\r\n }\r\n}\r\n</script>\r\n<style scoped lang=\"scss\">\r\n.my-dialog {\r\n background: red;\r\n}\r\n.my-dialog /deep/.el-dialog__header {\r\n border-bottom: 1px solid #eee !important;\r\n}\r\n.my-dialog /deep/.el-dialog__title {\r\n font-size: 16px;\r\n color: #e03b5d;\r\n}\r\n</style>\r\n","import { render } from \"./Dialog.vue?vue&type=template&id=1232f72c&scoped=true\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js\"\n\nimport \"./Dialog.vue?vue&type=style&index=0&id=1232f72c&scoped=true&lang=scss\"\n\nimport exportComponent from \"Z:\\\\个人博客系统\\\\kestrel-bookmark\\\\node_modules\\\\.pnpm\\\\vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1232f72c\"]])\n\nexport default __exports__","<template>\r\n <div class=\"bg\"></div>\r\n</template>\r\n\r\n<script setup>\r\nimport { onMounted, defineExpose } from 'vue'\r\n// 默认配置\r\nconst defaultConfig = {\r\n direction: 'left-right',\r\n isPausedWhenNotInView: true,\r\n opacity: [1, 1],\r\n states: {\r\n 'default-state': {\r\n gradients: [\r\n [\r\n { color: '#833ab4', pos: 0.2 },\r\n { color: '#fd1d1d', pos: 0.8 },\r\n { color: '#38ef7d', pos: 1 }\r\n ],\r\n [\r\n { color: '#40e0d0', pos: 0 },\r\n { color: '#ff8c00', pos: 0.2 },\r\n { color: '#ff0080', pos: 0.75 }\r\n ]\r\n ]\r\n }\r\n },\r\n image: {\r\n source: 'https://zhanhongzhu.top/bg.jpg',\r\n position: ['center', 'bottom'],\r\n stretchMode: ['stretch', 'stretch-if-bigger'],\r\n blendingMode: 'multiply'\r\n }\r\n}\r\n\r\nlet granimInstance = null\r\nconst init = () => {\r\n let granimConfig = localStorage.getItem('granimConfig')\r\n granimConfig = granimConfig ? JSON.parse(granimConfig) : defaultConfig\r\n delete granimConfig.opacity\r\n // 切换背景光影效果\r\n // eslint-disable-next-line no-undef, no-new\r\n granimInstance = new Granim({\r\n element: '#canvas-complex',\r\n ...granimConfig,\r\n opacity: 1\r\n })\r\n}\r\n\r\ndefineExpose({ init })\r\n\r\nonMounted(() => {\r\n if (granimInstance) {\r\n granimInstance.destroy()\r\n }\r\n init()\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.bg {\r\n position: fixed;\r\n z-index: -999;\r\n position: fixed;\r\n height: 100%;\r\n width: 100%;\r\n background: url(../assets/bg.jpg);\r\n}\r\n</style>\r\n","import script from \"./Bg.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./Bg.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./Bg.vue?vue&type=style&index=0&id=08a9f3f2&scoped=true&lang=scss\"\n\nimport exportComponent from \"Z:\\\\个人博客系统\\\\kestrel-bookmark\\\\node_modules\\\\.pnpm\\\\vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-08a9f3f2\"]])\n\nexport default __exports__","<template>\r\n <el-dialog custom-class=\"my-dialog\" title=\"用户登录\" :visible=\"isLoginVisible\" width=\"400px\">\r\n <el-form status-icon ref=\"refruleForm\" :rules=\"rules\" :model=\"ruleForm\" label-width=\"60px\" size=\"small\">\r\n <el-row>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"邮箱\" prop=\"email\">\r\n <el-input v-model=\"ruleForm.email\" placeholder=\"请输入邮箱\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"密码\" prop=\"password\">\r\n <el-input v-model=\"ruleForm.password\" show-password placeholder=\"请输入密码\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button @click=\"closeViews\" size=\"small\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"submitForm\" size=\"small\">确 定</el-button>\r\n </span>\r\n </template>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport Cookie from 'js-cookie'\r\nimport { reactive, ref, toRefs } from 'vue'\r\nimport { ElMessage } from 'element-plus'\r\nimport Api from '../Api/user.js' // register\r\nexport default {\r\n model: {\r\n value: 'isLoginVisible',\r\n events: 'closeViews'\r\n },\r\n props: {\r\n isLoginVisible: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n setup(props, context) {\r\n const form = reactive({\r\n ruleForm: {\r\n username: '',\r\n password: ''\r\n }\r\n })\r\n // 定义校验规则 表单代码中必须以 :rules 接收\r\n const rules = {\r\n password: [{ required: true, message: '请输入密码', trigger: 'blur' }],\r\n email: [\r\n {\r\n type: 'email',\r\n required: true,\r\n message: '请输入正确的邮箱',\r\n trigger: 'blur'\r\n }\r\n ]\r\n }\r\n const refruleForm = ref(null)\r\n // 确定按钮的格式\r\n const submitForm = () => {\r\n refruleForm.value.validate((valid) => {\r\n if (valid) {\r\n const formData = { ...form.ruleForm }\r\n Api.login(formData.email, formData.password)\r\n .then((res) => {\r\n Cookie.set('userInfo', JSON.stringify(res))\r\n context.emit('setUser')\r\n ElMessage.success('登录成功')\r\n closeViews()\r\n })\r\n .catch((err) => {\r\n if (err.code === 210) {\r\n ElMessage.error('账号或密码不正确')\r\n } else if (err.code === 211) {\r\n Api.register(formData.email, formData.password).then((res) => {\r\n Cookie.set('userInfo', JSON.stringify(res))\r\n context.emit('setUser')\r\n ElMessage.success('注册成功')\r\n closeViews()\r\n })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n // 关闭弹窗\r\n function closeViews() {\r\n refruleForm.value.resetFields()\r\n context.emit('closeViews', false)\r\n }\r\n return {\r\n ...toRefs(form),\r\n closeViews,\r\n submitForm,\r\n refruleForm,\r\n rules\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n <style scoped lang=\"scss\">\r\n.my-dialog {\r\n background: red;\r\n}\r\n.my-dialog /deep/.el-dialog__header {\r\n border-bottom: 1px solid #eee !important;\r\n}\r\n.my-dialog /deep/.el-dialog__title {\r\n font-size: 16px;\r\n color: #e03b5d;\r\n}\r\n</style>\r\n","import AV from 'leancloud-storage'\r\n// 用户登录\r\nconst login = (username, password) => {\r\n return new Promise((resolve, reject) => {\r\n AV.User.logIn(username, password).then(user => {\r\n resolve(user)\r\n }).catch(error => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n// 用户登录\r\nconst loginEmail = (email, password) => {\r\n return new Promise((resolve, reject) => {\r\n AV.User.loginWithEmail(password, email).then(user => {\r\n resolve(user)\r\n }).catch(error => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n// 用户登出\r\nconst logout = (username, password) => {\r\n return new Promise((resolve, reject) => {\r\n AV.User.logOut(username, password).then(user => {\r\n resolve(user)\r\n })\r\n })\r\n}\r\n// 用户注册\r\nconst register = (username, password) => {\r\n return new Promise((resolve, reject) => {\r\n const user = new AV.User()\r\n user.setUsername(username)\r\n user.setPassword(password)\r\n user.signUp().then((user) => {\r\n resolve(user)\r\n }, (error) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\nconst getInfo = (params) => {\r\n return new Promise((resolve, reject) => {\r\n const user = new AV.User()\r\n user.loginWithAuthData({\r\n openid: params.openid,\r\n access_token: params.access_token,\r\n expires_in: params.expires_in\r\n }, 'weixin').then(function (user) {\r\n resolve(user)\r\n }).catch(function (error) {\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nexport default {\r\n login,\r\n logout,\r\n register,\r\n loginEmail,\r\n getInfo\r\n}\r\n","import { render } from \"./Login.vue?vue&type=template&id=32ee5f5a&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\n\nimport \"./Login.vue?vue&type=style&index=0&id=32ee5f5a&scoped=true&lang=scss\"\n\nimport exportComponent from \"Z:\\\\个人博客系统\\\\kestrel-bookmark\\\\node_modules\\\\.pnpm\\\\vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32ee5f5a\"]])\n\nexport default __exports__","<!-- /* eslint-disable */ -->\r\n<template>\r\n <el-dialog custom-class=\"my-dialog\" title=\"配置项\" :visible=\"isConfigVisible\" width=\"700px\">\r\n <el-form status-icon ref=\"refruleForm\" :rules=\"rules\" :model=\"ruleForm\" label-width=\"60px\" size=\"small\">\r\n <el-row>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"背景\">\r\n <input id=\"file\" @change=\"handleFileChange\" accept=\"image/*\" type=\"file\" :multiple=\"false\">\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"主题\" class=\"slelec\">\r\n <el-select v-model=\"theme\" placeholder=\"光影\" @change=\"setGranim\">\r\n <el-option label=\"清新\" value=\"light\" />\r\n <el-option label=\"暗黑\" value=\"dark\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"光影\" class=\"slelec\">\r\n <el-select v-model=\"selectVal\" placeholder=\"光影\" @change=\"setGranim\">\r\n <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"亮度\" class=\"slelec\">\r\n <el-input v-model=\"opacity0\" placeholder=\"亮度\" onkeyup=\"value=value.replace(/[^\\d.]/g,0)\" @change=\"setGranim\"/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-form-item label=\"位置\">\r\n <el-select v-model=\"direction\" placeholder=\"位置\" @change=\"setGranim\">\r\n <el-option v-for=\"item in directions\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\" />\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"效果\">\r\n <div class=\"granim-box\">\r\n <canvas id=\"granim-box\"></canvas>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"透明度\" class=\"opacity\">\r\n <el-input v-model=\"opacity1\" placeholder=\"透明度参数1\" onkeyup=\"value=value.replace(/[^\\d]/g,0)\" />\r\n <el-input v-model=\"opacity2\" placeholder=\"透明度参数2\" onkeyup=\"value=value.replace(/[^\\d]/g,0)\" />\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button @click=\"closeViews\" size=\"small\">关 闭</el-button>\r\n </span>\r\n </template>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nimport Cookie from 'js-cookie'\r\nimport {\r\n watch,\r\n reactive,\r\n ref,\r\n toRefs,\r\n onMounted,\r\n useAttrs,\r\n nextTick\r\n} from 'vue'\r\nimport { ElMessage } from 'element-plus'\r\nimport Api from '../Api/user.js' // register\r\nimport { config } from './config.js'\r\nexport default {\r\n model: {\r\n value: 'isConfigVisible',\r\n events: 'closeViews'\r\n },\r\n props: {\r\n isConfigVisible: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n setup(props, context) {\r\n const state = reactive({\r\n ruleForm: {\r\n username: '',\r\n password: ''\r\n },\r\n options: [\r\n { label: '渐变-01', value: 'gradient1' },\r\n { label: '渐变-02', value: 'gradient2' },\r\n { label: '渐变-03', value: 'gradient3' },\r\n { label: '迷雾森林', value: 'gradient4' }\r\n ],\r\n directions: [\r\n { label: '从上到下', value: 'top-bottom' },\r\n { label: '从左到右', value: 'left-right' },\r\n { label: '环形', value: 'diagonal' },\r\n { label: '对角线', value: 'radial' },\r\n { label: '自定义', value: 'custom' }\r\n ],\r\n selectVal: 'gradient4',\r\n direction: 'left-right',\r\n opacity1: 0.15,\r\n opacity2: 0.15,\r\n imageUrl: '',\r\n granimRef: null,\r\n theme: 'light',\r\n opacity0: 0.8\r\n })\r\n // 定义校验规则 表单代码中必须以 :rules 接收\r\n const rules = {\r\n password: [{ required: true, message: '请输入密码', trigger: 'blur' }],\r\n email: [\r\n {\r\n type: 'email',\r\n required: true,\r\n message: '请输入正确的邮箱',\r\n trigger: 'blur'\r\n }\r\n ]\r\n }\r\n const refruleForm = ref(null)\r\n // 确定按钮的格式\r\n const submitForm = () => {\r\n refruleForm.value.validate((valid) => {\r\n if (valid) {\r\n const formData = { ...state.ruleForm }\r\n Api.login(formData.email, formData.password)\r\n .then((res) => {\r\n Cookie.set('userInfo', JSON.stringify(res))\r\n context.emit('setUser')\r\n ElMessage.success('登录成功')\r\n closeViews()\r\n })\r\n .catch((err) => {\r\n if (err.code === 210) {\r\n ElMessage.error('账号或密码不正确')\r\n } else if (err.code === 211) {\r\n Api.register(formData.email, formData.password).then((res) => {\r\n Cookie.set('userInfo', JSON.stringify(res))\r\n context.emit('setUser')\r\n ElMessage.success('注册成功')\r\n closeViews()\r\n })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n // 关闭弹窗\r\n function closeViews() {\r\n refruleForm.value.resetFields()\r\n context.emit('closeViews', false)\r\n }\r\n\r\n const setGranim = () => {\r\n state.opacity1 = state.opacity1 || 1\r\n state.opacity2 = state.opacity2 || 1\r\n const obj = config[`${state.selectVal}`]\r\n // 配置项\r\n const granimConfig = {\r\n ...obj,\r\n opacity1: state.opacity1,\r\n opacity2: state.opacity2,\r\n opacity0: state.opacity0,\r\n selectVal: state.selectVal,\r\n theme: state.theme,\r\n opacity: [state.opacity1, state.opacity2],\r\n direction: state.direction,\r\n image: {\r\n source: state.imageUrl,\r\n position: ['center', 'bottom'],\r\n stretchMode: ['stretch', 'stretch-if-bigger'],\r\n blendingMode: 'multiply'\r\n }\r\n }\r\n // 存储配置到缓存\r\n localStorage.setItem('granimConfig', JSON.stringify(granimConfig))\r\n\r\n // eslint-disable-next-line no-undef, no-new\r\n state.granimRef = new Granim({\r\n element: '#granim-box',\r\n ...granimConfig\r\n })\r\n context.emit('fresh')\r\n }\r\n // 文件转成 base64\r\n function changeFileIntoBase64(file) {\r\n return new Promise((resolve) => {\r\n const fr = new FileReader()\r\n /* eslint-disable */\r\n fr.readAsDataURL(file)\r\n fr.onload = (result) => {\r\n const base64Str = result.currentTarget.result\r\n resolve(base64Str)\r\n }\r\n })\r\n }\r\n\r\n const handleFileChange = (e) => {\r\n const file = e.target.files[0]\r\n changeFileIntoBase64(file)\r\n .then((res) => {\r\n state.imageUrl = res\r\n })\r\n .finally(() => {\r\n setGranim()\r\n })\r\n }\r\n\r\n const attrs = useAttrs()\r\n onMounted(() => {\r\n let granimConfig = localStorage.getItem('granimConfig')\r\n if (granimConfig) {\r\n let obj = JSON.parse(granimConfig)\r\n state.selectVal = obj.selectVal\r\n state.direction = obj.direction\r\n state.opacity1 =\r\n obj.opacity && obj.opacity.length > 0 ? obj.opacity[0] : 0.15 // 选择显示的透明度 或 选择动画\r\n state.opacity2 =\r\n obj.opacity && obj.opacity.length > 0 ? obj.opacity[1] : 0.15\r\n state.imageUrl = obj.image && obj.image.source ? obj.image.source : ''\r\n state.theme = obj.theme\r\n state.opacity0 = obj.opacity0\r\n }\r\n state.granimRef = null\r\n })\r\n\r\n watch(\r\n () => attrs.modelValue,\r\n (v) => {\r\n if (v) {\r\n nextTick(() => {\r\n if (state.granimRef) {\r\n state.granimRef.destroy()\r\n }\r\n setGranim()\r\n })\r\n }\r\n },\r\n {\r\n deep: true,\r\n }\r\n )\r\n return {\r\n ...toRefs(state),\r\n closeViews,\r\n submitForm,\r\n refruleForm,\r\n rules,\r\n setGranim,\r\n handleFileChange,\r\n }\r\n },\r\n}\r\n</script>\r\n\r\n <style scoped lang=\"scss\">\r\n.my-dialog {\r\n background: red;\r\n}\r\n.my-dialog /deep/.el-dialog__header {\r\n border-bottom: 1px solid #eee !important;\r\n}\r\n.my-dialog /deep/.el-dialog__title {\r\n font-size: 16px;\r\n color: #e03b5d;\r\n}\r\n\r\n.granim-box {\r\n height: 240px;\r\n width: 100%;\r\n border-radius: 12px;\r\n overflow: hidden;\r\n canvas {\r\n height: 100%;\r\n width: 100%;\r\n object-fit: cover;\r\n }\r\n}\r\n\r\n.slelec {\r\n height: 40px;\r\n line-height: 40px;\r\n // :deep(.el-form-item__label) {\r\n // }\r\n}\r\n\r\n.opacity {\r\n :deep(.el-form-item__content) {\r\n display: flex;\r\n align-items: center;\r\n .el-input {\r\n &:first-child {\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n#file {\r\n height: 32px;\r\n line-height: 16px;\r\n}\r\n\r\ninput[type='text'] {\r\n color: red;\r\n}\r\n</style>\r\n","export const config = {\r\n gradient1: {\r\n direction: 'left-right',\r\n // isPausedWhenNotInView: true,\r\n image: {\r\n source: 'https://zhanhongzhu.top/bg.jpg',\r\n position: ['center', 'bottom'],\r\n stretchMode: ['stretch', 'stretch-if-bigger'],\r\n blendingMode: 'multiply'\r\n },\r\n states: {\r\n 'default-state': {\r\n gradients: [\r\n [\r\n { color: '#833ab4', pos: 0.2 },\r\n { color: '#fd1d1d', pos: 0.8 },\r\n { color: '#38ef7d', pos: 1 }\r\n ],\r\n [\r\n { color: '#40e0d0', pos: 0 },\r\n { color: '#ff8c00', pos: 0.2 },\r\n { color: '#ff0080', pos: 0.75 }\r\n ]\r\n ]\r\n }\r\n }\r\n },\r\n gradient2: {\r\n direction: 'left-right',\r\n opacity: [1, 1],\r\n // isPausedWhenNotInView: true,\r\n image: {\r\n source: 'https://zhanhongzhu.top/bg.jpg',\r\n position: ['center', 'bottom'],\r\n stretchMode: ['stretch', 'stretch-if-bigger'],\r\n blendingMode: 'multiply'\r\n },\r\n states: {\r\n 'default-state': {\r\n gradients: [\r\n ['#AA076B', '#61045F'],\r\n ['#02AAB0', '#00CDAC'],\r\n ['#DA22FF', '#9733EE']\r\n ]\r\n }\r\n }\r\n },\r\n gradient3: {\r\n direction: 'left-right',\r\n // isPausedWhenNotInView: true,\r\n image: {\r\n source: 'https://zhanhongzhu.top/bg.jpg',\r\n position: ['center', 'bottom'],\r\n stretchMode: ['stretch', 'stretch-if-bigger'],\r\n blendingMode: 'multiply'\r\n },\r\n states: {\r\n 'default-state': {\r\n gradients: [\r\n ['#ff9966', '#ff5e62'],\r\n ['#00F260', '#0575E6'],\r\n ['#e1eec3', '#f05053']\r\n ]\r\n }\r\n }\r\n },\r\n gradient4: {\r\n direction: 'top-bottom',\r\n // isPausedWhenNotInView: true,\r\n image: {\r\n source: 'https://zhanhongzhu.top/bg.jpg',\r\n position: ['center', 'bottom'],\r\n stretchMode: ['stretch', 'stretch-if-bigger'],\r\n blendingMode: 'multiply'\r\n },\r\n states: {\r\n 'default-state': {\r\n gradients: [\r\n ['#29323c', '#485563'],\r\n ['#FF6B6B', '#556270'],\r\n ['#80d3fe', '#7ea0c4'],\r\n ['#f0ab51', '#eceba3']\r\n ],\r\n transitionSpeed: 7000\r\n }\r\n }\r\n }\r\n}\r\n","import { render } from \"./Configd.vue?vue&type=template&id=6f880459&scoped=true\"\nimport script from \"./Configd.vue?vue&type=script&lang=js\"\nexport * from \"./Configd.vue?vue&type=script&lang=js\"\n\nimport \"./Configd.vue?vue&type=style&index=0&id=6f880459&scoped=true&lang=scss\"\n\nimport exportComponent from \"Z:\\\\个人博客系统\\\\kestrel-bookmark\\\\node_modules\\\\.pnpm\\\\vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6f880459\"]])\n\nexport default __exports__","import AV from 'leancloud-storage'\r\n// 对象存储公共函数\r\nexport const saveObject = (className, params) => {\r\n return new Promise((resolve, reject) => {\r\n const Todo = AV.Object.extend(className)\r\n const user = AV.User.current()\r\n var todo = new Todo()\r\n todo.set('formDatas', params.formDatas)\r\n todo.set('user', user)\r\n todo.save().then((res) => {\r\n resolve(res)\r\n }, (error) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n// 获取对象列表\r\nexport const getObject = (className, params) => {\r\n return new Promise((resolve, reject) => {\r\n const query = new AV.Query(className)\r\n // 查询多个条件\r\n const user = AV.User.current()\r\n for (const v in params) {\r\n if (params[v]) {\r\n query.equalTo(v, params[v])\r\n }\r\n }\r\n query.equalTo('user', user)\r\n query.find().then((res) => {\r\n resolve(res)\r\n }, (error) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n// 删除对象\r\nexport const deleteObject = (className, id) => {\r\n return new Promise((resolve, reject) => {\r\n const todo = AV.Object.createWithoutData(className, id)\r\n todo.destroy().then((res) => {\r\n resolve(res)\r\n }, (error) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n// 更新对象\r\nexport const updateObject = (className, params) => {\r\n return new Promise((resolve, reject) => {\r\n const todo = AV.Object.createWithoutData(className, params.id)\r\n for (var i in params) {\r\n todo.set(i, params[i])\r\n }\r\n todo.save().then((res) => {\r\n resolve(res)\r\n }, (error) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n","// 格式化浏览器书签\r\nexport function walkBookmarksTree(root) {\r\n const result = []\r\n // 深度优先遍历\r\n const walk = (node, list) => {\r\n const els = node.children\r\n if (els && els.length > 0) {\r\n for (let i = 0; i < els.length; i++) {\r\n const item = els[i]\r\n // p标签或h3标签直接跳过\r\n if (item.tagName === 'P' || item.tagName === 'H3') {\r\n continue\r\n }\r\n // 文件夹不用创建元素\r\n if (item.tagName === 'DL') {\r\n walk(els[i], list)\r\n } else { // DT节点\r\n let child = null\r\n // 判断是否是文件夹\r\n const children = item.children\r\n let isDir = false\r\n for (let j = 0; j < children.length; j++) {\r\n if (children[j].tagName === 'H3' || children[j].tagName === 'DL') {\r\n isDir = true\r\n }\r\n }\r\n // 文件夹\r\n if (isDir) {\r\n child = {\r\n type: item.tagName === 'DT' ? item.querySelector('h3') ? item.querySelector('h3').innerText : '' : '',\r\n folder: true,\r\n children: []\r\n }\r\n walk(els[i], child.children)\r\n } else { // 书签\r\n const _item = item.querySelector('a')\r\n if (_item) {\r\n child = {\r\n title: _item?.innerText,\r\n url: _item?.href\r\n }\r\n }\r\n }\r\n child && list.push(child)\r\n }\r\n }\r\n }\r\n }\r\n walk(root, result)\r\n const myBookmark = result.filter(v => v.folder)\r\n return flagBrowerList(myBookmark)\r\n}\r\n\r\n// 降维书签数据\r\nconst flagBrowerList = v => {\r\n const res = []\r\n const flatten = (v) => {\r\n for (let i = 0; i < v.length; i++) {\r\n if (v[i].folder) {\r\n flatten(v[i].children)\r\n const result = v[i]\r\n result.children = result.children.filter(v => !v.folder)\r\n res.push(result)\r\n }\r\n }\r\n }\r\n flatten(v)\r\n return res\r\n}\r\n\r\n// 导出数据为JSON下载\r\nexport function exportBookmark() {\r\n if (localStorage.getItem('BOOKMARK')) {\r\n var content = localStorage.getItem('BOOKMARK')\r\n var eleLink = document.createElement('a')\r\n eleLink.download = 'kestrel-bookmark.json'\r\n eleLink.style.display = 'none'\r\n // 字符内容转变成blob地址\r\n var blob = new Blob([content])\r\n eleLink.href = URL.createObjectURL(blob)\r\n // 触发点击\r\n document.body.appendChild(eleLink)\r\n eleLink.click()\r\n // 然后移除\r\n document.body.removeChild(eleLink)\r\n } else {\r\n this.$message.warning('暂无可导出数据')\r\n }\r\n}\r\n","export const themeConfig = {\r\n light: {\r\n bgColor: '#fff',\r\n activeColor: '#a0cae6',\r\n textColor: '#111',\r\n hoverColor: '#fff',\r\n borderColor: '#eee',\r\n scrollbarColor: '#dddddd',\r\n svgColor: ''\r\n },\r\n dark: {\r\n bgColor: '#111',\r\n activeColor: '#000',\r\n textColor: '#fff',\r\n hoverColor: '#000',\r\n borderColor: '#2c2c2c',\r\n scrollbarColor: '#222',\r\n svgColor: '#888'\r\n }\r\n}\r\n","import { render } from \"./App.vue?vue&type=template&id=58ce68a6&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=58ce68a6&scoped=true&lang=scss\"\n\nimport exportComponent from \"Z:\\\\个人博客系统\\\\kestrel-bookmark\\\\node_modules\\\\.pnpm\\\\vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58ce68a6\"]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport App from './App.vue'\r\n\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/lib/theme-chalk/index.css'\r\n// 接入了Leancloud\r\nimport AV from 'leancloud-storage'\r\n\r\n// 请注册leancloud,新建应用,然后替换这个\r\nAV.init({\r\n appId: '\\x42\\x77\\x4c\\x72\\x43\\x67\\x64\\x56\\x79\\x4c\\x73\\x35\\x32\\x6d\\x4a\\x4f\\x31\\x48\\x63\\x72\\x58\\x61\\x6b\\x49\\x2d\\x67\\x7a\\x47\\x7a\\x6f\\x48\\x73\\x7a', appKey: '\\x32\\x35\\x67\\x4e\\x77\\x7a\\x77\\x34\\x64\\x56\\x37\\x49\\x41\\x68\\x37\\x69\\x30\\x49\\x7a\\x44\\x6e\\x59\\x76\\x56', serverURL: '\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x62\\x77\\x6c\\x72\\x63\\x67\\x64\\x76\\x2e\\x6c\\x63\\x2d\\x63\\x6e\\x2d\\x6e\\x31\\x2d\\x73\\x68\\x61\\x72\\x65\\x64\\x2e\\x63\\x6f\\x6d'\r\n})\r\n\r\nconst app = createApp(App)\r\napp.use(ElementPlus)\r\napp.mount('#app')\r\n","export * from \"-!../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/stylePostLoader.js!../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/.pnpm/sass-loader@8.0.2_node-sass@4.14.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/index.js??ref--1-1!./Configd.vue?vue&type=style&index=0&id=6f880459&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/logo.f38dc2e8.svg\";","module.exports = __webpack_public_path__ + \"img/add.ca18f050.svg\";","export * from \"-!../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/stylePostLoader.js!../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/.pnpm/sass-loader@8.0.2_node-sass@4.14.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/.pnpm/vue-loader@16.8.3_eyahegwrv37y7qk53bouxv3ekm/node_modules/vue-loader/dist/index.js??ref--1-1!./Login.vue?vue&type=style&index=0&id=32ee5f5a&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/blog.f57ba53d.svg\";","module.exports = __webpack_public_path__ + \"img/file.807fb7b5.svg\";"],"sourceRoot":""}