<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[菜鸡奋斗ing的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u012138137</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012138137]]></copyright><item><title><![CDATA[阿里云 2 核 2G 服务器搭建 AI 知识库：从 0 到可用（附踩坑实录）]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/163812580</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/163812580</guid><author>u012138137</author><pubDate>Mon, 17 Aug 2026 09:23:14 +0800</pubDate><description><![CDATA[本文详细记录了在2核2G内存的阿里云服务器上搭建本地AI知识库的全过程。作者选用"Ollama + Open WebUI"方案，通过本地大模型、嵌入模型和向量检索实现知识库功能。针对服务器配置限制，推荐使用Qwen2.5-0.5B等量化模型，并详细解决了国内服务器下载模型时的TLS超时问题，提供了从ModelScope和HF-Mirror下载GGUF文件的多种方法。文章还包含手动导入模型、创建交换分区、部署WebUI等关键步骤，特别强调了在低配环境下的优化技巧和常见问题解决方案。整个搭建过程兼顾了技术深度和]]></description><category></category></item><item><title><![CDATA[vue前端通过sessionStorage缓存字典]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/140102739</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/140102739</guid><author>u012138137</author><pubDate>Mon, 01 Jul 2024 16:08:04 +0800</pubDate><description><![CDATA[通过后端获取字典，保存在前端session中，如果session有则使用，不存在的则调接口获取并增加字典过期时间]]></description><category></category></item><item><title><![CDATA[vue2实现浏览器大小变动页面缩放功能]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/130572929</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/130572929</guid><author>u012138137</author><pubDate>Tue, 09 May 2023 09:45:41 +0800</pubDate><description><![CDATA[在页面html部分获取元素对象（这个一般设置在页面div的第二层）。4.页面具体内容的宽高最好设置。这样按比例的属性会导致在不同分辨率下的排版出现问题（比如1920跟1366）。需要实现根据浏览器大小变化从而页面内容同样缩放思想实现：1.使用css中的。监听方法，监听尺寸变化从而调用缩放相关方法。这样的具体属性，如果设置。获取操作应该也是一样的。]]></description><category></category></item><item><title><![CDATA[vue3以及vue2自定义封装v-model]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/127915727</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/127915727</guid><author>u012138137</author><pubDate>Fri, 18 Nov 2022 09:43:37 +0800</pubDate><description><![CDATA[在v2的时候，默认的prop字段是value，emit触发的名称是input，对于其他非输入框的例如checkbox的prop应该是checked，emit触发的名称应该是change。这些prop跟emit对应的用于原生组件使用。v3则由默认的value改成modelValue，并且emit触发的名称由input改成update。并且允许加上修饰符(绑定自己定义的属性名称)，例如:emit(‘update:values’, e)；因此v3可以绑定多个属性为双向绑定。v2通过 原生组件@input事件得到的]]></description><category></category></item><item><title><![CDATA[express+mockjs+axios实现简单的vue3.x获取分页模拟数据]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/123105738</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/123105738</guid><author>u012138137</author><pubDate>Thu, 24 Feb 2022 10:48:43 +0800</pubDate><description><![CDATA[想为了提升开发效率，基于接口文档已确定，前端可以模拟后端数据接口返回一些mock数据从而达到同步开发。
使用到的框架依赖：

express
mockjs
body-parser
@vue/cli到4.x脚手架就够了，5.x的看个人需求
axios
element-plus

我这边是分两个项目分别搭建服务器跟前端（都在同一台电脑上），使用vue脚手架创建项目，并安装axios,element-plus依赖。使用npm init在空文件中初始化服务器项目，并安装express,mockjs,body-par]]></description><category></category></item><item><title><![CDATA[记录vue+elementui 动态添加输入选择框并增加校验]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/122603512</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/122603512</guid><author>u012138137</author><pubDate>Thu, 20 Jan 2022 16:45:54 +0800</pubDate><description><![CDATA[一个新的需求，需要动态添加选择条件，虽然可以实现了，但是在校验提示部分感觉欠佳，直接通过$message 的方式提示不够友好，最后通过网上示例完善校验，对部分几个点做个人总结。

实现思路：
1.由于vue是通过数据驱动展示页面内容，那么可以通过“添加条件”按钮往一个数组中添加对象，然后在下面展示区for循环遍历数组，从而动态生成输入表单。
2.已经完成了动态生成输入框/选择框。那么就是怎么加校验了。注意点来了，该循环的数组对象一点是要在这个form表单绑定的对象中才行:model="dialogForm"]]></description><category></category></item><item><title><![CDATA[vue for循环图片加载异常显示默认图片]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/119874632</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/119874632</guid><author>u012138137</author><pubDate>Mon, 23 Aug 2021 18:04:05 +0800</pubDate><description><![CDATA[&lt;el-row &gt;
            &lt;el-col :sm="6" :md="4" v-for="(o,index) in tableData" :key="o.id" style="padding:20px"&gt;
              &lt;el-tooltip effect="dark" :offset="0" placement="top"&gt; 
                  &lt;div slot="content"&gt;访问地址:{{o.visi]]></description><category></category></item><item><title><![CDATA[vue 左侧导航右侧内容互定位]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/119762558</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/119762558</guid><author>u012138137</author><pubDate>Tue, 17 Aug 2021 18:27:01 +0800</pubDate><description><![CDATA[1.需求：点击左侧导航，右侧内容定位到指定位置。右侧数据内容滚动，左侧导航对应定位颜色。同时左侧导航复选框选中时，右侧内容位置对应选中。
部分代码通过百度网上查到，抄抄改改。
2.实现思路：左侧用 ul li 实现导航效果，从左侧导航到右侧内容定位可以用锚点方式。我这边左侧用 click点击事件，
&lt;div style="width:100%;height:500px;overflow:auto"&gt;
&lt;div class="left-menu"&gt;
          &lt;ul .]]></description><category></category></item><item><title><![CDATA[el-tree支持类似懒加载效果及其多选回填功能]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/115733490</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/115733490</guid><author>u012138137</author><pubDate>Thu, 15 Apr 2021 18:44:25 +0800</pubDate><description><![CDATA[需求来源：组织机构树的数据太多全一次性加载树数据会导致页面卡死或崩溃（比如组织机构树有十万条而且有十级层级）
原先是想用官方懒加载功能，但是用时发现取不到树的data属性值，也就是树数据源。导致没办法回填勾选树节点。也取不到树数据做些其他操作。
后续觉得可以自己根据已有根节点加载出响应的下级子节点。这样就相当于懒加载了。
实现思路：1，页面初始化时调接口后端返回根节点数据。2，点击节点时后端根据节点Id 返回当前节点及其下层子节点数据(children)属性数据。3. 迭代当前树数据，判断当前点击的节点id]]></description><category></category></item><item><title><![CDATA[el-tree只能勾选已选同层]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/114291794</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/114291794</guid><author>u012138137</author><pubDate>Tue, 02 Mar 2021 19:05:38 +0800</pubDate><description><![CDATA[最近有个需求，树结构选项，如果有已勾选节点了，后续只能勾选同一层级节点数据。
感觉可以记录下。
实现思路：
1.同一层级的上一节点(父节点)肯定是相同的。所以判断当前勾选的节点的父节点是否相同
2.如果没有已选节点则可以随意勾选节点
&lt;el-tree check-strictly show-checkbox ref="orgTreeRef" node-key="dataId" @check-change="orgNodeChange" :data="orgTree" accordion&gt;&lt;]]></description><category></category></item><item><title><![CDATA[el-table手动操作行间上下排序]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/109805691</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/109805691</guid><author>u012138137</author><pubDate>Thu, 19 Nov 2020 11:38:48 +0800</pubDate><description><![CDATA[表格排序，有的是索引排序，有的是要通过字段排序，以便后端返回时能根据上次调整的排序内容进行返回。
&lt;el-row&gt;
                &lt;el-col :span="24"&gt;
                  &lt;el-form-item label="命令列表："&gt;
                    &lt;el-button type="primary" :disabled="oper === 'detail'" @click="openCmdLis]]></description><category></category></item><item><title><![CDATA[vue+axios使用crypto-js对参数加密]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/108004980</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/108004980</guid><author>u012138137</author><pubDate>Fri, 14 Aug 2020 15:24:53 +0800</pubDate><description><![CDATA[在前后端分离的项目中有的需要提高安全性，会要求对请求参数进行加密。
目前已使用的是对称加密，非对称加密需要网上找非对称加密方式把对称加密的修改应该就差不多。
实现思路：在项目中安装引入crypto-js 依赖，然后写个加密方法，如果有区分get跟post两种请求方式那就写两个加密方法。最后在axios请求拦截方法中调用即可。
1.安装引入crypto-js。 npm install crypto-js -D
2.在项目中新建一个加密文件,比如：cryptoFun.js
3,在文件中引入加密插件
import]]></description><category></category></item><item><title><![CDATA[vue+elementui实现el-table动态添加行数据]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/107761278</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/107761278</guid><author>u012138137</author><pubDate>Mon, 03 Aug 2020 13:24:26 +0800</pubDate><description><![CDATA[思路：
1.不管新增还是编辑都要有添加可编辑的输入行，所以在打开新增或者编辑的弹框或者页面中就要先push一个对象到table数据对象中。
2.要区分我添加的行跟已完成的行。我这边定义的对象中通过设置start为0或者1的值来区分。当行中的start值为0说明是新增可编辑行，否则视为已完成的数据行
3. 通过点击添加按钮把当前行的数据中的start值设置成1并且通过splice添加到数组后面中，再把table数组最后一个对象设置成空，start值改回为0；
let tempRow = JSON.parse(]]></description><category></category></item><item><title><![CDATA[正则表达式-后续持续更新]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/105629009</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/105629009</guid><author>u012138137</author><pubDate>Mon, 20 Apr 2020 10:59:50 +0800</pubDate><description><![CDATA[匹配表达式供参考学习使用。大家有不同的或者觉得有问题的欢迎修改更正(有从网络收集，没全验证)供参考、供参考、供参考
//匹配特殊字符
 var re = /[`~!@#$%^&amp;*()_\-+=&lt;&gt;?:"{}|,./;'\·~！@#￥%……&amp;*（）——\-+={}|《》？：“”【】、；‘’，。、]/g;
 //匹配中文范围
 var re2 = /[\u4E00-\u9F...]]></description><category></category></item><item><title><![CDATA[vue使用less完成循环排版css鼠标移入图标缩放显示文字效果]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/105565940</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/105565940</guid><author>u012138137</author><pubDate>Thu, 16 Apr 2020 20:26:55 +0800</pubDate><description><![CDATA[做前端css小小的花里胡哨还是要会一点，一些主要注意的说明直接在代码中注释说明
&lt;template&gt;
&lt;div class="page"&gt;
    &lt;div id="card"&gt;
        &lt;el-row class="row-style"&gt;
            &lt;span &gt;资源统计&lt;/span&gt;
        ...]]></description><category></category></item><item><title><![CDATA[js axios文件流下载]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/105241526</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/105241526</guid><author>u012138137</author><pubDate>Wed, 01 Apr 2020 11:27:26 +0800</pubDate><description><![CDATA[downTemplate: function(id) {
      // partyAccountRole.vue页面
      this.$message.info("正在下载,请稍等");
      let params = {
        id: id
      };
      // let param ={"templeType":this.updateParams.temp...]]></description><category></category></item><item><title><![CDATA[el-tree 动态设置展开的层数]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/105142645</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/105142645</guid><author>u012138137</author><pubDate>Fri, 27 Mar 2020 15:53:06 +0800</pubDate><description><![CDATA[最近有要求觉得默认全展开或者默认都不展开树感觉不是很好，所以要求有的树展示默认展示两层或者三层，可以动态配置
思路步骤：
1.主要还是要动态设置这个属性赋值
:default-expanded-keys=“dataIdArr”
2.要想得到对应层的node-key 就要迭代遍历整个树。
3，每迭代一次就说明需要展示的层数就多一层，那就说明只要判断当前的层数是否等于自己设置的层数时就差不多了。
主要...]]></description><category></category></item><item><title><![CDATA[关于记住密码功能IE不生效问题]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/103908701</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/103908701</guid><author>u012138137</author><pubDate>Thu, 09 Jan 2020 15:14:28 +0800</pubDate><description><![CDATA[cookie的设置：添加，获取，删除
//设置cookie
      setCookie(name, value, day) {
        var date = new Date();
        date.setDate(date.getDate() + day);
        //value=md5(value);
        document.cookie = name ...]]></description><category></category></item><item><title><![CDATA[vue+elementui 实现动态必填表单项操作]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/103661557</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/103661557</guid><author>u012138137</author><pubDate>Mon, 23 Dec 2019 10:53:00 +0800</pubDate><description><![CDATA[实现表单项动态必填功能，目前看到方法有两种
1.在必填的el-form-item 写两个一样的，一个有rules一个没，然后用v-if去动态判断
2.现在要说的是方法2，大部分网上看的都是用方法一的方式，而且基本都copy的文章
1）首先在data()数据定义中先定义个布尔值
isIpv4:true, //是否是必填项

2)在html页面部分写动态的rules

&lt;el-form-item...]]></description><category></category></item><item><title><![CDATA[vue+elementui+vuex+sessionStorage实现历史标签菜单]]></title><link>https://blog.youkuaiyun.com/u012138137/article/details/103344305</link><guid>https://blog.youkuaiyun.com/u012138137/article/details/103344305</guid><author>u012138137</author><pubDate>Mon, 02 Dec 2019 11:35:37 +0800</pubDate><description><![CDATA[一般是有左侧菜单后，然后要在页面上部分添加历史标签菜单需求。
借鉴其他项目，以及网上功能加以组合调整实现
按照标签实现方式步骤来（大致思路）：
1，写一个tagNav标签组件
2，在路由文件上每个路由组件都添加meta属性 meta:{title:'组件中文名'}
3，在store的mutation.js文件中写标签的添加/删除方法以及在方法中更新sessionStorage数据
4，在主页面上添...]]></description><category></category></item></channel></rss>