阅读视图

发现新文章,点击刷新页面。

Trae实现的前端路线象限图

前言

你是否还在找前端学习图,来看看我整理的这份图吧,前端学习路线图,从入门到进阶,一网打尽!再也不用担心找不到前端学习路线了!

我决定使用象限图来展示前端学习路线图,因为象限图可以更好地展示前端学习路线的广度和深度。那么怎么做这个象限图呢?那当然是使用Trae,看看Trae的象限图效果吧!

向Trae提问

image-20250904190409616

前端学习路线图

象限图分为四部分,分别是:

  • 现在·高价值:React + Hooks、TypeScript、工程化(Vite/ESBuild)、性能与稳定性、监控与埋点、数据可视化、可访问性/国际化。理由:对求职即时增益最大,也是大中型前端项目的通用基座。
  • 现在·低价值:IE Hack、jQuery 细节、老旧脚手架的深度技能。理由:生态已淡出主流,不建议投入大量时间。
  • 未来·高价值:WebGPU、WASM/Rust、边缘渲染/SSR、前端侧 AI、CRDT/实时协作、微前端2.0/模块联邦、PWA。理由:面向前端能力边界和业务形态演进,适合中长期投入。
  • 未来·低价值:小众 CSS 魔法、重复性样式搬砖。理由:投入产出比低,适合点到为止。

悬浮上去即可看到每一点的具体内容 image-20250904190217788image-20250904190934132

image-20250904190939850

Trae关键代码解析

  • 高 DPI 适配(一次性设置坐标变换,消除模糊)
const dpr = Math.max(1, Math.floor
(window.devicePixelRatio || 1));
canvas.width = rect.width * dpr; 
canvas.height = rect.height * dpr;
canvas.style.width = rect.width+'px'; 
canvas.style.height = rect.height
+'px';
ctx.setTransform(dpr,0,0,dpr,0,0); // 
HiDPI 一次性缩放
  • 归一化坐标到像素映射(统一入口,确保布局与交互一致)
const pad = {l:80, r:60, t:60, b:64};
function map(p){
  const w = canvas.clientWidth, h = 
  canvas.clientHeight;
  const x0 = pad.l, y0 = pad.t, cw = 
  w - pad.l - pad.r, ch = h - pad.t - 
  pad.b;
  return {x: x0 + p.x * cw, y: y0 + p.
  y * ch, x0, y0, cw, ch, w, h};
}
  • 绘制网格、中线与象限标题(一次 path,减少状态切换)
const {x0,y0,cw,ch} = map({x:0,y:0});
ctx.fillStyle = '#161b3d'; ctx.
fillRect(x0,y0,cw,ch);
ctx.strokeStyle = '#8fa3ff33'; ctx.
lineWidth = 1;
ctx.strokeRect(x0+.5,y0+.5,cw-1,ch-1);
ctx.beginPath();
ctx.moveTo(x0+cw/2+.5, y0); ctx.lineTo
(x0+cw/2+.5, y0+ch);
ctx.moveTo(x0, y0+ch/2+.5); ctx.lineTo
(x0+cw, y0+ch/2+.5);
ctx.stroke();
  • 技能点数据与绘制(归一化数据驱动,可随时增删)
