当前位置: 首页 > article >正文

前端实习第四周小结

第四周(111.18-11.22)已经结束。

我发现自从上班之后,对周六日会更有期待和掌控感。

做想做的事情,在繁忙的工作和世俗中抽离出来,给自己慰藉,放松身心。


这周的事情不算多,前三天基本没有什么需求,所以也就忙自己的事情。

自己的事情

小程序的中英内容切换(100%)

自己动手做的大创小程序项目更新了一个功能:用baidu通用文本翻译API,实现了一个小程序中英文本内容切换。已整理在博客,感兴趣请在我主页进行浏览阅读

(以下是当前做的一个需求/逻辑整理)

流程:进入页面-当前详细数据获取-一个按钮(实现中英切换)-数据显示

细节:接口的发送请求优化(标识和本地存储)

问题:本地缓存,不止存储单个变量,用一个数组存储已请求(翻译)的文本内容。

用户进入页面的使用,先获取当前的中文文本内容,当用户点击按钮(中英切换),

判断本地缓存中有没有存储当前景点的文本内容=>唯一标识(id)

需要用一个对象数组进行存储数据,用数组方法find()进行判断

如果存在则从本地缓存中进行获取并且设置到页面的数据;

不存在则发送翻译请求并作对应处理。

(翻译请求标识设置为true,因为第一次进入页面的时候,标识为false)

(结果数据的本地存储)

(结果数据设置到页面变量数据)

优化:函数节流,设置函数在n秒内只执行一次。

// 节流函数
throttle(fn, limit) {
  let inThrottle;
  return function(...args) {
    if (!inThrottle) {
      fn.apply(this, args);
      inThrottle = true;
      setTimeout(() => {
        inThrottle = false;
      }, limit);
    }
  };
},

//为一个函数(如点击触发函数)添加“节流”
this.changeLanguage = this.throttle(this.changeLanguage.bind(this), 2000);

一些前端知识点记录。(分享几个知识点)

手动为dom元素添加事件
// EventListener.js
const EventListener = {
  listen(target, eventType, callback) {
    if (target.addEventListener) {
      target.addEventListener(eventType, callback, false)
      return {
        remove() {
          target.removeEventListener(eventType, callback, false)
        },
      }
      //较低版本的添加事件 .attachEvent
    } else if (target.attachEvent) {
      target.attachEvent('on' + eventType, callback)
      return {
        remove() {
          target.detachEvent('on' + eventType, callback)
        },
      }
    }
  },
}

export default EventListener
<template>
  <view>
    <button @click="handleClick" ref="myButton">Click Me</button>
  </view>
</template>

<script>
import EventListener from "../../utlis/EventListener";

export default {
  name: "EventButton",
  data() {
    return {
      removeListener: null, // 存储移除事件监听器的函数
    };
  },
  mounted() {
    // 为按钮添加点击事件监听器
    const button = this.$refs.myButton; // 获取按钮的引用
    this.removeListener = EventListener.listen(
      button,
      "click",
      this.handleClick
    );
  },
  beforeDestroy() {
    // 在组件销毁前移除事件监听器
    if (this.removeListener) {
      this.removeListener.remove();
    }
  },
  methods: {
    handleClick(event) {
      console.log("Button clicked!", event);
    },
  },
};
</script>

<style>
/* 你可以在这里添加一些样式 */
button {
  margin: 20px;
}
</style>
localStorage常用方法

1、length   本地存储数据的数量
2、key()    通过索引找到存储的数据
3、getItem()    通过键名取到本地存储的数据
4、setItem()    设置一个本地存储数据
5、removeItem() 删除一个本地存储数据
6、clear()      清空本地存储数据

     */
    console.dir(Storage);

    console.log(localStorage, sessionStorage);

    console.log(localStorage.length);

    localStorage.setItem('name', 'kaivon');
    localStorage.setItem('age', '18');
    localStorage.setItem('sex', 'male');
    localStorage.setItem('insterest', 'drink');

    var color = ["red", "green"];   //"red", "green"
    var color = { "c1": "red", "c2": "green" }  //[object Object]
    localStorage.setItem('color', JSON.stringify(color));
    console.log(JSON.parse(localStorage.getItem('color')));

    localStorage.removeItem('color');
    //localStorage.clear();
通过字符串方法获取url的第一个查询参数(这里是session_id)
// 假设这是你的URL
const url = 'http://example.com/page?session_id=12345&other_param=value#anchor'

