建设部网站官网 取消八大员内容营销策略有哪些

张小明 2025/12/26 17:15:49
建设部网站官网 取消八大员,内容营销策略有哪些,cpa怎么做网站,分类网站怎么做项目一、什么是混合应用 混合应用是指同时使用前端技术与原生技术开发的 App。通常由前端负责大部分界面开发和业务逻辑#xff0c;原生负责封装原生功能供前端调用#xff0c;二者以 WebView 作为媒介建立通信#xff0c;从而既拥有 Web 开发的速度优势#xff0c;又能拥有强…一、什么是混合应用混合应用是指同时使用前端技术与原生技术开发的 App。通常由前端负责大部分界面开发和业务逻辑原生负责封装原生功能供前端调用二者以 WebView 作为媒介建立通信从而既拥有 Web 开发的速度优势又能拥有强大的原生能力。混合应用框架的本质就是上面提到的那个原生 App 外壳这个外壳重点实现三件事实现原生与前端Javascript的交互封装基本的原生功能供前端调用实现原生插件机制供原生开发者扩展功能。只要做到这三件事基本上就可以被称为混合开发通用框架。混合应用开发平台实际上已经将 Hybrid App 开发完全变成了前端开发者“一个人的事”普通原生需求都内置了扩展原生需求可以借助插件生态实现前端转场不流畅可以用原生效果代替甚至还提供 App 开发的全生命周期管理功能包括 App 配置、项目管理、更新、统计等。可以说混合应用开发平台这种模式的出现将 Hybrid App 开发的技术门槛降到了最低真正实现了只要一名前端就能开发跨平台 App 的目标而且整个开发过程只需要用到 Web 前端技术因此开发速度可以非常块一个熟练的前端开发者优缺点混合开发方式可以在只投入一名前端开发者的情况下快速开发出兼容多个平台的 App相比原生开发同时降低了开发的时间成本和人力成本这是混合开发能够一直维持旺盛生命力的根源。但有得必有失我们也必须正视混合开发的弊端受限于 HTML5 的表现力混合应用在 UI 层面很难达到原生界面的细腻程度界面的载入速度也很容易受到手机运行速度和页面大小的影响。如果前端开发做的不够细致就很容易给用户带来“网页感”使 App 的用户体验大打折扣。结合上述优缺点分析混合开发方式比较适合以下类型的项目功能导向的项目例如企业内部 App、面向特定用户的工具类 App需要快速开发迭代的项目例如新产品试水、外包项目缺少原生开发团队的企业。完全可以在几天之内完成一个中小规模的 App 开发。二、 混合应用开发 常见问题从技术上讲混合应用界面和移动端网页并无二致。可如果将移动端网页原样放在混合应用里运行界面效果就大大折扣了。仔细观察会发现相比原生界面普通网页在很多细节呈现上做得不够细腻造成这种结果的主要原因有两点前端没有正确适配屏幕尺寸导致布局走样或大小间距不当从而影响整体观感网页渲染对硬件适配能力先天不足容易出现模糊现象导致界面不精细。1、页面适配移动端页面适配是前端开发领域的老话题了。随着系统和设备的更新迭代目前只要在页面头部设置 viewport 适配代码再配合 flex 弹性布局基本上可以满足大部分的适配需求。//viewport适配代码 meta nameviewport contentwidthdevice-width, initial-scale1, user-scalableno, minimum-scale1.0, maximum-scale1.0但上述方式只能实现相对“粗略”的适配即便设置了 viewport不同手机间的像素差异仍然很大。市面上常见尺寸中宽度最小的手机只有 320px最大的 iPhone 8 Plus 却达到了 414px这种情况下想用 px 实现精细布局已不太可能。我们需要一种可以随屏幕宽度变化而变化的相对单位才能做到真正的适配。目前rem 方案的可靠性和兼容性已经得到业内的广泛认可这里我们也推荐一种非常简单的基于 rem 的适配方案。适配原理是先假定我们的屏幕宽度为 640px此时将根节点html字号设置为 10px即 “1rem10px”进而得到屏幕总宽度等于 64rem。html{font-size:10px;} /* 此时屏幕宽度 64rem */当以此标准实现的页面运行在其他设备上时我们只要通过改变根节点的字号使“屏幕总宽度64rem”这个等式始终成立就可以了之前的做法是 JavaScript 检测屏幕宽度然后计算出 rem 的值。var htmldocument.documentElement; var rootSize html.clientWidth / 640 * 10; html.style.fontSizerootSizepx随着规范的推广和手机系统的更新如今我们用 CSS 也能实现相同效果因为新规范中有一个 vw 单位能够以屏幕宽度为单位1实现任意百分比例的取值即屏幕宽度100vw关联我们需要实现的等式屏幕宽度 64rem可以得到100vw 64rem进而得到1rem 1.5625vw实际上这样就实现了屏幕总宽度恒等于 64 rem然后就可以愉快的使用 rem 单位做可以适配任何屏幕的精确布局了。以上是理论实际上这里会产生一个 Bug。由于多数屏幕的宽度都小于 640px计算出来的 rem 也会小于 10px但 WebKit 内核会强制将最小字号锁定在 12px这将直接导致我们的适配等式无法成立从而在应用中出现较大的偏差所以实际开发中我们要将根节点html字号矫正为 15.625vw 适配等式就变成了“屏幕总宽度6.4rem”那么“1rem100px”可以绕过 WebKit 的限制同时开发中的换算压力也不大。说了这么多真正需要写的代码只有一行html { font-size: 15.625vw;}此时在 640px 宽度的页面中1rem100px且无论在任何尺寸的手机上都会保持这个比例简单的应用示例如下div stylewidth: 3.2rem;height:3.2rem;background:black; 在任何手机屏幕上都显示为屏幕宽度50%的正方形 /div前端基于这套适配方案开发需要将设计稿宽度约定为 640px当在设计稿上量取20px时代码中只要除以100就可以很简单的换算得到 0.2rem。2、精细还原提升网页的精细程度可以从两方面入手一是使用技术手段排除显示层面的模糊现象二是用心还原设计意图。显示模糊常见的显示模糊有两种情况一是图片模糊二是边框模糊有经验的前端开发者应该对这两个问题都不陌生。图片模糊的原因是手机屏幕的可测量尺寸与物理像素尺寸不一致通常 Web 前端会习惯性的将图片尺寸切成可测量尺寸而图片显示最清晰的状态应该是图片尺寸与显示屏的物理像素尺寸一致的时候。以红米4的屏幕为例添加 viewport 适配代码以后屏幕的可测量宽度为 360px但这块屏幕的物理像素宽度却是 1080px说明这块屏幕的像素比DPR是3也就是说显示的时候会用3个物理像素去模拟一个像素来提高屏幕的显示精度。如果在这块屏幕上显示图片理论上一张宽度360px的图片已经可以自动全屏了但由于图片的像素数过低包含的信息量不够分配给每一个物理像素显示的时候就会通过插值算法生成更多的像素去分配给物理像素显示这必定会导致图片的显示锐度下降。而如果图片本身宽度就是 1080px 的话所包含的像素信息就正好能够分配给每一个物理像素此时便可在这块屏幕上呈现最佳的显示效果。也不是图片只要够大就没问题图片尺寸大了将直接影响加载速度和内存占用所以还要根据实际情况做取舍。如果是 App 的界面素材通常会随 Hybrid App 打包进本地这时不需要考虑加载速度可以适当增大图片尺寸目前主流机型的屏幕宽度最大就是 1080px切图时可以参考这个值取适当大小的切片。而如果是业务中的远程图片考虑到加载速度单张图片大小应控制在 50k 以内如果后端能自动压缩图片最好否则就只能控制图片的尺寸了。个别情况也可以例外例如产品详细页通常只有几张产品大图并发不会太多而且通常会做成轮显效果第一时间只会显示第一张图片这些因素就为图片加载创造了很好的条件。因此为了保证显示效果将产品图做大一点也没有关系。但如果是带缩略图的产品列表页就一定要严格控制缩略图尺寸了原因有两点产品列表首屏显示6-10个产品很正常这就是6-10个图片并发图片加载慢的话很容易让加载时间超过1s影响用户体验。另外产品列表通常会做成滚动加载随着用户浏览加载的图片越来越多手机的内存占用也会急剧上升App的运行会更耗电。总而言之本地图片尽量做大远程图片根据需求和场景做适当取舍不能只为了显示清晰而丢了加载速度。边框模糊也就是经典的 1px 边框问题其产生的原因从本质上来讲跟图片模糊的原因一样。用 CSS 画出的 1px 只是可测量尺寸上的 1像素不能保证就是物理层面上的1像素。在视网膜屏成为标配的今天CSS 画的 1px 边框基本上都会被呈现为物理像素 2px 或 3px到了界面上就会显得不精细跟原生显示的真正1像素有明显差异。1px 问题的解法有很多其中利用 transform 所实现的方法应该是最方便的解法了。代码如下所示.border-bottom{border-bottom:1px solid #ccc;} media screen and (-webkit-min-device-pixel-ratio: 2) { .border-bottom{position:relative;border:0;} .border-bottom:before{ position: absolute; right: 0; bottom: 0; left: 0; height: 1px; content: ; transform: scaleY(.5); background-color: #ccc; } }这样显示出来的是真正的1像素边框看上去非常锐利显得界面更精致。还原设计还原设计这个点其实没有太多可说的作为前端开发理应忠实的还原设计。但根据我的经验PC 时代还原设计还好说毕竟直接量设计稿就可以达到像素级别的精度但在 Hybrid App 开发中压根就不存在什么像素级还原。因为最终的界面要跑在各种不同尺寸的屏幕上这个界面是没有标准答案的我们前端能做的只能是在所有屏幕上都尽可能的还原“设计意图”不至于让界面看上去跟设计稿不是一回事。这里我简单提一下我认为比较容易出问题的两个点。首先是字号设置。我们使用的 rem 适配方案理论上只要所有单位都用 rem 实现是可以将设计稿完美适配到所有屏幕的但文字是界面上比较特殊的一类元素它们的适配逻辑并不应该简单的仿效布局适配。对于阅读性文字理应设置成一个最适合阅读的固定尺寸px大屏就显示的多一些小屏就显示的少一些而不是随着屏幕宽度增加而等比增大字号修饰性文字则完全可以使用 em 单位做相对缩放这样从逻辑上更能体现其与父元素之间的关系而不是强调其与屏幕宽度之间的关系这一点当手机横屏显示时差异非常大使用 rem 单位的文字在横屏下会大的离谱甚至会直接导致布局失效。所以我通常还是会用 px 或者 em 单位进行字号设置。但这样做也存在问题就是只要稍微设置不当就显得文字与周围布局不协调从而破坏设计意图。这时候我会反复调整字号大小并对比观察界面和设计稿直到它们看上去感觉一样为止。/*阅读类文本使用固定像素*/ .p{font-size:14px;} /*标题类文本使用相对字号*/ .pro_title{font-size:1.2em;} .channel_title{font-size:1.8em;}除了字号以外有些间距设置有时也不应该使用 rem 单位究其根本还是因为它们从内在逻辑上就跟屏幕宽度没关系比如说下图文字列表的 padding这个间距从设计意图上说是列表项文字的“呼吸空间”它的大小应该只跟文字大小有关系凡是这种地方都没有办法“像素级”还原设计稿我们只能用心调试去忠实的还原设计意图。/*使用em单位设置文字间距*/ .item{...;padding: 1.2em;}有时候页面四周与内容之间也会有一个间距这种间距我们可理解为布局的延申因此应该和布局一样使用 rem 单位实现比如下面这种页面四周的间距.wrap{...;padding:0.8rem;}总结下来凡是跟布局无关的地方其实都不太适合用 rem 单位这些地方都需要我们认真对待避免失真只有所有细节都做好了才能整体呈现出较高的还原度。3、页面加载优化Hybrid App 会将页面打包到本地资源加载问题虽然得到了根本上的缓解但不代表我们就可以完全无视加载问题。实际上以当今手机的平均性能水平来看如果页面的 CSS 和脚本体积过大仍然可能造成肉眼可见的渲染延迟这在 App 中是不能容忍的。造成渲染延迟的原因第一是由于静态资源读取慢第二是手机的运算能力普遍不足导致页面绘制时间和脚本执行时间过长所以 Hybrid App 开发中我们仍然要对页面性能严格要求务必保证页面打开后立即呈现。关于代码压缩合并、CSS 性能、JS 性能等问题属于前端基础知识这里不再赘述。数据加载优化App 界面除了页面自身结构外往往还有很多内容是由异步数据渲染出来的。对于这些业务数据我们没办法要求“立即呈现”在等待数据的过程中我们可以从三个方面着手提升体验首先是让页面框架先加载内容区域填充占位内容给用户造成立即呈现的错觉其次要显示生动且合理的加载动画缓解用户的等待焦虑再次从数据源着手提速可以考虑加带宽或者减少单次请求数据量等方式给接口提速毕竟这才是一切的根源。第一点也就是 PWA 中 App Shell 的概念也叫做骨架屏即实现一个只包含布局骨架的页面每次先加载内容区域可以填充一些占位元素等待异步数据就绪再填充真实内容如下图所示骨架屏的重点是占位元素的实现大致分两种方式。一种是手写占位元素然后用真实内容的 DOM 元素直接替换例如style .shell .placeholder-block { display: block; height: 5em; background: #ddd; margin: 1em; } /style div classshell div classplaceholder-block/div div classplaceholder-block/div /div效果如下图所示这种方式比较简单直接但缺点是占位元素的样式需要单独维护如果整个项目涉及多处不同的占位元素工作量就比较大了。另一种思路是利用真实内容的 DOM 结构和样式占位。占位状态下叠加一个样式用来呈现 loading 状态我们看下面这段代码style .list{overflow:hidden;} .list .avat{float: left;width:5em;height: 5em;overflow:hidden;border-radius: 2.5em;margin-right: 1em;} .list .title{height: 5em;overflow:hidden;} /*占位元素通用类*/ .placeholder .avat { background: #ddd; } .placeholder .title{ background: #ddd; } /style div classlist placeholder div classavat/div div classtitle/div /div效果如下图所示当真实内容渲染后需要将占位状态的叠加类去掉。图片加载优化图片是最能拖慢页面显示速度的元素在图片扎堆的列表页上这个问题最为严重如果有必要我们也可以采用 Web 中常用的图片懒加载技术但懒加载的本质是分散加载时间提升首屏展示速度资源总加载时间并没有减少所以如果首屏显示不是特别迟滞使用懒加载的意义并不大。给图片提速最好的解决方式是缓存有条件可以使用 CDN 加速没条件可以在 App 端做图片缓存但这需要结合原生能力我们将在后面的实战章节中具体讲到。吸引注意力如果各种技术手段都上了仍然觉得不够“快”那么还有最后一个体验优化思路就是当用户操作时给以积极的界面反馈从而吸引用户注意力避免等待焦虑比如给按钮做一个绚丽的点击动画、给控件做一个漂亮的过渡动画都属于这一类优化方式说白了就是障眼法但效果不错。我们看下上图波纹动画的实现过程。约定触发波纹动画的元素都必须带有 active 属性且相对或绝对定位元素超出则隐藏。波纹元素采用绝对定位我们如下撰写代码div active styleposition:relative;overflow:hidden;border:1px solid #ccc;padding:1em; 波纹动画 /divCSS 部分需要实现波纹元素的初始状态和动画状态.active-handle{ position: absolute; width:400px; height: 400px; border-radius: 200px; background: #dedede; z-index: 0; transform:scale(0); -webkit-transform:scale(0); opacity: .5; transition:all ease-out .5s; -webkit-transition:all ease-out .5s; } .active .active-handle{transform:scale(1);-webkit-transform:scale(1);opacity: 0;}JS 部分为目标元素绑定触摸事件当触发 touchstart 事件时在元素内生成波纹元素并展示 CSS 动画var $body $(body); //批量绑定active事件 $body.on(touchstart, [active], function(e) { var target e.target; target.classList.remove(active); var activeHandle document.createElement(div); activeHandle.classList.add(active-handle); var targetOffset e.touches e.touches.length ? e.touches[0] : e.touches; var eleOffset target.getBoundingClientRect(); if(targetOffset eleOffset){ activeHandle.style.left targetOffset.clientX - eleOffset.left - 200 px; activeHandle.style.top targetOffset.clientY - eleOffset.top - 200 px; target.normalize(); var lastNode target.lastChild; if(lastNode){ if(lastNode.nodeName#text !lastNode.nodeValue.trim()){ lastNode lastNode.previousSibling; } target.insertBefore(activeHandle, lastNode); }else{ target.appendChild(activeHandle); } setTimeout(function(){ target.classList.add(active); },0); } target.setAttribute(data-touch, 1); }).on(touchcancel, [active], function(e) { var target e.target; target.classList.remove(active); target.removeAttribute(data-touch); }).on(touchmove, [active], function(e) { var target e.target; target.classList.remove(active); target.removeAttribute(data-touch); }).on(touchend, [active], function(e) { var target e.target; var oldNode target.querySelector(.active-handle); setTimeout(function(){ if(oldNode){ target.removeChild(oldNode); } target.classList.remove(active); },500) });4、App 优化App 开发与传统 Web 前端开发有几点明显的不同比如运行时需要监听网络状况并对异常情况做处理需要自带更新机制因为 App 本身无法“刷新”……总而言之一句话App 作为一个独立客户端需要自己管理好自己的“生老病死”这是刚接触 Hybrid App 开发的前端同学需要学习并适应的一件事。网络状态管理网络状态管理包括请求异常处理和网络异常处理。当请求出现异常时我们需要捕获异常使界面呈现恰当的内容比如在内容区域填充异常提示界面或者给用户恰当的弹窗或气泡提示。这需要我们的异步请求方法能够集中处理异常以 HybridStart 框架的异常处理为例//ajax错误处理 catchAjaxError function(code, status) { switch (code) { case 0: app.toast(网络错误请检查网络连接 status); break; case 1: app.toast(请求超时); break; case 2: app.toast(授权错误); break; case 3: app.toast(服务端数据异常); break; default: app.toast(服务端错误( status ) code: code); } };当监听到设备离线时所有的异步数据都将不可用此时 App 将无法正常提供服务此时我们可以让 App 跳转到一个异常页面以提示用户以 APIcloud 为例假如断网页面的 URL 是./error/offline.html当监听到设备离线时可以直接跳转到该页面api.addEventListener({ name:offline }, function(ret, err){ api.openWin({ name: offline, url: ./error/offline.html }); });断网是极端情况但为了尽可能保证断网后 App 的使用体验我们最好能将已访问过的数据缓存起来断网时可以继续为用户提供缓存数据当然这个要根据业务特点决定是否适合。沉浸式状态栏随着全面屏在手机工业设计上的流行软件层面与之配合的沉浸式状态栏也逐渐成为了手机系统的标配开启沉浸式特性的确会使 App 的界面设计呈现出更好的整体效果。这种系统层面的优化手段使用成本低产出效果好我们应该积极响应。这种特性通常只需要一个简单的配置就可以实现。仍然以 APICloud 为例我们只需要在配置文件中添加一行代码即可preference namestatusBarAppearance valuetrue /适当引入原生能力当有些需求超出 Web 前端能力的时候我们只能借助原生能力实现。比如 App 开发经常会遇到的输入框需求希望新页面打开后输入框立即获取焦点并自动弹出软键盘这个功能使用纯前端能力无法完美实现如果这个需求对产品确实非常重要那么就只能使用原生 input 控件来实现。如何引入原生能力取决于开发采用的框架通常的混合应用开发框架都有自己的原生插件生态可以从插件库里找到自己需要的插件。4、防攻击客户端最容易成为 XSS 攻击目标。防止 XSS 需要从内容的输入和输出两方面做过滤当 Hybrid App 作为客户端时有可能需要显示一些异步获取的 HTML 片段此时其作为潜在 XSS 攻击代码的输出端就需要做好 XSS 过滤。事实上所有的WEB页面只要涉及到异步内容渲染都应该对内容做XSS过滤。这里推荐 jsxss 它是专做前端 XSS 过滤的库使用非常简单示例如下。script srchttps://raw.github.com/leizongmin/js-xss/master/dist/xss.js/script var html filterXSS(scriptalert(xss);/scr ipt); alert(html);如果 App 中需要展示异步获取的 HTML 片段拿到数据后应该先用 filterXSS 方法过滤一遍再填充到页面中asyncCallback(htmlData){ var $view document.getElementById(view); var cleanHTML filterXSS(htmlData); $view.innerHTML cleanHTML; }这个库的配置功能非常强大基本上可以满足任何定制需求配置项参见这里。防 XSS 的关键在于不信任用户的任何输入输出端过滤主要用来抵御反射型 XSS还有一种危害更大的持久型 XSS需要在输入端也就是服务端做好内容过滤。5、防代码泄露混合应用的前端代码非常容易泄露只要将安装包后缀名改成.rar然后用解压工具打开很容易就能找到所有的前端代码。项目架构正常的情况下前端代码的业务安全价值应该不大但有时候我们可能出于防抄袭等目的希望对前端代码加密。传统 Web 前端的 JS 加密/混淆方式仍然可以使用。JS 加密基本上足够挡住一批小白但破解方法其实有很多一旦被找到还原方法代码就会彻底暴露安全等级很低代码混淆是无法还原的安全性相对高一些但如果有人愿意肉眼强攻强行解读代码那破解就是时间问题。另外代码混淆还会降低代码执行性能对于计算能力本来就不强的移动端来说这一点还是挺敏感的项目中我们可以只对业务代码混淆对于体积大、调用频率高的类库文件最好还是不要混淆了一来混淆价值不大二来对性能的影响过大。如果希望进一步提高加密等级在 HybridApp 模式下可以结合原生能力实现其他的加密方式。例如将前端代码打包到 App 里之前先加密压缩成 Zip文件App 启动后先解压得到代码再执行前端页面。这种方式相当于将破解难度完全转嫁到了压缩包的破解上实现简单破解难度较高。另一种方式是使用加密算法先将前端文件加密然后打包进 App在 App 外壳上用原生实现相应的解密算法启动后先解密再执行前端页面。这种方式的加密过程完全由我们自主控制理论上可以得到非常好的加密效果以 APICloud 平台的加密功能为例加密后的前端代码是这样的这种加密等级已经非常高了基本可以做到不可逆。以上两种依赖原生实现的加密方式单纯从加密的角度可以说完全达到了目的但思路本身存在致命漏洞加密效果并不可靠。因为前端代码无论如何加密最终都是要还原回来在 WebView 里运行而在 Android 平台可以借助 Chrome Inspect 工具直接远程调试 WebView 里的页面不但能看到解密后的代码甚至可以打断点调试效果完全跟在本地运行一样这样的话后两种加密方式的效果反而还不如前端混淆了。这就应了一句话安全问题是全链路问题单一环节的安全性做的再高都没有用整个系统的安全性取决于最薄弱的那个环节有多弱而不是最强悍的那个环节有多强。说到底前端代码本来就是公开的JS 加密/混淆已经是综合各种因素之后比较平衡的加密方案了用来防抄袭已经足够试图对前端文件进行强加密的做法本身思路就不对保护商业秘密的最好方法是不要把它们放在前端。注使用 Chrome Inspect 调试需要 App 的 WebView 开启 Debug 模式但正式打包的 App 肯定不会开启 Debug 模式所以一般情况下无法使用这个方法。但安卓系统 root 后几乎没有不可能的事网上可以找到教程实现对安卓系统任意 App 的 WebView 内容进行远程调试。6、防数据泄露敏感数据加密结合以上分析我们知道无论怎么加密前端代码都不存在绝对的安全如果确实需要在 App 的前端代码中存放或使用敏感数据我们只能综合使用多种加密方式尽量提高破解难度让攻击者知难而退。首先我们可以将敏感数据加密保存在原生文件中只为前端提供一个加密数据的获取方法// APICluod获取原生加密数据 var secretKey api.loadSecureValue({ sync: true, key: appKey }); alert(secretKey)原生加密的数据很难破解这样数据的保存环节可以认为是牢固的剩下的风险就只在前端调用环节。如果攻击者使用 Chrome Inspect 调试 WebView仍然可以通过断点调试得到想要的数据。这时我们可以将调用数据部分的 JS 逻辑加密/混淆使其不可读即使攻击者调试页面难度也将大大提高很难直接拿到敏感数据。这套方案的安全隐患在于 JS 混淆的效果理论上是不够可靠的但对于安全性的评估不应该只考虑防御方案是否绝对可靠我们还要综合被保护对象的商业价值决定将“安全城墙”堆到多高就可以然后再从高度达标的方案中选择实施成本最低的那一种。如果是极为重要的私密数据放在前端肯定不安全但在现有的安全等级前提下什么可以放在前端什么不能放在前端这是业务主导者需要考虑的。数据通讯加密App 的运行离不开与后端的数据通讯一次完整的异步请求需要客户端发起、服务端返回、客户端接收过程比较长而且过程中还涉及到太多不可控的外部环境例如路由器、运营商节点、CDN 服务器等等任何一个环节都可能被利用发起攻击因此通讯安全是系统安全的重中之重。随着 HTTPS 的普及中间人攻击和网络监听的风险已经大大降低但因为 Hybrid App 存在整个客户端被破解的可能攻击者可以从客户端直接拿到所有请求信息因此如果希望保证项目的通讯安全我们需要对整个请求过程进行加密包括发送请求时的 URL 和参数以及请求返回的数据。加密请求的参数信息可以防止攻击者猜测参数规律滥用接口任意获取数据加密接口返回的数据能防止通信被已破解的客户端窃听配合代码混淆能一定程度上隐藏业务逻辑。还有一种比较棘手的攻击方式重放攻击不需要解读数据只通过将已经成功发起的请求进行重放就可以巧妙的对系统实施攻击。重放攻击的防御难点在于被重放的请求本质上是合法的只不过发生的时机不对因此针对重放攻击的防御手段都是围绕请求时机判定展开的比如给请求加唯一标识服务端通过判断标识重复辨别重放攻击同理也可以使用时间戳递增序号等方式这些方式虽然有效不过一旦被发现也很容易伪造而将请求加密后就能隐藏请求的参数信息虽然不能直接防御重放攻击但可以隐藏防御手段从而顺利实施防御措施。实现请求加密需要在客户端和服务端基于同一套加密算法分别实现加密、解密方法。客户端发起请求前将请求参数加密后作为新的参数发送出去服务端接收参数后解密得到实际参数查询获得请求数据然后将数据加密返回给前端前端拿到数据后先解密再传给业务逻辑使用。前端所需要做的就是封装一个公用异步请求方法如上图中的大虚线框所示这个方法除了正常发送 AJAX 请求外最重要的是集中对 AJAX 请求参数加密以及将 AJAX 返回的加密数据解密。加解密算法通常采用强加密算法以 3DES 算法为例加解密过程需要约定一个密钥这个密钥前后端需要保持一致对于 App 端来说这个密钥一旦暴露就很可能导致整个加密方式被破解因此我们必须使用前文提到的敏感数据加密手段进行保护。公用加密请求方法的伪码如下var secretAjax function(opt){ // ajax配置 // var opt { // url: AJAX_URL, //请求url // data: AJAX_PARAM, //请求参数 // success: AJAX_CALLBACK //请求回掉 // } // 3DES加密配置 var cryptocfg { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }; // 从原生接口取出加密密钥 var secretKey GET_SECRET; var keyHex CryptoJS.enc.Utf8.parse(secretKey); // 加密参数 var paramDataStr JSON.stringify(opt.data); var secureData CryptoJS.TripleDES.encrypt(paramDataStr, keyHex, cryptocfg); var secureDataStr secureData.ciphertext.toString(); opt.data { data: secureDataStr }; var userCallback opt.success; opt.success function(res){ // 解密数据 var mi $.trim(res); var encryptedHexStr CryptoJS.enc.Hex.parse(mi); var encryptedBase64Str CryptoJS.enc.Base64.stringify(encryptedHexStr); var decrypted CryptoJS.TripleDES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(encryptedBase64Str) }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); var ming decrypted.toString(CryptoJS.enc.Utf8); // 将明文数据返给业务逻辑 userCallback(JSON.parse(ming)); } // 发送ajax sendAjax(opt) }2025开年AI技术打得火热正在改变前端人的职业命运阿里云核心业务全部接入Agent体系字节跳动30%前端岗位要求大模型开发能力腾讯、京东、百度开放招聘技术岗80%与AI相关……大模型正在重构技术开发范式传统CRUD开发模式正在被AI原生应用取代最残忍的是业务面临转型领导要求用RAG优化知识库检索你不会带AI团队微调大模型要准备多少数据你不懂想转型大模型应用开发工程师等相关岗没项目实操经验……这不是技术焦虑而是职业生存危机曾经React、Vue等热门的开发框架已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地未来企业更看重能用AI大模型技术重构业务流的技术人。如今技术圈降薪裁员频频爆发传统岗位大批缩水相反AI相关技术岗疯狂扩招薪资逆势上涨150%大厂老板们甚至开出70-100W年薪挖掘AI大模型人才不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态吸引了很多人的关注和兴趣也有很多新人小白想要学习入门大模型那么如何入门大模型呢下面给大家分享一份2025最新版的大模型学习路线帮助新人小白更系统、更快速的学习大模型2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

