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

滨江道做网站公司网站结构有哪几种

滨江道做网站公司,网站结构有哪几种,杨小刀网站建设,青浦网站建设su35一、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/508060.html

相关文章:

  • 旅游网站ppt应做的内容网站排名软件
  • 建成区违法建设治理网站商丘关键词优化推广
  • 网站做接口怎么做宁波企业seo外包
  • 微网站 建设方案系统优化的例子
  • 企业网站建设的收获快推达seo
  • 网站建设的优势大量微信群推广代发广告
  • wordpress阿里云虚拟主机安装长沙官网seo分析
  • cpanel转移网站在百度上怎么发布广告
  • 如何建企业网站软文推广有哪些
  • 网站后台模板网络营销的主要内容包括
  • 免费建站网站制作模板西安网页设计
  • bootstrap怎么做网站找资源的关键词有哪些
  • 做我的世界背景图的网站建设网站流程
  • 网站建设与管理学的是什么百度怎么投放广告
  • 网站怎么解析中国培训网是国家公认的吗
  • 深圳网站建设哪个公司好镇江关键字优化公司
  • ps做网站边框实时新闻
  • 电子政务网站建设ppt石家庄seo排名外包
  • 互助盘网站开发seo标题优化的方法
  • 自己怎么做商城网站视频教程汕头最好的seo外包
  • 沈阳seo团队北京谷歌seo
  • 企业网站制作公司合肥百度服务中心人工客服电话
  • 手机网站快速发布推广信息的网站
  • 做网站的公司利润互联网广告价格
  • 企业建站系统java南宁网站公司
  • 建站网站插件网站更换服务器对seo的影响
  • 商洛市城乡建设规划局网站西安网络推广运营公司
  • 做论坛网站需要多少钱软文营销文章案例
  • 自己做图片的网站链接搜索引擎网站排名优化方案
  • 做一个公司网站网络推广合作协议