[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-info":3,"is-login-anon":38,"posts-list-3":41},{"metas":4,"description":19,"title":20,"keywords":21,"links":22},[5,9,12,16],{"mid":6,"name":7,"slug":8},1,"笔记","notes",{"mid":10,"name":11,"slug":11},2,"wiki",{"mid":13,"name":14,"slug":15},5,"软件","soft",{"mid":17,"name":18,"slug":18},19,"vlog","奇异资源网是一个高质量源码教程分享平台,分享技术记录生活。","初夏博客 - 奇异网络 - 奇异资源网","特奇异,奇异网络,奇异资源网,易语言,html,vue,js,python,教程分享,源码分享,网站搭建",[23,27,33],{"name":24,"url":25,"sort":24,"image":26,"description":26},"AI","http://baidu.com","",{"name":28,"url":29,"sort":30,"image":31,"description":32},"黑白碰小游戏","https://dandan.teqiyi.com/","自有","https://blog.teqiyi.com/admin/usr/uploads/2025/03/dandan.png","超火的微信闯关小游戏",{"name":34,"url":35,"sort":30,"image":36,"description":37},"丑逼头像生成","http://avatar.teqiyi.com/","https://blog.teqiyi.com/admin/usr/uploads/2025/03/face.png","快来生成一个丑逼头像。惊爆朋友圈",{"status":39,"data":40},200,false,{"status":39,"data":42},{"list":43,"count":99},[44,51,57,63,69,75,81,87,93],{"cid":45,"title":46,"created":47,"type":48,"slug":49,"text":50,"authorId":6,"meta_name":7},36,"Typecho模板  Vue3 + TypeScript + element-plus  开发",1647933360,"post","36","\u003Ch2>Vue3 模板/ PHP 模板\u003C/h2>\u003Cp>\u003Ca href=\"https://qq.cool/\">Vue3模板\u003C/a>\u003Cbr>\u003Ca href=\"https://blog.teqiyi.com/\">PHP模板\u003C/a>\u003C/p>\u003Ch2>用到的技术栈\u003C/h2>\u003Cp>[scode]全都是最新的[/scode]\u003C/p>\u003Col>\u003Cli>Markdown 渲染 html\u003C/li>\u003Cli>element-plus\u003C/li>\u003Cli>TypeScript\u003C/li>\u003Cli>NProgress\u003C/li>\u003Cli>highlight\u003C/li>\u003Cli>单例模式\u003C/li>\u003C/ol>\u003Ch2>开发遇到的问题坑\u003C/h2>\u003Cul>\u003Cli>获取文章渲染html的时候 v-html 元素中标签样式失效，\u003Cbr>解决方法\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"lang-js\">（Vue3 失效）\n1 deep 选择器在 CSS 的写法是 &gt;&gt;&gt;\n.content-html {\n &gt;&gt;&gt; p { \n       font-size: 16px; \n       } \n&gt;&gt;&gt; a {\n       color: blue; \n      } \n}\n（失效）\n2  /deep/ 写法\n.content-html {\n    /deep/ p {\n        font-size: 16px;\n    }\n    /deep/ a {\n        color: blue;\n    }\n}\n（可用）\n3  :deep() 方法\n.content-html {\n    :deep(p) {\n        font-size: 16px;\n    }\n    :deep(a) {\n        color: blue;\n    }\n}\u003C/code>\u003C/pre>\u003Cul>\u003Cli>Markdown 渲染html\u003Cbr>\u003Ca href=\"https://github.com/markdown-it/markdown-it\">markdown-it 文档\u003C/a>\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"lang-js\">// 安装\nnpm install markdown-it --save\nnpm install @types/markdown-it  //ts 语法提示插件\n// 使用\nconst md = new MarkdownIt({\n    html: true,\n    linkify: true,\n    typographer: true\n});\nlet html = md.render(mdText);\n\u003C/code>\u003C/pre>\u003Cul>\u003Cli>解决路由跳转后滚动条位置不动。\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"lang-js\">// router/index.js  在路由跳转的时候把滚动条回到顶部\nrouter.beforeEach((to) =&gt; {\n    window.scroll(0, 0)\n})\u003C/code>\u003C/pre>\u003Cul>\u003Cli>页面切换太快了有点无聊，加个进度条\u003Cbr>\u003Ca href=\"https://github.com/rstacruz/nprogress/\">nprogress 文档\u003C/a>\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"lang-js\">// 安装\nnpm install --save nprogress\nnpm install @types/nprogres // ts 提示文件\nNProgress.start();\nNProgress.done();\u003C/code>\u003C/pre>\u003Cul>\u003Cli>代码高亮插件\u003Cbr>\u003Ca href=\"https://github.com/highlightjs/vue-plugin\">highlightjs/vue-plugin 文档\u003C/a>\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"lang-js\">// 安装\nnpm i @highlightjs/vue-plugin\n\n// vue 需要在 v-html 渲染完后。在执行代码高亮。 不然获取不到页面里面的pre 标签\nthis.$nextTick(() =&gt; {\n    document.querySelectorAll(&#039;pre &gt; code&#039;).forEach(code =&gt; {\n        hljs.highlightElement(code as HTMLElement)\n    })\n})\n\u003C/code>\u003C/pre>\u003Cul>\u003Cli>vue3 匹配 404 页面\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"lang-js\">{\n// path: &quot;*&quot;,   vue2\n    path: &quot;/:catchAll(.*)&quot;, // 不识别的path自动匹配404\n    redirect: &#039;/404&#039;,\n}\n\u003C/code>\u003C/pre>\u003Chr>\u003Ch2>先来几张预览图\u003C/h2>\u003Cp>[scode]手机版首页[/scode]\u003Cbr>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2022/03/4246018241.png\" alt=\"blog1.png\" title=\"blog1.png\">\u003C/p>\u003Chr>\u003Cp>[scode]电脑版首页[/scode]\u003Cbr>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2022/03/3844241313.png\" alt=\"blog2.png\" title=\"blog2.png\">\u003C/p>\u003Chr>\u003Cp>[scode]代码高亮[/scode]\u003Cbr>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2022/03/2149158744.png\" alt=\"blog3.png\" title=\"blog3.png\">\u003C/p>\u003Chr>\u003Cp>[scode]下载面板[/scode]\u003Cbr>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2022/03/2270063248.png\" alt=\"blog4.png\" title=\"blog4.png\">\u003C/p>\u003Chr>\u003Cp>[scode]骨架屏[/scode]\u003Cbr>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2022/03/1168787235.png\" alt=\"blog5.png\" title=\"blog5.png\">\u003C/p>",{"cid":52,"title":53,"created":54,"type":48,"slug":55,"text":56,"authorId":6,"meta_name":7},28,"cocos creator 生成迷宫源码",1618293360,"28","\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2021/04/3133647045.png\" alt=\"mig.png\" title=\"mig.png\">\u003C/p>\u003Cp>cocos 生成迷宫。\u003Cbr>可自定义行，列\u003Cbr>cocos 版本：2.4.4\u003C/p>\u003Cp>[down]{\"downName\":\"cocos 迷宫地图生成\",\"downUrl\":\"https://share.weiyun.com/ehYouVok\"}[/down]\u003C/p>",{"cid":58,"title":59,"created":60,"type":48,"slug":61,"text":62,"authorId":6,"meta_name":7},22,"PhpStorm最新CI代码提示自动补全(CodeIgniter3)",1610958540,"22","\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2021/01/3244060005.png\" alt=\"WeChat2c7691f35544ccc4ecee1c3f70a97660.png\" title=\"WeChat2c7691f35544ccc4ecee1c3f70a97660.png\">\u003C/p>\u003Ch2>PhpStorm Ci 框架自动补全，model，libraries\u003C/h2>\u003Cul>\u003Cli>下载autocomplete.php,下方下载面板\u003C/li>\u003Cli>放置到 application/config/\u003Cbr>[down]{\"downName\":\"autocomplete.php\",\"downUrl\":\"https://blog.teqiyi.com/admin/usr/uploads/2021/01/143897721.zip\"}[/down]\u003C/li>\u003C/ul>\u003Ch2>把自己的类放到文件里面,即可使用\u003C/h2>\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2021/01/1069841244.png\" alt=\"22DC1EB0-1A25-4DDE-AC21-F38F295B14A7.png\" title=\"22DC1EB0-1A25-4DDE-AC21-F38F295B14A7.png\">\u003C/p>",{"cid":64,"title":65,"created":66,"type":48,"slug":67,"text":68,"authorId":6,"meta_name":7},18,"解决cocos 调用微信小程序原生API，vscode找不到变量",1608620501,"18","\u003Ch2>cocos直接调用微信API会找不到变量\u003C/h2>\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2020/12/1442128965.png\" alt=\"cocos1.png\" title=\"cocos1.png\">\u003C/p>\u003Ch2>解决方法\u003C/h2>\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2020/12/3800305430.png\" alt=\"cocos2.png\" title=\"cocos2.png\">\u003C/p>\u003Cpre>\u003Ccode>在cocos 根目录 creator.d.ts 文件头部添加一句\ndeclare var wx: any;\u003C/code>\u003C/pre>",{"cid":70,"title":71,"created":72,"type":48,"slug":73,"text":74,"authorId":6,"meta_name":7},15,"RetroPie 游戏合集 - 300个Roms(无敌版)",1603080420,"15","\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2020/10/3901426171.jpg\" alt=\"IMG_1290.JPG\" title=\"IMG_1290.JPG\">\u003C/p>\u003Ch2>树莓派 - RetroPie 游戏合集。\u003C/h2>\u003Cpre>\u003Ccode>收集的300个Roms 游戏合集（无敌版）\u003C/code>\u003C/pre>\u003Cp>[down]{\"downName\":\"300个Roms(无敌版).zip\",\"downUrl\":\"https://share.weiyun.com/x5eDhblj\"}[/down]\u003C/p>",{"cid":76,"title":77,"created":78,"type":48,"slug":79,"text":80,"authorId":6,"meta_name":7},13,"thinkphp6 中使用twig引擎,tp6",1600330080,"13","\u003Ch2>tp6 最新版使用twig模板\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/rain-sjh/think-twig\">开源地址\u003C/a>\u003C/p>\u003Ch2>composer 安装\u003C/h2>\u003Cp>\u003Ccode> composer require rain-sjh/think-twig \u003C/code>\u003C/p>\u003Ch2>缓存配置\u003C/h2>\u003Cp>\u003Ccode>&#039;tpl_cache&#039;    =&gt; true  当为 true 时启用缓存, 当为 false 时 关闭缓存.\u003C/code>\u003C/p>\u003Ch2>安装完成后在config目录view.php进行配置\u003C/h2>\u003Cpre>\u003Ccode>return [\n     // 模板引擎类型使用 Think\n    &#039;type&#039;          =&gt; &#039;Twig&#039;,\n    // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法\n    &#039;auto_rule&#039;     =&gt; 1,\n    // 模板目录名\n    &#039;view_dir_name&#039; =&gt; &#039;view&#039;,\n    // 模板后缀\n    &#039;view_suffix&#039;   =&gt; &#039;twig&#039;,\n    // 模板文件名分隔符\n    &#039;view_depr&#039;     =&gt; DIRECTORY_SEPARATOR,\n    // 模板引擎普通标签开始标记\n    &#039;tpl_begin&#039;     =&gt; &#039;{{&#039;,\n    // 模板引擎普通标签结束标记\n    &#039;tpl_end&#039;       =&gt; &#039;}}&#039;,\n    // 标签库标签开始标记\n    &#039;taglib_begin&#039;  =&gt; &#039;{%&#039;,\n    // 标签库标签结束标记\n    &#039;taglib_end&#039;    =&gt; &#039;%}&#039;,\n    // 是否开启缓存\n    &#039;tpl_cache&#039;    =&gt; true\n];\u003C/code>\u003C/pre>\u003Ch2>如需拓展twig模板函数,请在extend下创建 TwigExpand.php 并实现接口\u003C/h2>\u003Cpre>\u003Ccode>use Twig\\Extension\\AbstractExtension;\nuse Twig\\NodeVisitor\\NodeVisitorInterface;\nuse Twig\\TokenParser\\TokenParserInterface;\nuse Twig\\TwigFunction;\nuse Twig\\TwigFilter;\n\nclass TwigExpand extends AbstractExtension\n {\n     /**\n      * 过滤器 拓展.\n      * @return TwigFilter[]\n      */\n     public function getFilters()\n     {\n         return [\n         ];\n     }\n \n     /**\n      * 函数 拓展.\n      * @return TwigFunction[]\n      */\n     public function getFunctions()\n     {\n         return [\n         ];\n     }\n \n     /**\n      * Token的解析器 拓展.\n      * @return array|TokenParserInterface[]\n      */\n     public function getTokenParsers()\n     {\n         return [];\n     }\n \n     /**\n      * 节点访问器 拓展.\n      * @return array|NodeVisitorInterface[]\n      */\n     public function getNodeVisitors()\n     {\n         return [];\n     }\n \n     /**\n      * 测试 拓展.\n      *\n      * @return Twig_Test[]\n      */\n     public function getTests()\n     {\n         return [];\n     }\n \n     /**\n      * 运算符 拓展.\n      * @return array&lt;array&gt; First array of unary operators, second array of binary operators\n      */\n     public function getOperators()\n     {\n         return [];\n     }\n }\n\u003C/code>\u003C/pre>",{"cid":82,"title":83,"created":84,"type":48,"slug":85,"text":86,"authorId":6,"meta_name":14},11,"抖音web 上传协议,抖音上传",1589439780,"11","\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2020/05/1278876155.jpg\" alt=\"dyweb.jpg\" title=\"dyweb.jpg\">\u003C/p>\u003Ch2>分享一个抖音web登录算法\u003C/h2>\u003Cpre>\u003Ccode class=\"lang-python\">class Dylogin:\n    def __init__(self, phone):\n        self.phone = phone\n        self.s = requests.Session()\n        self.s.headers = {\n            &#039;user-agent&#039;: &#039;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36&#039;,\n            &#039;referer&#039;: &#039;https://creator.douyin.com/&#039;\n        }\n\n    def __s(self, e):\n        t = []\n        n = 0\n        for x in range(len(e)):\n            r = ord(e[x])\n            if 0 &lt;= r and r &lt;= 127:\n                t.append(r)\n            elif 128 &lt;= r and r &lt;= 2047:\n                t.append(192 | 31 &amp; r &gt;&gt; 6)\n                t.append(128 | 63 &amp; r)\n            elif 2048 &lt;= r and r &lt;= 55295 or 57344 &lt;= r and r &lt;= 65535:\n                t.append(224 | 15 &amp; r &gt;&gt; 12);\n                t.append(128 | 63 &amp; r &gt;&gt; 6);\n                t.append(128 | 63 &amp; r)\n        for i in range(len(t)):\n            t[n] &amp;= 255;\n        return t\n\n    def __encrypt(self, e):\n        t = 0\n        a = []\n        if 0 == e:\n            return &quot;&quot;\n        e += &quot;&quot;\n        n = self.__s(e)\n        r = len(n)\n        for x in range(r):\n            if t &lt; r:\n                a.append(hex((5 ^ n[t])))\n                t += 1\n            else:\n                break\n\n        return &#039;&#039;.join(a).replace(&#039;0x&#039;, &#039;&#039;)\n\n    def sendSms(self):\n        url = &#039;https://creator.douyin.com/passport/web/send_code/?account_sdk_source=web&amp;mobile=%2B86&#039; + self.phone + &#039;&amp;type=24&amp;aid=2906&#039;\n        res = self.s.get(url).json()\n        if res[&#039;message&#039;] == &#039;success&#039;:\n            print(&#039;短信发送成功！&#039;)\n            return True\n        else:\n            print(res[&#039;data&#039;][&#039;description&#039;])\n            return False\n\n    def login(self, code):\n        url = &#039;https://creator.douyin.com/passport/web/sms_login/?account_sdk_source=web&#039;\n        data = {\n            &#039;mobile&#039;: self.__encrypt(&#039;+86&#039; + self.phone),\n            &#039;code&#039;: self.__encrypt(code),\n            &#039;aid&#039;: 2906,\n            &#039;mix_mode&#039;: 1\n        }\n        res = self.s.post(url, data=data)\n        msg = res.json()\n        # print(msg)\n        # print(res.cookies.get_dict())\n\n        if msg[&#039;message&#039;] == &#039;error&#039;:\n            print(msg[&#039;data&#039;][&#039;description&#039;])\n            return False\n        elif msg[&#039;message&#039;] == &#039;success&#039;:\n            print(&#039;登录成功！&#039;)\n            print(msg[&#039;data&#039;][&#039;name&#039;])\n            cookies = res.cookies.get_dict()\n            return cookies\u003C/code>\u003C/pre>\u003Ch2>抖音web 上传协议\u003C/h2>\u003Cp>[down]{\"downName\":\"抖音web上传视频\",\"downUrl\":\"https://share.weiyun.com/5dQTsov\"}[/down]\u003C/p>",{"cid":88,"title":89,"created":90,"type":48,"slug":91,"text":92,"authorId":6,"meta_name":14},9,"邮大侠– 验证电子邮件地址有效性!",1589267640,"9","\u003Cp>[scode]这是一个专业的免费的电子邮件验证平台可以让您验证电子邮件地址是否有效，格式是否正确，是否真的存在。[/scode]\u003Cbr>[scode]当邮箱列表存在大量不真实的邮箱时，你不仅浪费了发信量，增加大量的退信，还很容易被当作是在发送垃圾邮件。所以在发信之前有必要验证一下邮箱是否真实存在，以减少发信量和退信量，有效的提高工作效率。\u003C/p>\u003Cp>1.验证邮箱地址是否真实存在的工具，可以批量导入，批量验证。\u003Cbr>2.为您打造精准的客户邮箱数据库。\u003Cbr>3.为您过滤大量探针邮箱，降低您的发件箱进黑名单的几率\u003Cbr>4.本软件为绿色版，不需要安装，解压后直接使用。\u003Cbr>5.所有邮箱通用。[/scode]\u003Cbr>\u003Ca href=\"https://www.emailboss.cn/\">邮大侠官网\u003C/a>\u003Cbr>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2020/05/523147323.png\" alt=\"ydx.png\" title=\"ydx.png\">\u003C/p>",{"cid":94,"title":95,"created":96,"type":48,"slug":97,"text":98,"authorId":6,"meta_name":14},7,"Telegram 群成员采集/Telegram采集/Telegram监控",1587632820,"7","\u003Cp>\u003Cimg src=\"https://blog.teqiyi.com/admin/usr/uploads/2020/04/4198025983.png\" alt=\"tg.png\" title=\"tg.png\">\u003Cbr>[scode]Telegram 群成员采集器[/scode]\u003Cbr>[scode]无需加群，秒采集，telegram，tlelgram采集，tlelgram群采集，tlelgram群成员采集[/scode]\u003C/p>\u003Ch2>功能\u003C/h2>\u003Cul>\u003Cli>3分钟即可采集完毕10w人的群，一天轻轻松松采集几百万的活跃用户\u003C/li>\u003Cli>可采集所有成员详细信息（最后登录时间，最后发言时间，加群时间，唯一用户，username，First Name，Last Name）\u003C/li>\u003Cli>可保存 Excel，csv，txt，对接数据库\u003C/li>\u003C/ul>\u003Ch2>演示\u003C/h2>\u003Cul>\u003Cli>点击上面 视频观看采集过程（效率/3分钟采集10w）\u003Cbr>[down]{\"downName\":\"生成的文本\",\"downUrl\":\"https://pan.teqiyi.com/blog/20/04/boniu365com.csv\"}[/down]\u003C/li>\u003C/ul>\u003Ch2>联系方式\u003C/h2>\u003Cul>\u003Cli>Q/v：67/64/63   （去掉/）\u003C/li>\u003Cli>永久更新售后。\u003C/li>\u003Cli>加好友免费测试\u003C/li>\u003C/ul>",30]