const skills = [  {name:'React + Hooks', x:.86, y:.  10, color:'var(--nowHi)'},  {name:'WebGPU', x:.88, y:.74,   color:'var(--futureHi)'},  {name:'jQuery 细节', x:.22, y:.10,   color:'var(--low)'},  // ...];
for(const p of skills){ const {x,y} = 
map(p); drawPoint(x,y,p.color); }
  • 悬停命中与气泡提示(简单半径检测,轻量无依赖)
canvas.addEventListener('mousemove', 
(e)=>{
  const rect = canvas.
  getBoundingClientRect();
  const mx = e.clientX - rect.left, 
  my = e.clientY - rect.top;
  let found = -1;
  for(let i=0;i<skills.length;i++){
    const {x0,y0,cw,ch} = map({x:0,
    y:0});
    const cx = x0 + skills[i].x*cw, 
    cy = y0 + skills[i].y*ch;
    if((mx-cx)*(mx-cx)+(my-cy)*
    (my-cy) <= 64){ found=i
    break; } // 命中半径 8
  }
  if(found>=0){ showTip(mx,my,skills
  [found]); } else { hideTip(); }
});

为什么Trae要用 Canvas 而非 DOM/SVG

  • 自绘坐标体系,在 HiDPI 下保持锐利;大量点/实时交互时更稳定高效。
  • 渲染逻辑集中、无额外布局计算,易于扩展(拖拽、缩放、区域选择都可按统一坐标处理)。

这个象限的路线图,如何定制你的专属路线

  • 直接在 skills 数组中增删或移动点(修改 x/y 即可),颜色规范 nowHi/futureHi/low 已预设。
  • 可为每个点扩展字段如 “学习资源链接、目标周数、前置技能”,在 showTip 中拼接展示。

总结

象限图是极好的可视化工具,但需注意:

  1. 每个象限的划分标准,需结合个人情况。
  2. 每个象限的技能点,需结合个人情况。

这次Trae的表现可圈可点,但是也有一些不足的地方,比如:Trae绘制象限图,内容不是适合每个人,需要根据自己的实际情况来定制。

快来试试Trae的象限图,看看你适合哪个象限,然后说出的想法,让Trae定制你的专属路线吧!

Trae实现动漫人物眼睛跟随鼠标移动的登录页面

前言

你是否看到一个登录页面,它的背景是一个充满活力的动漫人物,她的眼睛会跟随你的鼠标移动,仿佛在注视着你。

这个页面不仅美观,而且富有互动性,让人眼前一亮。那么,这个页面是如何实现的呢?让我们一起来探讨一下。

在这个看似简单的登录页面背后,隐藏着前端技术的精妙运用。通过纯CSS和原生JavaScript,我们创造了一个具有生命力的动漫人物,她的眼睛能够实时追踪鼠标移动,为冰冷的登录界面注入了灵魂。

我们给Trae 简单的提示,看看Trae能不能实现这个效果。 等待几分钟之后,Trae 生成的效果

动漫任务向右下角看的效果 image-20250903183916722 动漫任务向左下角看的效果 image-20250903183922320 动漫任务向上看的效果 image-20250903183929032

Trae核心代码解读

鼠标跟随动画的实现原理非常简单,就是通过监听鼠标移动事件,获取鼠标的坐标,然后根据坐标计算出眼睛的位置,最后将眼睛的位置应用到页面上。

眼睛跟随鼠标的核心算法,主要是使用了三角函数来计算角度和距离,然后根据角度和距离来计算瞳孔的位置。

document.addEventListener('mousemove', (e) => {
    const eyes = document.querySelectorAll('.eye');

    eyes.forEach(eye => {
        const pupil = eye.querySelector('.pupil');
        const eyeRect = eye.getBoundingClientRect();
        
        // 计算眼睛中心点坐标
        const eyeCenterX = eyeRect.left + eyeRect.width / 2;
        const eyeCenterY = eyeRect.top + eyeRect.height / 2;
        
        // 使用三角函数计算角度和距离
        const angle = Math.atan2(e.clientY - eyeCenterY, e.clientX - eyeCenterX);
        const maxDistance = 8; // 限制瞳孔移动范围
        const distance = Math.min(maxDistance, Math.hypot(e.clientX - eyeCenterX, e.clientY - eyeCenterY) / 5);
        
        // 计算瞳孔新位置
        const pupilX = Math.cos(angle) * distance;
        const pupilY = Math.sin(angle) * distance;
        
        // 应用平滑变换
        pupil.style.transform = `translate(calc(-50% + ${pupilX}px), calc(-50% + ${pupilY}px))`;
    });
});

毛玻璃效果,主要是使用了CSS的backdrop-filter属性来实现。让登录表单的背景模糊,从而让表单上面的动漫人物更加生动形象。

.login-container {
    background: rgba(255, 255, 255, 0.1);
    backdrop-filter: blur(10px);
    border-radius: 20px;
    box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
    border: 1px solid rgba(255, 255, 255, 0.18);
}

表单提交处理,这里Trae只是简单的模拟登录成功,实际项目中需要根据项目的需求来处理表单提交,比如发送请求到后端,验证用户信息,等等。

document.querySelector('form').addEventListener('submit', (e) => {
    e.preventDefault();
    const username = document.getElementById('username').value;
    const password = document.getElementById('password').value;

    if (username && password) {
        // 模拟登录成功
        alert('登录成功!欢迎 ' + username);
    } else {
        alert('请填写完整信息');
    }
});

实现这个效果的意义

传统的登录页面往往冰冷机械,而Trae AI创造的动漫人物登录界面,标志着人机交互从功能性向情感化的重大转变。当用户看到动漫人物的眼睛随着鼠标移动而转动时,会产生一种被关注和理解的感觉,这种微妙的心理效应能够显著提升用户体验。

总结

通过结合CSS动画、JavaScript事件处理和毛玻璃效果,我们实现了一个具有动态交互和视觉吸引力的动漫人物登录界面。这不仅增加了页面的趣味性,也提升了用户的参与度和满意度。

Trae的表现也是值得称赞的,他通过精心设计的动画和视觉效果,成功地将动漫人物与登录功能结合,创造出了一种全新的用户体验,虽然个别网站已经实现了,但是作为前端无需在自己找代码,或者自己手搓,Trae AI 已经帮我们实现了,我们只需要简单的替换或者是修改,就可以把这个效果融入到我们的项目里面,快点来试试Trae,帮你实现这个眼睛跟随鼠标移动的效果吧。

❌