<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xjf106的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xjf106</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xjf106]]></copyright><item><title><![CDATA[uniapp ＜textarea＞组件的踩坑]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/131968518</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/131968518</guid><author>xjf106</author><pubDate>Thu, 27 Jul 2023 20:58:45 +0800</pubDate><description><![CDATA[解决办法：把封装成基础组件，dom元素切换时，通过v-if显示隐藏，触发组件onMounted，延迟auto-height赋值。官方人员解释：textarea 的 auto-height 必须要在屏才能计算高度，先展示再赋值。2、使用auto-height属性，安卓真机上，会导致高度异常，1、ios真机上，输入时会触发页面其他点击事件。解决方法：把封装成基础组件，绕过这个bug。]]></description><category></category></item><item><title><![CDATA[vue服务端渲染ssr的初步实现]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/129844060</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/129844060</guid><author>xjf106</author><pubDate>Wed, 29 Mar 2023 22:17:18 +0800</pubDate><description><![CDATA[vue服务端渲染ssr的实现过程]]></description><category></category></item><item><title><![CDATA[vue3：pinia+持久化使用]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/127341782</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/127341782</guid><author>xjf106</author><pubDate>Sat, 15 Oct 2022 22:41:05 +0800</pubDate><description><![CDATA[vue3：pinia+持久化使用]]></description><category></category></item><item><title><![CDATA[js .forEach使用async、await注意事项]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/126105789</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/126105789</guid><author>xjf106</author><pubDate>Mon, 01 Aug 2022 17:23:15 +0800</pubDate><description><![CDATA[.forEach使用async、await注意事项]]></description><category></category></item><item><title><![CDATA[vue.config.js基本配置]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/120021801</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/120021801</guid><author>xjf106</author><pubDate>Tue, 31 Aug 2021 16:53:50 +0800</pubDate><description><![CDATA[const webpack = require("webpack");
// const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

const isPro = process.env.NODE_ENV === "production" ? true : false;

module.exports = {
  publicPath: "/", // 部署应用时的根路径(默认'/'),也可用相对路径(存在使用限制)
  outputDir: "d]]></description><category></category></item><item><title><![CDATA[VSCode 快速生成html代码片段]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/119419864</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/119419864</guid><author>xjf106</author><pubDate>Thu, 05 Aug 2021 15:48:36 +0800</pubDate><description><![CDATA["!": {
    "prefix": "!", // 触发的关键字 输入!按下tab键
    "body": [
      "&lt;!DOCTYPE html&gt;",
      "&lt;html lang=\"en\"&gt;",
      "&lt;head&gt;",
      "&lt;meta charset=\"UTF-8\"&gt;",
      "&lt;meta name=\"viewport\" content=\"width=device-width, initi]]></description><category></category></item><item><title><![CDATA[vue-router的addRoutes()和addRoute()的使用问题]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/116642771</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/116642771</guid><author>xjf106</author><pubDate>Tue, 11 May 2021 10:07:22 +0800</pubDate><description><![CDATA[注意：router.addRoutes已废弃：使用 router.addRoute() 代替。
addRoutes的使用方法:
router.addRoutes(newRoutes)

addRoute的使用方法:
for (let x of newRoutes) {
  router.addRoute(x)
}

官方的解释是 router.addRoute 接受的是一个路由规则，也就是一个对象，或者接受一个字符串和一个对象。

...]]></description><category></category></item><item><title><![CDATA[微信小程序—在线预览二进制流文件]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/115306529</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/115306529</guid><author>xjf106</author><pubDate>Mon, 29 Mar 2021 17:20:51 +0800</pubDate><description><![CDATA[// 请求 下载预约表格 接口
  exportExcel (e) {
    let that = this
    let id = that.getPageOptions().id
    let fileName = `【${that.data.holderInfo.nameC}】 ${that.data.bookingInfo.area}-${that.data.productInfo.company}-${that.data.productInfo.plan}`
    wx.showLoadi]]></description><category></category></item><item><title><![CDATA[小程序swiper高度自适应]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/110948074</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/110948074</guid><author>xjf106</author><pubDate>Thu, 10 Dec 2020 10:49:45 +0800</pubDate><description><![CDATA[1、wxml部分
&lt;block wx:for="{{list}}" wx:key="index"&gt;
  &lt;view class="list-item-m" style="height: {{imgheights[index]}}rpx"&gt;
    &lt;!-- 轮播图 S --&gt;
    &lt;swiper data-idx="{{index}}" bindchange="swiperChangeEv" style="height: {{imgheights[index]}]]></description><category></category></item><item><title><![CDATA[小程序输入框导致页面整体上移，在获得焦点时固定住页面的解决办法]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/110825500</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/110825500</guid><author>xjf106</author><pubDate>Mon, 07 Dec 2020 19:26:16 +0800</pubDate><description><![CDATA[1、输入框组件设置 adjust-position="{{false}}"
2、输入框容器fixed定位，style="bottom: {{bottom}}px"
3、如下
// 监听input获取焦点
  onFocus (e) {
    let that = this
    that.setData({
      bottom: e.detail.height
    })
  },
  // 监听input失去焦点
  onBlur (e) {
    let that = this
    t]]></description><category></category></item><item><title><![CDATA[关于小程序输入框文字回车符提交后，返回的数据换行问题]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/108465249</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/108465249</guid><author>xjf106</author><pubDate>Tue, 08 Sep 2020 11:26:01 +0800</pubDate><description><![CDATA[let str = "哈哈哈哈↵测试测试";
str = str.replace(/↵/g,"\n");

&lt;text&gt;{{str}}&lt;/text&gt;

tips：str需要在 &lt;text&gt; 标签里

]]></description><category></category></item><item><title><![CDATA[检查小程序版本更新]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/108400851</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/108400851</guid><author>xjf106</author><pubDate>Fri, 04 Sep 2020 11:22:23 +0800</pubDate><description><![CDATA[在app.js里添加以下代码：
// 检查小程序版本更新
  checkNewVersion: function () { // 检查版本更新
    // 获取小程序更新机制兼容
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      updateManager.onCheckForUpdate(function (res) {
        // 请求完新版本信息]]></description><category></category></item><item><title><![CDATA[vue动态添加权限路由]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/108195857</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/108195857</guid><author>xjf106</author><pubDate>Mon, 24 Aug 2020 14:01:11 +0800</pubDate><description><![CDATA[在做后台系统时一般都会涉及到菜单权限控制的问题，这里的处理是根据后端返回的权限表，生成动态路由来控制权限，话不多说，上代码。

]]></description><category></category></item><item><title><![CDATA[Base64 转化成 File]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107836191</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107836191</guid><author>xjf106</author><pubDate>Thu, 06 Aug 2020 11:49:48 +0800</pubDate><description><![CDATA[// Base64 转化成 File
dataURLtoFile (dataurl, filename) {
let arr = dataurl.split(’,’)
let mime = arr[0].match(/????.*?);/)[1]
let bstr = atob(arr[1])
let n = bstr.length
let u8arr = new Uint8Array(n)
while (n–) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Fi]]></description><category></category></item><item><title><![CDATA[el-form表单验证根据接口返回错误信息]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107835503</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107835503</guid><author>xjf106</author><pubDate>Thu, 06 Aug 2020 11:27:25 +0800</pubDate><description><![CDATA[使用error属性绑定值，在接口函数回调里处理提示信息

]]></description><category></category></item><item><title><![CDATA[element-ui实现多级树形结构+复选框表格]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107806797</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107806797</guid><author>xjf106</author><pubDate>Wed, 05 Aug 2020 09:17:44 +0800</pubDate><description><![CDATA[效果如下图：

代码如下：
&lt;template&gt;
  &lt;div class="role-details inside-base"&gt;
    &lt;div class="inside-base-main clearfix"&gt;
      &lt;!-- 中间内容 --&gt;
      &lt;div class="inside-base-cont"&gt;
        &lt;div class="role-cont clearfix"&gt;
          &l]]></description><category></category></item><item><title><![CDATA[$.ajax下载流文件]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107462959</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107462959</guid><author>xjf106</author><pubDate>Mon, 20 Jul 2020 14:32:16 +0800</pubDate><description><![CDATA[&lt;body&gt;
&lt;div class="wrap"&gt;
  &lt;div&gt;
    &lt;p&gt;agent_id:&lt;/p&gt;
    &lt;input type="text" value="" id="agentId"&gt;

    &lt;p&gt;token:&lt;/p&gt;
    &lt;input type="text" value="" id="token"&gt;
  &lt;/div&gt;

  &lt;a href="javascri]]></description><category></category></item><item><title><![CDATA[WebSocketTest]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107462657</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107462657</guid><author>xjf106</author><pubDate>Mon, 20 Jul 2020 14:20:39 +0800</pubDate><description><![CDATA[function WebSocketTest () {
	var webSocket = null;
	//判断当前浏览器是否支持WebSocket
	if ("WebSocket" in window) {
		alert("您的浏览器支持 WebSocket!");

		// 打开一个 web socket
		var webSocket = new WebSocket("ws://localhost:9998/echo");

		//连接发生错误的回调方法
		webSocket.onerror ]]></description><category></category></item><item><title><![CDATA[微信小程序--实现下载预览文件并分享]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107364103</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107364103</guid><author>xjf106</author><pubDate>Wed, 15 Jul 2020 16:25:04 +0800</pubDate><description><![CDATA[转发：https://developers.weixin.qq.com/community/develop/doc/000e44edfbc438456baad9d895e400

]]></description><category></category></item><item><title><![CDATA[微信小程序分享文件给好友]]></title><link>https://blog.youkuaiyun.com/xjf106/article/details/107186441</link><guid>https://blog.youkuaiyun.com/xjf106/article/details/107186441</guid><author>xjf106</author><pubDate>Tue, 07 Jul 2020 17:49:20 +0800</pubDate><description><![CDATA[1、wxml代码
&lt;button class="download" bindtap="openFileEv"&gt;打开文件&lt;/button&gt;

2、js代码
// 打开文件
  openFileEv () {
    wx.downloadFile({
      url: 'https://download.com/file/xxx.xlsx', // 并非真实链接
      success: function (res) {
        const filePath = res]]></description><category></category></item></channel></rss>