V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ltaoo1o  ›  全部回复第 7 页 / 共 8 页
回复总数  155
1  2  3  4  5  6  7  8  
没用过 react-native-webview ,用过 flutter-inappwebivew ,思路应该类似。

1. FlutterInAppWebivew
2. Windows Webview2 (原生组件)

在 flutter 端调用 webview 组件并传入 shouldInterceptRequest 属性,此时原生代码调用 Webiview2 ,Webview2 调用 add_WebResourceRequestd 方法可以监听所有网络请求
https://github.com/pichillilorenzo/flutter_inappwebview/blob/master/flutter_inappwebview_windows/windows/in_app_webview/in_app_webview.cpp#L874

并调用 flutter 传入的 shouldInterceptRequest
https://github.com/pichillilorenzo/flutter_inappwebview/blob/master/flutter_inappwebview_windows/windows/in_app_webview/in_app_webview.cpp#L945

在回调中判断 shouldInterceptRequest 是否有返回值,如果没有就不响应(等于拦截了请求),也可以修改响应(返回自定义结果)
上面是 Windows 代码,它还有 ios 和 android 不过我没用上,你可以参考他的原生代码那块。

另外 flutter-inappwebivew 内置了 ad block 功能,也可以参考他是怎么实现的
https://github.com/pichillilorenzo/flutter_inappwebview_examples/tree/main/webview_ad_blocker
33 天前
回复了 jeremye 创建的主题 TypeScript 请教一个 TS 问题,不知能否实现
@jeremye 10 楼的方案我试了没问题的,你看下?
34 天前
回复了 jeremye 创建的主题 TypeScript 请教一个 TS 问题,不知能否实现
@jeremye 我有自己的理解,但解释不了,你的需求和小程序 Page({}) 传参,参数有各种提示类似,看看 miniprogram-type 包。也可以找找 vite 这种框架,有 defineConfig 方法,参考它们的类型声明。
两天还是为了照顾顾客心理,其实签完合同就能交付了。
@chutsetien 贴个文件链接就好了,回复越长消耗铜币数越多的,而且确实太长了。。
34 天前
回复了 jeremye 创建的主题 TypeScript 请教一个 TS 问题,不知能否实现
问了下 GPT ,稍微调整了下

```
interface Options<T> {
a: () => T;
b: (p: T) => void;
}

type DefineConfig<T> = {
[K in keyof T]: Options<T[K]>;
};

function defineConfig<T extends Record<string, any>>(config: DefineConfig<T>): T {
return config;
}

// 使用 defineConfig 定义配置对象
const config = defineConfig({
item1: {
a: () => ({ id: 1 }),
b: (params) => {
console.log(params.id); // params 类型是 { id: number }
},
},
item2: {
a: () => ({ name: '1' }),
b: (params) => {
console.log(params.name);
// params 类型是 { name: string }
},
},
});

```
@miaomiao888 笑死
这类工具核心是压缩算法

刚刚试了下,一张 280kb 的 PNG 图片,你的压缩率 0 。。。TinyPNG 能压缩到 76KB

https://image.988589.xyz/api/cfile/AgACAgUAAyEGAASC5r41AAMoZ1AdKZVcixStxWYgMs8oBpLgC8IAAtq9MRsNv4FW6VqTga4eZuIBAAMCAAN5AAM2BA
34 天前
回复了 shzbkzo 创建的主题 职场话题 最近发的好多招聘贴都不写薪资
@oppoic 招聘不写薪资范围,就等于简历上不写自己期望的薪资范围,HR 看到这种简历直接就不考虑了。
35 天前
回复了 v2Donuts 创建的主题 职场话题 被公司新来的前端一句话怼无语了
不要太认真负责,你直接怼他「谁让你传这么长的参数,能不能专业一点」,气势上不能输
35 天前
回复了 hrshanbay 创建的主题 酷工作 扇贝-前端工程师招聘
@LiuJiang git 提交时间可以自定义的
我也和领导矛盾,而且他还坐我边上。但是我没想过离职,离职不是让领导开心了吗

不过最后还是被开了,至少拿了点赔偿
@Lockroach https://github.com/HuolalaTech/page-spy-web 这个是用于远程调试的,不知道能不能跑在你的客户端,如果可以就能看到错误信息了。
@Lockroach 抱歉还是没太理解的你的场景。你说的 webpack require internal 是指

```

/***/ }),

/***/ "./node_modules/core-js/internals/a-callable.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/a-callable.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n//# sourceURL=webpack://bundle_js/./node_modules/core-js/internals/a-callable.js?");

/***/ }),

```

这种吗,这种已经把具体的实现打进来了,比如我贴的代码,它是 "./node_modules/core-js/internals/a-callable.js",具体实现是下面的 `module.exports = function ...` 这段

这里 `var isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\")` 看似还在引入别的依赖,其实这个依赖,也已经包含在 `bundle.js` 文件中了。
@Lockroach 你可以像我这样初始化一个项目,复现你的问题,更直观

https://codesandbox.io/p/devbox/xhnjzn

我用你的配置,没出现你说的问题
@flowercoder 前提是不用 ssh 登录服务器,那像你说的提供接口是最简单的方式了,其他考虑的无非就是安全、稳定
这个问题本身非常简单,在服务器跑一个后端服务提供类似 /api/upload 接口,接口逻辑就是拿到上传的压缩包解压并覆盖指定文件夹,你用 AI 写都行。

接口可以加个验证机制比如请求头必须包含 xxx 字符串
你需要的是一套前端部署方案。

除了前面说的安全问题,还存在一个致命问题。
1 、替换 html + 静态资源
当用户正在访问你的网站,你替换成功了,用户切换到其他页面或使用其他功能,懒加载的 js 不存在(被替换了),页面就用不了了。
2 、只替换静态资源(同名文件)
现在的打包工具默认都是 hash 应该不会出现这种情况除非特殊配置,nginx 是有缓存所以替换是不生效的

部署方案都是增量,旧资源不删除的,还可以支持回滚。
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2510 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 15:53 · PVG 23:53 · LAX 07:53 · JFK 10:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.