天津专业做网站网站内页制作

pingmian/2026/1/21 14:21:32/文章来源:
天津专业做网站,网站内页制作,仿素材下载网站源码,wordpress修改模板技巧背景 经过检测#xff0c;我们识别到您的应用#xff0c;目前未适配安卓11#xff08;API30#xff09;#xff0c;请您关注适配截止时间#xff0c;尽快开展适配工作#xff0c;避免影响应用正常发布和经营。 targetSdkVersion30 升级适配工作参考文档 经过检测我们识别到您的应用目前未适配安卓11API30请您关注适配截止时间尽快开展适配工作避免影响应用正常发布和经营。 targetSdkVersion30 升级适配工作参考文档(小米开放平台)[TargetSdk30上架适配指南](https://dev.mi.com/distribute/doc/details?pId1737) 截至日期为2023年12月4日请问您可以如期适配嘛适配内容 主要处理内容 请求运行时权限存储机制更新强制执行分区存储 其他 隐私设置 1.1强制执行分区存储 1.2闲置应用权限自动重置 1.3后台位置访问 1.4应用包可见性 二、安全 2.1堆指针标记 2.2消息框的更新 网络连接 3.1限制对APN数据库的读取访问 、无障碍服务 4.1在清单文件中声明与TTS引擎 4.2在元数据文件中声明无障碍… 五、相机 5.1媒体intent操作需要系统默认 应用打包和安装 6.1压缩的资源文件 6.2现在需要APK签名方案v2 …… 十、非SDK接口限制 十一、Google Android 11适配信息… 升级版本 直接从26改到30。 请求运行时权限 权限申请可以遵循官方的最佳做法实践指导 需要注意的点闲置应用权限自动重置背景如果应用以 Android 11 或更高版本为目标平台并且数月未使用系统会通过自动重置用户已授予应用的运行时敏感权限来保护用户数据。 此操作与用户在系统设置中查看权限并将应用的访问权限级别更改为拒绝的做法效果一样。兼容性影响如果您的应用以Android 11为目标平台若用户长时间不使用当用户再次使用时若应用没有权限校验逻辑则会导致与回收权限相关的业务失效。第二个注意的点权限对话框的可见性 从 Android 11 开始在应用安装到设备上后如果用户在使用过程中多次针对某项特定的权限点按拒绝那么在您的应用再次请求该权限时用户将不会看到系统权限对话框。该操作表示用户希望“不再询问”。在之前的版本中除非用户先前已选中“不再询问”对话框或选项否则每当您的应用请求权限时用户都会看到系统权限对话框。Android 11 中的这一行为变更旨在避免重复请求用户已选择拒绝的权限。 权限优化 补充项目中各处具体业务权限遗漏申请的地方。将一些会提前申请权限的操作后置在真正使用的地方再按需调用补充了权限使用说明弹窗和授权提示弹窗。将项目中多个权限申请方式统一改成用XPermission。 原先项目中权限库的不足 无法监控权限是否曾经被禁止过。 因为它是基于新增一个Activity然后这个Activity拦截了申请回调并将回调很局限的区分成拒绝和通过。它所现有的暴露的api无法满足当前的需求。 这个库比较旧没有继续更新后续Android版本适配的高版本容易存在风险。 新库的选择 它本身一直在稳定地更新。它更轻量。它能满足旧库所不能满足的。它能够将权限从说明到跳转设置到成功失败等一系列操作全部考虑到并链式配置。 fun requestPermission(context: FragmentActivity, sureBlock: ()-Unit, permissions: ListString){PermissionX.init(context).permissions(permissions).onForwardToSettings { scope, deniedList -scope.showForwardToSettingsDialog(PermissionToSettings(context, deniedList))}.request { allGranted, _, _ -if (allGranted) {sureBlock.invoke()}}}关于新库的版本问题 implementation com.guolindev.permissionx:permissionx:1.5.0直接执行新库会报错 :app:checkPpDebugAarMetadata 7 errors 1 sec, 436 ms org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: occurred while executing com.android.build.gradle.internal.tasks.CheckDuplable java.lang.RuntimeException: Duplicate class androidx.lifecycle.ViewModelLamodules jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycleodel-ktx:2.3.1) and lifecycle-viewmodel-2.5.0-runtime (androidx.lifecycle: org.gradle.apii.internal.tasks.execution.ExecuteActionsTaskExecuter$MultipFailures: Multiple task action failures occurred: java.lang.RuntimeException: The minCompileSdk (32) specified in a java.lang.RuntimeException: The minCompileSdk (31) specified in a java.lang.RuntimeException: The minCompileSdk (32) specified in a java lang RuntimeException: The minCompileSdk (31) specified in a分析原因是项目所适配的最低版本和sdk的不适配。 因此不能直接用1.7.1改用了1.5.0. 后续等项目适配到Android13之后可将新库的版本更新到最新即可。 存储机制更新 1.1 强制执行分区存储 背景 为了让用户更好地管理自己的文件并减少混乱以 Android 10API 级别 29及更高版本为目标平台的应用在默认情况下被授予了对外部存储空间的分区访问权限即分区存储。此类应用只能访问外部存储空间上的应用专属目录以及本应用所创建的特定类型的媒体文件。 在 Android 11 上运行但以 Android 10API 级别 29为目标平台的应用仍可请求 requestLegacyExternalStorage 属性。应用可以利用此标记暂时停用与分区存储相关的变更例如授予对不同目录和不同类型的媒体文件的访问权限。当您将应用更新为以 Android 11 为目标平台后系统会忽略 requestLegacyExternalStorage 标记。 兼容影响 当您将应用更新为以 Android 11 为目标平台后您将无法使用requestLegacyExternalStorage而且也没有其他标记可以提供停用分区存储。 分区存储对于App访问存储方式、App数据存放以及App间数据共享都产生很大影响。 而Environment.getExternalStorageDirectory() 在 API Level 29 开始已被弃用开发者应迁移至 Context#getExternalFilesDir(String), MediaStore, 或Intent#ACTION_OPEN_DOCUMENT。 适配建议 如果您将应用专属文件存储在外部存储空间中则可以将这些文件存放在外部存储空间中的应用专属目录内以便更加轻松地采用分区存储。这样在启用分区存储后您的应用将可以继续访问这些文件。 如需让您的应用适合分区存储请参阅存储用例和最佳实践指南。 具体适配参考 https://developer.android.google.cn/training/data-storage#scoped-storagehttps://developer.android.google.cn/preview/privacy/storagehttps://developer.android.google.cn/training/data-storage/use-cases?hlzh-cn ----------------------------------------------------------------------------------------------------. 需要重点适配的内容 檢查使用到的第三方库是否存在适配上的问题。(比如PictureSelector、Matisse、ShareSDK等第三方库就需要做适配处理)鸿蒙系统的测试机在浏览相册功能有偶现异常现象处理下载的图片视频资源同步更新到系统相册。拍照、图片上传和压缩缓存处理。验证了不同系统的测试机Android 9、10、11、13。HarmonyOS 3.00。 关键步骤 涉及到文件储存的功能。 通过官方推荐的方式来替换掉关键代码 Environment.getExternalStorageDirectory()如果直接使用以上代码进行存储的话会报一下错误。 FileNotFoundException xxxxxxxxxx open failed: EPERM (Operation not permitted)可以使用 context.getExternalFilesDir(null)?.absolutePath)来存储目录为/storage/emulated/0/Android/data/com.xxx/files 关于鸿蒙系统比较特殊的点 resizeBmp BitmapFactory.decodeFile(file.getPath(), opts);场景当通过相册拿到外部文件路径之后使用以上代码获取bitmap会偶现失败。检查权限相关无异常但是会偶尔报这个错误 Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/DCIM/com.xxx/1699410185196.jpg: open failed: EACCES (Permission denied)通过调试和看日志没能找到相关获取bitmap失败的其他日志。根据以上的这条error日志判断是否鸿蒙系统对这块的适配有问题。因此在华为的包中添加一下代码 manifest ... application android:requestLegacyExternalStoragetrue ....../application /manifest虽然在官方文档中表示 当您将应用更新为以 Android 11 为目标平台后您将无法使用requestLegacyExternalStorage而且也没有其他标记可以提供停用分区存储。 但是通过这种方式进行设置确实能避免鸿蒙系统会存在偶现失败的场景发生。 Permission to access file: /storage/emulated/0/Mob/comm/locks/.dhlock is denied uid 10242java.lang.SecurityException: com.yishouapp.fumi has no access to content://media/external_primary/file/1000000118at com.android.providers.media.MediaProvider.enforceCallingPermissionInternal(MediaProvider.java:10152)at com.android.providers.media.MediaProvider.enforceCallingPermission(MediaProvider.java:10049)at com.android.providers.media.MediaProvider.checkAccess(MediaProvider.java:10177)at com.android.providers.media.MediaProvider.checkIfFileOpenIsPermitted(MediaProvider.java:9068)项目中一些第三方库的调整 图片选择器PictureSelector 报错日志 Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/DCIM/com.xxx/1699410185196.jpg: open failed: EACCES (Permission denied) 检查权限申请代码等细节一切正常。 这个库需要更新到高版本才能适配 com.github.LuckSiege.PictureSelector:picture_library:v2.6.0因为项目中用到了camera-view这个库。因此这个库的相关代码调用也需要做代码上的适配会有一些api上的改动。 知乎图片选择器Matisse 参考 报错日志 com.android.providers.media.module Permission to access file: /storage/emulated/0/Mob/comm/lockss/.dhlock is denied uid 10242 java.lang.SecurityException: com.yishouapp.fumi has no access to conttent://media/external_primary/file/100000000000118 at com.android.providers.media.MediaProvider.enforceCallingPermissiionInternal(MediaProvider.java:10152) at com.android.providers.media.MediaProvider.enforceCallingPermission(MediaProvider.java:10049) at com.android.providers.media.MediaProvider.checkAccess(MediaProvider.java:10177) at com.android. roviders.media.MediaProvider.checkIfFileOpenIsPermitted(MediaProvider.java:9068) at com.android.providers.media.MediaProvider.onFileOpenForFusse(MediaProvider.java:9181) FATAL EXCEPTION: ModernAsyncTask #1 com.yishouapp.fumi Process: com.yishouapp.fumi, PID:30137 java.lang.RuntimeException: An error occurred while executing doInBackground( at androidx.loader.content.ModernAsyncTask 3. d o n e ( M o d e r n A s y n c T a s k . j a v a : 164 ) C a u s e d b y : j a v a . l a n g . I l l e g a l A r g u m e n t E x c e p t i o n : I n v a l i d c o l u m n C O U N T ( ∗ ) A S c o u n t 6 i n t e r n a l l i n e s a t a n d r o i d . d a t a b a s e . D a t a b a s e U t i l s . r e a d E x c e p t i o n F r o m P a r c e l ( D a t a b a s e u t i l s . j a v a : 172 ) a t a n d r o i d . d a t a b a s e . D a t a b a s e U t i l s . r e a d E x c e p t i o n F r o m P a r c e l ( D a t a b a s e u t i l s . j a v a : 142 a t a n d r o i d . c o n t e n t . C o n t e n t P r o v i d e r P r o x y . q u e r y ( C o n t e n t P r o v i d e r N a t i v e j a v a : 481 ) a t a n d r o i d . c o n t e n t . C o n t e n t R e s o l v e r . q u e r y ( C o n t e n t R e s o l v e r . j a v a : 1221 a t a n d r o i d . c o n t e n t . C o n t e n t R e s o l v e r . q u e r y ( C o n t e n t R e s o l v e r . j a v a : 1152 a t a n d r o i d x . c o r e . c o n t e n t . C o n t e n t R e s o l v e r C o m p a t . q u e r y ( C o n t e n t R e s o l v e r C o m p a . j a v a : 81 a t a n d r o i d x . l o a d e r . c o n t e n t . C u r s o r L o a d e r . l o a d I n B a c k g r o u n d ( C u r s o r L o a d e r . j a v a : 63 ) a t c o m . z h i h u . m a t i s s e . i n t e r n a l . l o a d e r . A l b u m L o a d e r . l o a d I n B a c k g r r o u n d ( A l b u m L o a d e r . j a v a : 98 a t c o m . z h i h u . m a t i s s e . i n t e r n a l . l o a d e r . A l b u m L o a d e r . l o a d I i n B a c k g r o u n d ( A l b u m L o a d e r . j a v a : 34 ) a t a n d r o i d x . l o a d e r . c o n t e n t . A s y n c T a s k L o a d e r . o n L o a d I n B a c k g r o u n d ( A s y n c T a s k L o a d e r . j a v a : 307 ) a t a n d r o i d x . l o a d e r . c o n t e n t . A s y n c T a s k L o a d e r 3.done(ModernAsyncTask.java:164) Caused by: java.lang.IllegalArgumentException: Invalid column COUNT(*) AS count 6 internal lines at android.database.DatabaseUtils.readExceptionFromParcel(Databaseutils.java:172) at android.database.DatabaseUtils.readExceptionFromParcel(Databaseutils. java:142 at android.content.ContentProviderProxy.query (ContentProviderNativejava:481) at android.content.ContentResolver.query(ContentResolver.java:1221 at android.content.ContentResolver.query(ContentResolver.java:1152 at androidx.core.content.ContentResolverCompat.query (ContentResolverCompa.java:81 at androidx.loader.content.CursorLoader.loadInBackground(CursorLoader.java:63) at com.zhihu.matisse.internal.loader.AlbumLoader.loadInBackgrround(AlbumLoader.java:98 at com.zhihu.matisse.internal.loader.AlbumLoader.loadIinBackground(AlbumLoader.java:34) at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:307) at androidx.loader.content.AsyncTaskLoader 3.done(ModernAsyncTask.java:164)Causedby:java.lang.IllegalArgumentException:InvalidcolumnCOUNT(∗)AScount6internallinesatandroid.database.DatabaseUtils.readExceptionFromParcel(Databaseutils.java:172)atandroid.database.DatabaseUtils.readExceptionFromParcel(Databaseutils.java:142atandroid.content.ContentProviderProxy.query(ContentProviderNativejava:481)atandroid.content.ContentResolver.query(ContentResolver.java:1221atandroid.content.ContentResolver.query(ContentResolver.java:1152atandroidx.core.content.ContentResolverCompat.query(ContentResolverCompa.java:81atandroidx.loader.content.CursorLoader.loadInBackground(CursorLoader.java:63)atcom.zhihu.matisse.internal.loader.AlbumLoader.loadInBackgrround(AlbumLoader.java:98atcom.zhihu.matisse.internal.loader.AlbumLoader.loadIinBackground(AlbumLoader.java:34)atandroidx.loader.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:307)atandroidx.loader.content.AsyncTaskLoaderLoadTask.doInBackground(AsyncTaskLoader.java:60 at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:48 at androidx.loader.content.ModernAsyncTask$2.call(ModernAsyndTask.java:141) 4 internal lines 该库已经从19年开始就不再维护了。因此本次调整将替换掉这个库。 微信分享问题排查 ShareSDK使用权限情况 ShareSDK使用权限情况弃用这个库改用自己写。具体参考分享与收藏-Android开发手册特殊需求上面官方的开发手册中很详细地讲解了各种分享方式和场景但是并不支持分享队长图片到微信中来。因为业务需求需要需要实现分享多张图片因此通过下面这种Intent跳转携带Extra的方式来实现。 /分享的图片集合 val imageUris ArrayListUri() bitmaps.forEach {imageUris.add(SaveUtils.saveBitmapToAlbumForShare(activity, it)) }//分享到微信好友 activity.startActivity(Intent().apply {component ComponentName(com.tencent.mm, com.tencent.mm.ui.tools.ShareImgUI)action Intent.ACTION_SEND_MULTIPLEtype image/*putExtra(Intent.EXTRA_STREAM, imageUris) }) 升级腾讯云orcsdk 需要更新库的升级并且需要添加混淆。 api调用方面也需要做同步更改 // 启动 ocr 识别识别类型为身份证正面 OcrSDKKit.getInstance().startProcessOcr(MainActivity.this, OcrType.IDCardOCR_FRONT, customConfigUi, new ISDKKitResultListener() {Overridepublic void onProcessSucceed(String response, String srcBase64Image, String requestId) {popTip(response, Succeed); // 展示 ocr 识别结果}Overridepublic void onProcessFailed(String errorCode, String message, String requestId) {popTip(message, errorCode); // 展示 ocr 识别错误信息} });总结存储这块很多项目中使用到的第三方库都没有做很好兼容。需要去仔细排查然后去做适配或者废弃替换工作。整体还是存在风险的因此不会全量覆盖所有渠道逐步覆盖了。 文件路径统一整理 兼容高低版本统一处理保存主路径。整理统一图片、视频、文件、h5缓存下载保存等路径。 关于共享 注意一个点如果要处理保存图片/视频并同步到相册的话。则不能直接将文件资源存储在私有目录中私有目录的文件无法共享到相册中。可以通过MediaStore来操纵具体可以看文档 访问共享存储空间中的媒体文件 心得总结 本次适配涉及了整体app的权限申请优化识别、分享、相册、存储方案的统一调整以及第三方库版本依赖相关的内容。改动代码量比较大涉及到的业务页面也较多还发现了一些隐藏至今的历史遗留bug。项目比较久了经历的人手多了避免不了存在一些脏代码。重构代码不仅在做技术优化需求中进行平时的迭代甚至改bug的过程中也可以及时执行。所以说平时代码的review是必不可少的这样可以规范很多。另外一些能统一封装的代码也需要规整像项目中有三种权限方式两个权限申请第三方库这种还是需要避免的最好统一入口封装如果避免不了需要使用不同方案处理建议使用策略模式来设计而当一个功能的实现涉及到需要相册、存储、识别、分享等多个方案的话也可以采用外观模式来进行设计代码设计规范后续改动、迭代、优化都会事半功倍。而且保存文件的入口和工具类也比较杂随处放一点需要整改的时候排查起来也比较费劲并且容易遗漏。再一个是第三方库版本需要统一避免不同module引入统一个库不同版本的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

