项目中前端实现了某个复杂的渲染逻辑(渲染的结果是字符串,可以理解是多字段的复杂组装),现在要把这个渲染逻辑挪到后端
由于渲染逻辑比较复杂,如果后端独立实现这个渲染逻辑,相当于一件事情做了两遍,未免太花时间
所以现在需要把前端的渲染逻辑整理一下,直接把相关函数给到后端使用
但是前端这个函数调用了其他的好多子函数,试了一下直接使用 Function.prototype.toString,但结果并不能包含它所依赖的子函数的函数体。
想来请教下前端如何能够能够完整的输出这个渲染函数呢?可以是一个巨大无比的函数,也可以是一个文件里面好多函数,但要保证函数间的依赖完整
FYI: 前端用的是 webpack 做打包,语言是 typescript
1
vision1900 OP 后端用的也是 JS ,所以可以直接调用
|
2
lisongeee 2022-09-06 19:08:08 +08:00
如果有递归调用,你准备如何转这个函数的字符串呢?
|
3
zcf0508 2022-09-06 19:11:08 +08:00 via Android
单独写一个入口让 webpack 打包呢
|
4
DOLLOR 2022-09-06 19:14:17 +08:00
既然前后端都用 JS ,都是 ES 模块,那么直接把代码拷过去不行?
|
5
fstar 2022-09-06 19:14:41 +08:00
做成 monorepo 吧,或者把公用的代码做成一个 npm 包
|
6
Envov 2022-09-06 19:18:46 +08:00
不知道你们 webpack 是怎么配置的,如果有配置文件可以在哪个文件的基础上把 webpack 的入口和出口改一下就可以把那个函数单独编译出来了
``` //webpack.config.js module.exports = { entry: './src/function-name.js' output: { filename: 'function-name.js', }, }; ``` npx webpack build --config ./webpack.config.js --stats verbose |
7
zckevin 2022-09-06 19:19:17 +08:00
同样也是爬虫行业的难题之一
|
8
vision1900 OP |
9
vision1900 OP @DOLLOR 这个可能是保持代码可读性和模块化最好的方法,但是函数可能有多层依赖,手动去把依赖关系理清有点费时间。况且前端用的某个 npm 包后端可能没安装也不想安装
|
10
vision1900 OP @fstar monorepo 花费的精力太大,前后端一直是完全分离的,不同的人负责。发布 npm pacakge 同样面临把这些函数(可能是多层依赖)手动挑出来的过程
|
11
zhw2590582 2022-09-06 21:27:49 +08:00
除了手动去分离出来,我也想不出更好的办法了
|
12
musi 2022-09-06 21:47:16 +08:00
为了后面的可维护性感觉还是拆出去比较好
万一前端哪天动了其中的一个依赖,用的是浏览器宿主环境的方法 这时候你在放到 node 里跑就报错了 |