// 定义一个函数,用于从URL中提取名为session_id的查询参数的值
function extractSessionId(url) {
  // 查找问号的位置,获取查询字符串
  const queryString = url.substring(url.indexOf('?') + 1)
  console.log('查询字符串', queryString)

  // 分割查询字符串获取第一个参数对
  const firstParamPair = queryString.split('&')[0]
  console.log('获取第一个参数对', firstParamPair)

  // 分割参数对获取session_id的值
  const sessionId = firstParamPair.split('=')[1].split('#')[0]

  return sessionId
}

// 调用函数并打印结果
const sessionId = extractSessionId(url)
console.log('The session_id is:', sessionId)
片段标识符
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>片段标识符示例</title>
<style>
  .section {
    height: 1000px; /* 为了演示滚动效果,设置高度 */
    margin-top: 50px;
  }
  #section1 { background-color: #f0f0f0; }
  #section2 { background-color: #d0d0d0; }
  #section3 { background-color: #b0b0b0; }
</style>
</head>
<body>

<h1>点击链接跳转到不同部分</h1>
<a href="#section1">跳转到部分1</a><br>
<a href="#section2">跳转到部分2</a><br>
<a href="#section3">跳转到部分3</a><br>

<div id="section1" class="section">
  <h2>部分1</h2>
  <p>这是第一部分内容。</p>
</div>

<div id="section2" class="section">
  <h2>部分2</h2>
  <p>这是第二部分内容。</p>
</div>

<div id="section3" class="section">
  <h2>部分3</h2>
  <p>这是第三部分内容。</p>
</div>

<script>
  // 当页面加载完成或者URL中的片段标识符改变时触发
  window.addEventListener('hashchange', scrollToSection);
  window.addEventListener('load', scrollToSection);

  function scrollToSection() {
    const hash = window.location.hash;
    if (hash) {
      const element = document.querySelector(hash);
      if (element) {
        element.scrollIntoView({ behavior: 'smooth' });
      }
    }
  }
</script>

</body>
</html>
 sku商品组件使用

【开箱即用】商品多规格sku选择器组件豪华独立版【业务型数据驱动式组件】支持vue3 - DCloud 插件市场


react需求

接着到周四的时候,我领导给我一个需求-搭建一个react静态页面,特别和我强调了组件的复用性(比如列表,表单组件等)。

在此之前,我基本上是了解和接触vue、微信小程序、uniapp较多。

不太习惯用react,对于代码量少的程序,几十行到两三百行代码,也许用得挺香的,页面(html)和逻辑(js部分)写在一起,紧凑方便。

但是一旦代码量多了,那么会造成代码的不美观以及难以维护(仅是个人观点。。)

尽管不熟悉,但是领导交代的任务必须得完成啊,硬着头皮上呗。

我当时做的需求分析,这里建议大家养成一个记录和总结的好习惯,整理思路,查漏补缺,对于开发来说特别实用,也是记录你都实实在在做过了哪些东西,有领导问,你也可以轻松对答如流,岂不美哉?

 关于react,实在练得比较少,我暂时就不给出案例和心得体会了,先沉淀学一下,后端再来补充和总结吧。


暂时更新到这里吧,后续再补充整理一些文章内容。

如果你喜欢这篇文章,可以点赞、收藏。

关注我,获取更多前端知识和分享。


http://www.kler.cn/a/407985.html

相关文章:

  • Spring Boot 和 Spring Cloud 微服务开发实践详解
  • 反向代理模块开发
  • 【linux】(17)压缩和解压
  • 基于Qwen-Agent框架的Function Call及ReAct方式调用自定义工具
  • pytorch官方FasterRCNN代码详解
  • 如何利用 Puppeteer 的 Evaluate 函数操作网页数据
  • 开源代码统计工具cloc的简单使用
  • 哈夫曼树:数据压缩的核心算法及实现
  • (附项目源码)Java开发语言,220 ssm电影推荐系统的分析与设计,计算机毕设程序开发+文案(LW+PPT)
  • 超文本传输协议(HTTP)与超文本传输安全协议(HTTPS)
  • 全志T113双核异构处理器的使用基于Tina Linux5.0——异构双核通信验证
  • 【探寻密码的奥秘】-000:密码相关概念定义及介绍(持续更新~~)
  • JVM垃圾回收详解.②
  • 【微蓝课堂】机器人编程|树莓派系列|13-从零开始编写TM1637驱动程序
  • 蓝桥杯疑似例题解答方案(打印任意阶杨辉三角)
  • ubuntu 交叉编译arm架构的mysql
  • php常用伪协议整理
  • 从〇开始深度学习(0)——背景知识与环境配置
  • Spring框架深度剖析:特性、安全与优化
  • [代码随想录Day21打卡] 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