1 line
120 KiB
Plaintext
1 line
120 KiB
Plaintext
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/svg/search.svg","webpack:///./src/App.vue?d2a0","webpack:///./src/components/Login.vue?c279","webpack:///./src/assets/svg/translate.svg","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?6d5b","webpack:///./src/components/Login.vue","webpack:///./src/Api/user.js","webpack:///./src/components/Login.vue?c43e","webpack:///./src/Api/common.js","webpack:///./src/components/utils.js","webpack:///./src/App.vue?97f5","webpack:///./src/main.js","webpack:///./src/assets/svg/logo.svg","webpack:///./src/assets/svg/add.svg","webpack:///./src/components/Dialog.vue?541a","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","class","id","href","target","src","title","type","ref","width","height","viewBox","data-v-8739e5ce","fill","fill-rule","transform","x","y","stroke","stroke-width","rx","placeholder","searchVal","add","loginClick","userInfo","username","item","index","activeIndex","selectType","importBookmark","exportBookmark","bookMark","tag","css","beforeEnter","enter","leave","card","idx","navigate","logo","deleteClick","desc","isDetailVisible","closeViews","detail","search","isLoginVisible","closeLoginViews","setUsername","myData","children","url","contribute","is_docschina","repository","_id","_updateTime","team","homeBackup","imgStyle","objectFit","_createTime","custom-class","visible","footer","size","submitForm","status-icon","rules","model","ruleForm","label-width","gutter","span","label","prop","style","BOOKMARK","clearable","events","props","Boolean","default","Number","setup","context","isBOOKMARK","JSON","parse","localStorage","getItem","map","v","form","required","message","trigger","refruleForm","validate","valid","myDetail","formData","flag","sIndex","findIndex","success","pindex","setItem","stringify","emit","resetFields","deep","methods","render","__scopeId","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","res","set","err","code","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","rowData","components","Dialog","Login","arr","Array","isArray","allData","getBookmarkList","fn","objectId","attributes","finally","toLowerCase","indexOf","open","row","temp","assign","handleUserLogin","delDetail","cindex","LoginOut","confirm","confirmButtonText","cancelButtonText","remove","file","getElementById","dispatchEvent","MouseEvent","mybookmark","addEventListener","files","reader","FileReader","readAsText","onload","innerHTML","saveBookmarkList","el","opacity","done","gsap","to","delay","dataset","onComplete","init","appId","appKey","serverURL","app","createApp","App","use","ElementPlus","mount"],"mappings":"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","file":"js/app.7e6249a2.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/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=5ebba4d0&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Login.vue?vue&type=style&index=0&id=f6f4d2d2&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/translate.fa0bf271.svg\";","module.exports = __webpack_public_path__ + \"img/user.6e444b4a.svg\";","<template>\r\n <div class=\"bg\"></div>\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=\"在线翻译\" href=\"https://translate.google.cn\" 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\" /><span class=\"login-status\" :title=\"userInfo.username\">{{userInfo.username.slice(0, 5)}}</span></span>\r\n </div>\r\n\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 </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</template>\r\n<script>\r\nimport { reactive, toRefs } from '@vue/reactivity'\r\nimport { myData } from './assets/Json/印象笔记.js'\r\nimport { watch } from '@vue/runtime-core'\r\nimport Dialog from './components/Dialog.vue'\r\nimport Login from './components/Login.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 Api from './Api/user.js'\r\nvar rowData = []\r\nexport default {\r\n components: { Dialog, Login },\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 detail: {},\r\n userInfo: {\r\n username: '未登录'\r\n }\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').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 }).catch(() => {\r\n localStorage.setItem('BOOKMARK', JSON.stringify(myData))\r\n rowData = JSON.parse(JSON.stringify(myData))\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 // 用户登录\r\n const handleUserLogin = () => {\r\n data.isLoginVisible = true\r\n }\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\r\n return {\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 }\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}\r\n\r\n.bookmark {\r\n position: relative;\r\n margin-top: 10vh;\r\n width: 1200px;\r\n height: calc(80vh);\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: #fff;\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: #a0cae6;\r\n }\r\n .inactive {\r\n box-shadow: none;\r\n background: #fff;\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: #a0cae6;\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 }\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 #eee;\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n background: rgb(250, 248, 248);\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 #eaecef;\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.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 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: #000000;\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: rgba(0, 0, 0, 0.7);\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.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\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: #fbf5f5;\r\n height: 36px;\r\n padding: 3px 15px;\r\n display: flex;\r\n align-items: center;\r\n bottom: 0;\r\n z-index: 99;\r\n i {\r\n font-size: 18px;\r\n margin: 1px 4px;\r\n padding: 4px;\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 技术的 JavaScript(TypeScript)库,它提供了与 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 是基于 Vue(Vue@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 } from '@vue/reactivity'\r\nimport { nextTick, watch } from '@vue/runtime-core'\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(p => p.title === myDetail.title)\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 methods: {\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 { render } from \"./Dialog.vue?vue&type=template&id=562e6412&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=562e6412&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-562e6412\"\n\nexport default script","<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\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/reactivity'\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 // 用户\r\n // 定义校验规则 表单代码中必须以 :rules 接收\r\n const rules = {\r\n password: [{ required: true, message: '请输入密码', trigger: 'blur' }],\r\n email: [{type: 'email', required: true, message: '请输入正确的邮箱', trigger: 'blur' }]\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 methods: {}\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\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\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=f6f4d2d2&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=f6f4d2d2&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-f6f4d2d2\"\n\nexport default script","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\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\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","import { render } from \"./App.vue?vue&type=template&id=5ebba4d0&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=5ebba4d0&scoped=true&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-5ebba4d0\"\n\nexport default script","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\r\n// 接入了Leancloud\r\nimport AV from 'leancloud-storage'\r\nAV.init({ 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\nconst app = createApp(App)\r\napp.use(ElementPlus)\r\napp.mount('#app')\r\n","module.exports = __webpack_public_path__ + \"img/logo.f38dc2e8.svg\";","module.exports = __webpack_public_path__ + \"img/add.ca18f050.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Dialog.vue?vue&type=style&index=0&id=562e6412&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/blog.f57ba53d.svg\";","module.exports = __webpack_public_path__ + \"img/file.807fb7b5.svg\";"],"sourceRoot":""} |