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

做设计素材网站今日最新国际新闻

做设计素材网站,今日最新国际新闻,动感技术网站建设,南昌门户网站一、URL 查询参数(Query Parameters) 适用场景 传递少量非敏感数据(如ID、页码、搜索关键词) 需支持链接直接分享(参数可见) 实现方法 发送参数(跳转时) // 方式1:手…

一、URL 查询参数(Query Parameters)

适用场景
  • 传递少量非敏感数据(如ID、页码、搜索关键词)

  • 需支持链接直接分享(参数可见)

实现方法
  1. 发送参数(跳转时)

    // 方式1:手动拼接URL(原生JS)
    const itemId = 123;
    window.location.href = `/detail.html?id=${itemId}`;// 方式2:使用URLSearchParams(更规范)
    const params = new URLSearchParams();
    params.set("id", 123);
    params.set("from", "home");
    window.location.href = `/detail.html?${params.toString()}`;
  2. 接收参数(目标页面)

    // 解析URL中的查询参数
    const urlParams = new URLSearchParams(window.location.search);
    const id = urlParams.get("id"); // "123"
    const from = urlParams.get("from"); // "home"
注意事项
  • 数据长度限制:URL总长度不宜超过2048字符(不同浏览器差异)。

  • 编码敏感字符:使用 encodeURIComponent 处理特殊字符(如空格、&):

    const keyword = "apple & orange";
    const safeKeyword = encodeURIComponent(keyword); // "apple%20%26%20orange"

二、路由参数(Path Parameters)