千万pv网站开发成本网上做网站怎么赚钱

部署网站 说好不哭 在接触serverless架构之前,我们如果想实现上线一个Web网站,就要在开发前期经过操作很多冗杂但又必须的步骤,不少小白可谓是快速的从入门到退坑。 编写代码,部署应用,部署数据库,申请域…

国外主流网站开发技术丽江建设信息网站

容器化是最近几年 DevOps 界流行的趋势,通过业务的容器化我们将创建一个完全打包、自包含的计算环境,让软件开发人员能够更加快速地创建和部署自己的应用程序。然而长期以来,由于镜像格式的限制,容器启动镜像的加载是很慢的&#…

如何制作网页跳转链接关键词seo排名公司

今日内容 1. Junit单元测试 2. 反射 3. 注解Junit单元测试: * 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。2. 白盒测试:需要写代码的。关注程序具体的执行流程。* Junit使…

衡水移动网站建设价格中国最好的猎头公司

随着加密数字货币的交易方式逐渐完善,杠杆交易也逐渐成为交易者获利的重要手段之一。杠杆交易可以通过借贷放大投资收益,但是也同时放大风险。 实际使用过程中有很多小白会有不少疑问:比如杠杆交易和合约交易都是放大风险,那这两…

旅游网站的建设依据和背景哪个旅游网站可以做私人定制

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

