# Pandora.js 完整 API 文档 ## 📖 简介 Pandora.js 是一款专为新手优化的 JavaScript 插件,提供前端开发中常用的功能模块,API 设计简洁,支持链式调用。 ### 核心特性 - **轻量级**:零依赖,开箱即用 - **链式调用**:大多数方法支持链式写法 - **原生 JS**:基于原生 JavaScript 实现,兼容性好 - **功能丰富**:涵盖 DOM 操作、网络请求、组件交互等 ### 快速开始 ```html ``` --- ## 1️⃣ 基础工具函数 ### 1.1 alert - 自定义提示框 **功能说明**: - 提供美观的自定义提示框,替代原生 alert - 支持自定义显示时间和主题样式 - 支持点击遮罩立即关闭 - 具有平滑的淡入淡出动画效果 **使用方式**: ```javascript alert(content, speed = 800) ``` **参数说明**: - `content` (string): 提示内容 - `speed` (number, 可选): 自动消失时间(毫秒),默认 800ms **示例**: ```javascript // 基础用法 alert('操作成功!') // 自定义显示时间 alert('加载中...', 2000) // 2秒后消失 ``` **CSS 变量自定义**: ```css :root { --alertTheme: #fff; /* 背景色 */ --alertBg: transparent; /* 遮罩色 */ --alertFontSize: 1rem; /* 字体大小 */ --alertColor: #000; /* 字体颜色 */ } ``` **全局配置**: ```javascript // 禁用 alert 重写 window.resetAlert = false ``` --- ### 1.2 confirm - 自定义确认框 **功能说明**: - 提供美观的自定义确认框,替代原生 confirm - 返回 Promise 对象,支持异步回调 - 支持自定义按钮文本、标题和内容 - 支持显示/隐藏确认和取消按钮 - 支持主题样式自定义 **使用方式**: ```javascript confirm(config) ``` **参数说明**: ```javascript { title: '标题', // 可选 content: '确认内容', // 可选 confirmText: '确认', // 可选,默认"确认" cancelText: '取消', // 可选,默认"取消" showConfirm: true, // 可选,是否显示确认按钮 showCancel: true, // 可选,是否显示取消按钮 success() {}, // 可选,确认回调 fail() {} // 可选,取消回调 } ``` **示例**: ```javascript // 基础用法 confirm('确定要删除吗?').then(() => { console.log('确认') }).catch(() => { console.log('取消') }) // 完整配置 confirm({ title: '提示', content: '是否继续操作?', confirmText: '继续', cancelText: '放弃', showConfirm: true, showCancel: true }).then(() => { console.log('确认回调') }).catch(() => { console.log('取消回调') }) // 仅显示确认按钮 confirm({ content: '操作完成', showCancel: false }).then(() => { console.log('已确认') }) ``` **CSS 变量自定义**: ```css :root { --confirmTheme: #fff; /* 背景色 */ --confirmBg: transparent; /* 遮罩色 */ --confirmFontSize: 1rem; /* 字体大小 */ --confirmColor: #636363; /* 字体颜色 */ --confirmBtnBg: #fafafa; /* 按钮背景 */ --confirmBtnColor: #636363; /* 按钮文字颜色 */ --confirmBtnBorder: #f1f1f1; /* 按钮边框颜色 */ } ``` **全局配置**: ```javascript // 禁用 confirm 重写 window.resetConfirm = false ``` --- ### 1.3 showLoading / hideLoading - 加载遮罩 **功能说明**: - 显示全屏加载遮罩层 - 支持显示进度文字或数字 - 使用 SVG 加载动画图标 - 可随时调用 hideLoading 关闭遮罩 **使用方式**: ```javascript showLoading(progress = null) hideLoading() ``` **参数说明**: - `progress` (string | number, 可选): 显示进度文字或百分比 **示例**: ```javascript // 基础用法 showLoading() setTimeout(() => hideLoading(), 2000) // 显示进度 showLoading('加载中 50%...') setTimeout(() => { showLoading('加载中 80%...') setTimeout(() => hideLoading(), 1000) }, 1000) // 显示数字进度 showLoading(25) // 显示 25% ``` --- ## 2️⃣ DOM 操作 ### 2.1 选择器方法 **功能说明**: - 支持 CSS 选择器语法选择 DOM 元素 - 返回 Pandora 实例,支持链式调用 - 支持类选择器、ID 选择器、标签选择器等 - 支持层级选择器 **使用方式**: ```javascript const $ = Pandora ``` **示例**: ```javascript // 基础选择 $('.class') // 类选择器 $('#id') // ID 选择器 $('div') // 标签选择器 $('.class .child') // 层级选择器 // 链式操作 $('#box') .find('.item') .eq(0) .addClass('active') .css({ color: 'red' }) ``` --- ### 2.2 元素遍历与筛选 **功能说明**: - 支持通过索引选择指定元素 - 支持选择父级、子级、同级元素 - 支持遍历元素集合 - 返回新的 Pandora 实例,支持链式调用 **示例**: ```javascript // eq(index) - 选择指定下标元素 $('.item').eq(0).text() $('.item').eq(2).css('color', 'red') // child(name) - 选择子级元素 $('#box').child('.item') // find(name) - 查找所有子级元素 $('#box').find('.item') // parent() - 选择父级 $('.item').parent() // siblings(name) - 选择同级元素 $('.item').siblings() $('.item').siblings('.active') // prev() - 上一个同级元素 $('.item').prev() // next() - 下一个同级元素 $('.item').next() // first() - 第一个元素 $('.item').first() // last() - 最后一个元素 $('.item').last() // each(fn) - 遍历元素 $('.item').each((el, index) => { console.log(index, el.text()) }) ``` --- ### 2.3 样式操作 **功能说明**: - 支持获取和设置元素样式 - 支持获取元素位置和尺寸信息 - 支持显示/隐藏元素 - 支持淡入淡出动画效果 **示例**: ```javascript // css(name) - 获取样式 const color = $('#box').css('color') const width = $('#box').css('width') // css({key: value}) - 设置样式 $('#box').css({ 'color': 'red', 'font-size': '14px', 'background': '#f0f0f0' }) // show(callback) - 显示 $('#box').show(() => console.log('显示完成')) // hide(callback) - 隐藏 $('#box').hide(() => console.log('隐藏完成')) // fadeIn(speed, callback) - 淡入 $('#box').fadeIn('fast') // fast: 快速 $('#box').fadeIn('slow') // slow: 慢速 $('#box').fadeIn(5) // 自定义速度(数字) // fadeOut(speed, callback) - 淡出 $('#box').fadeOut('fast') // offset() - 获取位置信息 const rect = $('#box').offset() // { x, y, width, height, top, left, right, bottom } // width(width) - 获取/设置宽度 const w = $('#box').width() $('#box').width('100px') $('#box').width('50%') // height(height) - 获取/设置高度 const h = $('#box').height() $('#box').height('100px') ``` --- ### 2.4 内容操作 **功能说明**: - 支持获取和设置元素的文本内容 - 支持获取和设置元素的 HTML 内容 - 支持获取和设置表单元素的值 - 支持在元素内部追加或前置内容 **示例**: ```javascript // text(str) - 获取/设置文本 const txt = $('#box').text() $('#box').text('新内容') // html(content) - 获取/设置HTML const html = $('#box').html() $('#box').html('
新内容
') // val(value) - 获取/设置表单值 const v = $('#input').val() $('#input').val('新值') $('#select').val('option1') // append(target) - 追加内容 $('#box').append('
追加内容
') $('#box').append(domElement) // prepend(target) - 前置内容 $('#box').prepend('
前置内容
') // empty() - 清空容器 $('#box').empty() // remove() - 移除元素 $('#box').remove() ``` --- ### 2.5 属性与类名操作 **功能说明**: - 支持获取和设置元素属性 - 支持移除元素属性 - 支持添加和移除 CSS 类名 - 支持检查元素是否包含指定类名 **示例**: ```javascript // attr(name, value) - 获取/设置属性 const src = $('#img').attr('src') $('#box').attr('data-id', '123') $('#box').attr({ 'data-id': '123', 'data-name': 'test' }) // removeAttr(name) - 移除属性 $('#box').removeAttr('data-id') // addClass(name) - 添加类名 $('#box').addClass('active') $('#box').addClass('active hidden') // removeClass(name) - 移除类名 $('#box').removeClass('active') // hasClass(name) - 检查类名 if ($('#box').hasClass('active')) { console.log('包含 active 类') } ``` --- ### 2.6 事件操作 **功能说明**: - 支持绑定和解绑事件 - 支持点击、双击、长按等快捷事件 - 支持主动触发事件 - 支持焦点获取和失去 **示例**: ```javascript // bind(eventName, fn, options) - 绑定事件 $('#box').bind('click', function() { console.log('点击') }, { capture: false, once: false, passive: false }) // unbind(eventName) - 解绑事件 $('#box').unbind('click') // click(fn) - 点击事件 $('#box').click((el, index) => { console.log('点击元素', index) }) // dblclick(fn) - 双击事件 $('#box').dblclick(() => console.log('双击')) // trigger(eventName) - 主动触发事件 $('#box').trigger('click') // focus() - 获取焦点 $('#input').focus() // blur() - 失去焦点 $('#input').blur() // taping(fn, cb) - 长按事件 $('#box').taping( (ele) => console.log('长按中'), (ele) => console.log('长按结束') ) ``` --- ## 3️⃣ 网络请求 ### 3.1 ajax - AJAX 请求 **功能说明**: - 支持 GET 和 POST 请求 - 支持同步和异步请求 - 支持自定义请求头 - 支持上传进度监听 - 支持取消请求 **使用方式**: ```javascript $('#').ajax(config) ``` **参数说明**: ```javascript { url: '/api/data', // 接口地址 type: 'get', // 请求类型:get/post async: false, // 是否异步 headers: { // 请求头 'Content-type': 'application/x-www-form-urlencoded' }, dataType: 'json', // 发送数据类型:json/form responseType: 'json', // 返回体类型 data: { name: 'value' }, // 发送数据 progress: (p) => { // 加载进度 console.log(p + '%') }, success: (res) => { // 成功回调 console.log(res) }, error: (err) => { // 失败回调 console.error(err) } } ``` **示例**: ```javascript // GET 请求 $('#').ajax({ url: '/api/users', type: 'get', async: true, success: (res) => console.log(res) }) // POST 请求 $('#').ajax({ url: '/api/users', type: 'post', dataType: 'json', data: { name: '张三', age: 18 }, success: (res) => console.log(res) }) // FormData 上传 const formData = new FormData() formData.append('file', fileInput.files[0]) $('#').ajax({ url: '/api/upload', type: 'post', dataType: 'form', data: formData, progress: (p) => console.log(p + '%'), success: (res) => console.log(res) }) // 取消请求 window.cancelAjax() ``` --- ### 3.2 fetch - Fetch API 封装 **功能说明**: - 基于 Fetch API 的简洁封装 - 支持 GET 和 POST 请求 - 支持自定义返回数据格式化 - 返回 Promise 对象 **使用方式**: ```javascript $('#').fetch(config) ``` **参数说明**: ```javascript { url: '/api/data', type: 'get', // get/post headers: { 'Content-type': 'application/x-www-form-urlencoded' }, data: { key: 'value' }, // 可选 returnData: (res) => { // 返回数据格式化 return res.json() } } ``` **示例**: ```javascript // GET 请求 $('#').fetch({ url: '/api/data', returnData: (res) => res.json() }).then(data => console.log(data)) // POST 请求 $('#').fetch({ url: '/api/data', type: 'post', data: { name: 'value' }, returnData: (res) => res.json() }).then(data => console.log(data)) ``` --- ## 4️⃣ 表单操作 ### 4.1 serialize - 表单序列化 **功能说明**: - 自动遍历表单内所有带 `name` 属性的元素 - 自动处理 input、select、radio、checkbox 等不同类型 - 返回键值对对象,便于发送到服务器 **示例**: ```javascript const formData = $('#form').serialize() // { username: 'admin', password: '123456', gender: 'male' } ``` --- ### 4.2 setForm - 设置表单值 **功能说明**: - 根据对象键名自动匹配表单元素的 `name` 属性 - 自动处理 input、select、radio、checkbox 等不同类型 - 快速填充表单数据 **使用方式**: ```javascript $('#form').setForm(obj) ``` **示例**: ```javascript $('#form').setForm({ username: 'admin', password: '123456', gender: 'male', // radio hobbies: ['reading'] // checkbox }) ``` --- ## 5️⃣ 模板渲染 ### 5.1 Mush - Mustache 模板渲染 **功能说明**: - 支持 `{{变量}}` 格式的模板语法 - 支持数据响应式,数据变化自动更新视图 - 提供生命周期回调(Init、Update) - 简化前端数据绑定操作 **使用方式**: ```javascript $('#container').Mush(config) ``` **参数说明**: ```javascript { data: { // 渲染数据 name: '张三', age: 18 }, Init: (data) => { // 首次渲染完成 console.log('初始渲染', data) }, Update: (data) => { // 每次更新完成 console.log('数据更新', data) } } ``` **示例**: ```javascript // HTML 模板

姓名:{{name}}

年龄:{{age}}

// 初始化渲染 $('#container').Mush({ data: { name: '张三', age: 18 }, Init: (data) => { console.log('初始渲染', data) }, Update: (data) => { console.log('数据更新', data) } }) // 动态更新(会自动更新视图) $('#container').setData({ name: '李四' }) ``` --- ### 5.2 全局数据管理 **功能说明**: - 提供全局数据存储机制 - 支持设置和获取全局数据 - 配合 Mush 模板实现数据共享 **示例**: ```javascript // setData - 设置全局数据 $('#box').setData({ userInfo: { name: '张三' }, config: { theme: 'dark' } }) // getData - 获取全局数据 const userInfo = $('#box').getData('userInfo') ``` --- ### 5.3 template - 模板加载 **功能说明**: - 从 `