适用场景
  • RESTful风格路径(如 /product/123

  • 参数为必要标识(如ID)

实现方法(以React Router为例)
  1. 定义动态路由

    // 路由配置
    <Route path="/product/:id" element={<ProductDetail />} />
  2. 跳转时传递参数

    // 使用Link组件
    <Link to={`/product/${item.id}`}>查看详情</Link>// 编程式导航
    navigate(`/product/${item.id}`);
  3. 接收参数

    import { useParams } from "react-router-dom";function ProductDetail() {const { id } = useParams(); // 获取路径参数return <div>Product ID: {id}</div>;
    }

三、状态传递(State)

适用场景
  • 传递复杂对象(如JSON数据)

  • 隐藏敏感参数(不在URL中暴露)

实现方法(以React Router为例)
  1. 跳转时携带状态

    // 通过Link的state属性
    <Link to="/detail" state={{ itemId: 123,userRole: "admin"}}
    >详情
    </Link>// 编程式导航
    navigate("/detail", { state: { itemId: 123 } 
    });
  2. 接收状态

    import { useLocation } from "react-router-dom";function DetailPage() {const location = useLocation();const { itemId, userRole } = location.state || {};// 使用数据...
    }
注意事项
  • 页面刷新丢失:浏览器刷新后 state 会清空,需结合本地存储或URL参数持久化关键数据。

  • 浏览器兼容性:现代浏览器支持,但需处理回退情况(如用户手动输入URL)。


四、本地存储(LocalStorage/SessionStorage)

适用场景
  • 跨页面传递较大数据(如表单草稿)

  • 需持久化参数(即使关闭浏览器)

实现方法
  1. 存储数据

    const formData = { username: "Alice", progress: 50 };
    localStorage.setItem("tempForm", JSON.stringify(formData));
  2. 跳转后读取

    const savedData = JSON.parse(localStorage.getItem("tempForm"));
    if (savedData) {console.log(savedData.username); // "Alice"localStorage.removeItem("tempForm"); // 使用后清理
    }
注意事项
  • 隐私模式限制:无痕浏览模式下可能无法使用localStorage。

  • 数据安全:避免存储敏感信息(如密码、令牌)。


五、框架特定方案(如Vue的Vuex/Pinia)

适用场景
  • 全局状态共享(如用户登录信息)

  • 复杂应用的多组件参数传递

实现示例(Vue3 + Pinia)
  1. 定义Store

    // stores/params.js
    import { defineStore } from 'pinia';export const useParamStore = defineStore('params', {state: () => ({transferData: null}),actions: {setTransferData(data) {this.transferData = data;}}
    });
  2. 跳转前存储数据

    import { useParamStore } from '@/stores/params';
    const store = useParamStore();// 在组件中设置数据
    store.setTransferData({ id: 456, type: "VIP" });// 执行路由跳转
    router.push('/target-page');
  3. 目标页面读取

    import { useParamStore } from '@/stores/params';
    const store = useParamStore();// 获取数据
    console.log(store.transferData); // { id:456, type:"VIP" }

六、对比与选型建议

方式优点缺点适用场景
URL查询参数简单直观、支持分享暴露数据、长度受限非敏感简单参数
路由参数语义清晰、SEO友好仅适合必要标识RESTful资源定位
状态传递(State)隐藏参数、支持复杂对象刷新后丢失临时数据传递
本地存储数据持久化、跨页面需手动清理、隐私模式受限表单草稿、多步骤操作
全局状态管理集中管理、响应式更新需框架支持、复杂度高中大型应用状态共享

七、安全与最佳实践

  1. 敏感数据加密

    • 避免在URL中传递密码、Token等,改用POST请求或加密后传递。

    • 示例:使用 AES 加密ID后再拼接URL:

      import CryptoJS from 'crypto-js';
      const encryptedId = CryptoJS.AES.encrypt('123', 'secret-key').toString();
  2. 参数校验

    • 接收端需验证参数合法性(如是否为数字、是否在允许范围内)。

      const id = parseInt(urlParams.get("id"));
      if (isNaN(id)) {throw new Error("Invalid ID parameter");
      }
  3. 防XSS攻击

    • 对用户输入的参数进行转义,防止注入恶意脚本:

      const userInput = "<script>alert('xss')</script>";
      const safeInput = userInput.replace(/</g, "&lt;").replace(/>/g, "&gt;");

通过合理选择传参方式,既能提升用户体验,又能保障应用安全性和可维护性。

http://www.dtcms.com/wzjs/227287.html

相关文章:

  • 快速网站价格深圳网络推广培训机构
  • 网站建设zrhskj厦门seo厦门起梦
  • 无为县住房建设局网站首页南宁 百度网盘
  • html5炫酷网站公司网站模板
  • 网站首页布局诊断站外seo推广
  • 网站需要怎么做bt磁力猫
  • 淘金网站建设推广网站如何快速收录
  • 推广员网站怎么做seo搜索引擎推广什么意思
  • 网站建设的美图聊城网站seo
  • 做计算机题目的网站百度收录查询工具
  • 什么是网站排名优化关键词的分类和优化
  • 怎么样做个网站新闻媒体发布平台
  • 有建站模板如何建设网站怎么做网站卖产品
  • 网站域名查询ip中国职业培训在线
  • 物业公司网站模板网络营销的特征和功能
  • 七牛云wordpress图片北京搜索优化推广公司
  • 劫持网站挂广告是个人做的吗基本seo
  • 郑州华久做网站淄博网站seo
  • 河北沧州做网站的电话网站统计
  • 阜城网站建设价格百度刷自己网站的关键词
  • 区块链网站开发沈阳网站制作优化推广
  • wordpress 防篡改惠州百度关键词优化
  • 上海网站营销是什么宁波seo自然优化技术
  • 河南营销网站建设联系方式国内真正的永久免费建站
  • WordPress 蜘蛛检测深圳优化公司找高粱seo服务
  • 网站的分辨率是多少龙泉驿网站seo
  • 单页面网站制作技术网络推广公司电话
  • php学校网站系统最近一周新闻大事件
  • 普陀手机网站建设微信引流被加软件
  • 网站首页在哪个文件夹怎么做私人网站