百度做网站联系电话怎么做一个好的wordpress

一、同源策略 同源策略(Same Origin Policy): 同源是指域名,协议,端口完成一致,那么这两个url就是同源。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,也是浏览器故意设置的一个功能限制。如果缺少了同源策…

商城网站建设都有哪些类型阀门行业网站怎么做

1.集合 在内存层面需要针对于多个数据进行存储。此时可以考虑的容器有:数组、集合类。 数组存储多个数据方面的特点: 数组一旦初始化,其长度就是确定的。数组中的多个元素是依次紧密排列的,有序的,可重复的。数组一…

15年做那些网站能致富免费的高清视频素材网站

迅雷已经用了 10 年,一直把它看作是速度最快也最方便的下载工具。迅雷会员也是我必续的服务。但,迅雷堕落了。thunder: 迅雷专属链接越来越少,基本都是磁力、BT 的天下迅雷会员加速不再给力,大量资源速度为 0。会员虽然还有一年多…

目前网站建设用哪种语言公司注销后 网站备案吗

register方法正如前面所提到的,在register方法中只绑定事物到服务容器,而不要做其他事情,否则,一不小心就能用到一个尚未被加载的服务提供者提供的服务。现在让我们来看看一个基本的服务提供者长什么样:namespace AppP…

烟台北京网站建设公司哪家好wordpress博客背景