怎么做自己的html网站下载手机app软件

LobeChat:当开源遇见大模型,如何打造一个真正可用的AI聊天框架? 在今天这个“人人都能调用大语言模型”的时代,API 几行代码就能让程序开口说话。但问题也随之而来——我们真的能轻松地把这些能力变成用户愿意天天用的产品吗&…

张小明 2025/12/26 17:14:41 网站建设

网站seo流程表白网在线制作一键生成

在上一篇博客中我们建立的逻辑回归模型解决了银行贷款的二分类问题,但是不知道大家有没有注意到我们当时的召回率是非常低的,只有百分之百,这一次,我们就来学习如何进行逻辑回归的调优。、 1、参数调整 原理 在逻辑回归的参数调…

张小明 2025/12/26 17:13:32 网站建设

网上给别人做网站建设网站的优势

还在为本地存储空间不足而无法在电视上观看高清视频吗?115proxy-for-kodi插件将彻底改变你的观影体验,让115云盘中的海量资源直接通过Kodi流畅播放,无需下载到本地设备,真正实现云端即点即播的便捷操作。 【免费下载链接】115prox…

张小明 2025/12/26 17:12:58 网站建设

单页网站 html如何在腾讯云建设网站

还在为游戏时手柄自动旋转而烦恼吗?当你在激烈游戏中瞄准敌人,手柄却不受控制地偏移,这种体验确实令人沮丧。本文将通过「问题诊断→解决方案→效果验证」的三段式结构,帮助你彻底解决DS4Windows陀螺仪漂移问题。 【免费下载链接】…

张小明 2025/12/26 17:12:23 网站建设