埋点,自己写插件,自己写的按钮埋点,掘金同款投递简历

20分钟掌握 Vite 插件开发 - 掘金 vite的生命周期啥的

1.浏览器的控制台输出有样式的字

复制代码
// const randomLetterPlugin = ()=>{
//     const letters = ['wwwwwww','000000000000','888888888888'];
//     //随机获取一个字符并打印
//     const printRandomLetter = ()=>{
//         const randomIndex = Math.floor(Math.random() * letters.length);
//         const randomLetter = letters[randomIndex];
//         console.log(`Random Letter:${randomLetter}`);
//     };

//     return{
//         name:'random-letter-plugin',
//         configureServer(server){
//             //在服务器启动时立即执行
//             printRandomLetter();
//         }
//     }
// };

// export default randomLetterPlugin;

const randomLetterPlugin = ()=>{
    const letters = ['我猜你就会点开控制台','你找我有啥事吗','看到你看了,我猜你又出bug了'];
    //随机获取一个字符并打印
    const printRandomLetter = ()=>{
        const randomIndex = Math.floor(Math.random() * letters.length);
        const randomLetter = letters[randomIndex];
        console.log(`Random Letter:${randomLetter}`);
        return `Random Letter:${randomLetter}`
    };

    return{
        name:'random-letter-plugin',
        configureServer(server){
            //在服务器启动时立即执行
            printRandomLetter();
        },
        transform(code,id){
            console.log('--------------------------');
            console.log(id);
            if (id.endsWith('main.js')) {
                // 如果是 main.js,则在代码末尾添加一段逻辑
                return `${code}\nif (typeof window !== 'undefined'){
                    // 在这里添加你的逻辑
                    const letters = ['wwwwwww','000000000000','888888888888'];
                    const printRandomLetter = ()=>{
                        const randomIndex = Math.floor(Math.random() * letters.length);
                        const randomLetter = letters[randomIndex];
                        return randomLetter
                    };
                    console.log(
                       '%c' + printRandomLetter(),'color:#1e80ff;font-size:20px;background:#fff;border-radius:5px;padding:5px 10px;'
                        );
                }`;
            }
            //这里自己写的用不了,gpt生成的可以
            // if(id.endsWith('main.js')){
            //     console.log('==========================');
            //     return `${code}\nif ( typeof window !== 'undefined'){
            //         const letters = ['wwwwwww','000000000000','888888888888'];
            //         const printRandomLetter = ()=>{
            //             const randomIndex = Math.floor(Math.random() * letters.length);
            //             const randomLetter = letters[randomIndex];
            //             return randomLetter
            //         };
            //         console.log(printRandomLetter());
            //     }`
            // }
            return code;
        }
    }
};

export default randomLetterPlugin;




import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import randomLetterPlugin from './plugins/randomLetterPlugin.js'
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), randomLetterPlugin()],
})

2.自己写的按钮埋点

页面中有很多原生的按钮和element plus的按钮

复制代码
const randomLetterPlugin = ()=>{
    return{
        name:'random-letter-plugin',
        transform(code,id){
            if (id.endsWith('main.js')) {
                // 如果是 main.js,则在代码末尾添加一段逻辑
                return `${code}
                if (typeof window !== 'undefined'){
                    const buttons = document.querySelectorAll('button');

                    // 遍历所有按钮,并为每个按钮添加点击事件
                    buttons.forEach((button,i) => {
                        button.addEventListener('click', () => {
                            // 输出按钮中的文字
                            console.log(button.textContent);
                        });
                    });
                }`;
            }
            return code;
        }
    }
};

export default randomLetterPlugin;

3.掘金同款投递简历

复制代码
const randomLetterPlugin = ()=>{
    return{
        name:'random-letter-plugin',
        transform(code,id){
            if (id.endsWith('main.js')) {
                // 如果是 main.js,则在代码末尾添加一段逻辑
                return `${code}

                if (typeof window !== 'undefined'){
                    console.log(
                        '%c欢迎投递方头有限责任公司: https://www.baidu.com/','color:#1e80ff;background:#fff;'
                         );
                }`;
            }
            return code;
        }
    }
};

export default randomLetterPlugin;

vite 有个transform钩子还是什么的生命周期你可以在里面参一脚
export default function requirePlugin() {
  return {
    name: "vite-plugin-vue-requireToUrlPlugin",
    transform(code:string, id:string) {
      const vueRE = /\.tsx$/;
      const require = /require/g;
      if (!vueRE.test(id) || !require.test(code)) return code;
      const requireRegex = /require\((.*?)\)/g;
      const finalCode = code.replace(requireRegex, "new URL($1,import.meta.url).href");
      return finalCode;
    },
  };
}

神策

相关推荐
顾安r3 小时前
11.8 脚本网页 星际逃生
c语言·前端·javascript·flask
Hello.Reader3 小时前
Data Sink定义、参数与可落地示例
java·前端·网络
im_AMBER3 小时前
React 17
前端·javascript·笔记·学习·react.js·前端框架
一雨方知深秋3 小时前
2.fs模块对计算机硬盘进行读写操作(Promise进行封装)
javascript·node.js·promise·v8·cpython
谷歌开发者4 小时前
Web 开发指向标 | Chrome 开发者工具学习资源 (六)
前端·chrome·学习
一晌小贪欢4 小时前
【Html模板】电商运营可视化大屏模板 Excel存储 + 一键导出(已上线-可预览)
前端·数据分析·html·excel·数据看板·电商大屏·大屏看板
发现你走远了4 小时前
连接模拟器网页进行h5的调试(使用Chrome远程调试(推荐)) 保姆级图文
前端·chrome
街尾杂货店&5 小时前
css - 实现三角形 div 容器,用css画一个三角形(提供示例源码)简单粗暴几行代码搞定!
前端·css
顺凡5 小时前
删一个却少俩:Antd Tag 多节点同时消失的原因
前端·javascript·面试
小白路过5 小时前
CSS transform矩阵变换全面解析
前端·css·矩阵