1. 问题描述 问题描述,现A表(用户查看实验的次数)有user_id和exp_id两个字段,其中user_id加exp_id不唯一。B表有user_id,exp_id以及exp_num三个字段,其中user_id加exp_id唯一(表中未建唯一索引)。 现需要将A表的数据同步到B表,单机模式通过定时任务同步。A表的数据有…

教育门户网站模板外贸小网站建设

【力扣】 209. 长度最小的子数组 文章目录 【力扣】 209. 长度最小的子数组1. 题目介绍2. 解法2.1 暴力求解2.2 前缀和 二分查找2.3 滑动窗口2.4 贪心回溯 3. Danger参考 1. 题目介绍 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 …

软件介绍下载网站建设门户网站建设公司价位

目录 一、环境 1、映射、域名、三墙 2、Erlang和socat安装(三台服务器都实行) 二、部署三台rabbitmq-3.8.15实例 1、rabbitmq官网下载地址 : 2、解压rabbitmq 3、添加系统变量 4、启动web插件、启动rabbitmq 5、在rabbitmq1上添加用…

天津医疗行业网站建设仿业务网站源码

**向前插入迭代器,是架构在具有push_front向前插入函数的序列容器(比如deque list)上的输出迭代器,可以利用*改迭代器提供的“”,“*”,“”以“*fii9;”的类似的形式完成容器元素的赋值。**其中“*”和&qu…

深圳建设局网站注册结构师培训附件网页制作工具的选择

本文分析了ida81对输入密码的验证流程,分别对输入密码到生成解密密钥、密码素材的生成过程以及文件数据的加密过程这三个流程进行分析,并尝试找一些可利用的破绽。很遗憾,由于水平有限,目前也只是有个思路未能完全实现&#xff0c…

瑞安网站建设步骤网站开发微盘

题意: 给你两个数字n和m;代表会有n个苹果掉落,m次可以移动的机会;有两棵树,开始你站在树1下面,一分钟只能移动一次,下面的数值代表在哪一颗树下会掉落苹果;问你在可移动的范围内&am…

免费动漫网站成都网站设计开发做得好

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 代码 class Solution {public int sear…

网站下载文件怎么做关键词优化举例

单例模式示例: public sealed class WindowService {//定义一个私有的静态全局变量来保存该类的唯一实例private static WindowService Service;//定义一个只读静态对象//且这个对象是在程序运行时创建的private static readonly object syncObject new object();…

网站空间多大合适wordpress+仿简书模板

文章目录 一、Gin框架介绍二、RESTful API三、Gin渲染1. HTML渲染2. 自定义模板函数3. 静态文件处理4. 使用模板继承5. 补充文件路径处理6. JSON渲染7. XML渲染8. YMAL渲染9. protobuf渲染 四、Gin获取各种方式传递过来的参数1、获取querystring参数2、获取form参数3、获取path…

电子商务网站建设 名词解释创建网站大约多少钱

一. 简介 JSDoc 3 是一个用于 JavaScript 的API文档生成器,类似于 Javadoc 或 phpDocumentor。可以将文档注释直接添加到源代码中。JSDoc 工具将扫描您的源代码并为您生成一个 HTML 文档网站。 JSDoc 是一种用于 JavaScript 代码文档注释的标记语言和工具。它不仅…

网站文字排版备案的网站建设书是什么

写入借鉴网址:好细的Vue安装与配置_vue配置-CSDN博客 下载Vue安装地址: Node.js — Download 查看是否安装成功: node -v npm -v 配置全局模式及缓存 结果通过: C:\Windows\system32>npm install vue -g added 20 packages …