-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请问自己开发后端解决方案时资源合并这块要怎么处理 #9
Comments
如果要跟后端打通,是不能用 loader 插件的,因为 loader 是在前端,静态分析的。 目前除了 loader 可以打包外,还有两个插件可以打包。 https://github.com/fex-team/fis3-packager-map 他们只会把打包信息写入到 map.json 里面,后台在分析到资源如果存在 pkg 信息时要,需要使用 pkg 的包,而不是资源自己。 目前有 php 版本和 java 版本,不知道你更习惯看哪个。 php-laravel: https://github.com/fex-team/laravel-fis/blob/master/src/Fis/Resource.php |
谢谢回答,还是不太明白,现在模版文件变成了具体的后端语法了,需要运行才知道当前页面的依赖关系,fis3-packager-map 又如何能知道当前模版页面依赖了哪些资源呢 |
是不是还要写一个类似fis3-plugin-extlang的插件来解析自己的模版语法? |
@2betop fis3-packager-map 是事先就写好打包信息了吧,这样是不是每个页面是都要写对应的依赖了,感觉不是很灵活 |
https://github.com/fex-team/fis3-preprocessor-extlang 可以参考这个,依赖基本上自动分析出来的,不用特意去写。比如 {script}{/script} 里面写了 require('xxx.js') 那个插件会把 xxx.js 这个依赖信息记录在当前模板文件里面。 |
@2betop 我的理解不知道对不对,如果我想直接用后端模板替代纯html,需要做的是:
疑惑:
|
加入你当前模板叫 A.tpl , 这种引用并不算依赖, style.css 会在 map.json 里面,但是不会在 A.tpl 的依赖中。 后端在分析到 style.css 的时候只会去 map.json 中查找其查出后的 url, 当然如果 style.css 被打包了,会改成用打包后的资源的 url. |
哦对,那现在剩下的问题就是这个类似fis3-preprocessor-extlang是怎么确定A.tpl所依赖的所有资源,并打包输出pkg对象供后端读取了,应该是这样吧 |
依赖理解了,合并打包还有点问题
所有的components都合并到了一个文件,后端运行时再去读取pkg下的资源 |
是的,会存在引入无用 js 的情况,但是个人觉得这并不是问题,当你切到需要那些 js 的页面的时候,浏览器会直接从缓存中拿了。 一般都会预判下,哪些js公用得多,打成一个,其他独立页面的另外再打包。 |
如果有很多复杂组件,或者组件多了个人认为就是问题了,顺便问下其它后端解决方案也是手动配置打包资源的? |
有个根据日志分析自动生成打包配置的插件,但是并不开源。 关于打包手动配置这块,建议你看下 http://fis.baidu.com/fis3/docs/pack.html |
嗯,个人认为还是自动打包会更利于维护,既然fis已经在编译阶段把依赖关系分析好了,其实后端要做的只是把这些文件按顺序做合并和hash吧 |
之前一直用的纯前端的解决方案,再手动转化为后端动态模版,效率和维护都不是很高,现在想尝试实现适合自己项目(python-flask)的后端解决方案
查看资料,了解到大致思路时根据_map.json_做静态资源分析,扩展规范推荐的模版标签,最后统一输出
目前我已经扩展好了模版标签,但在实现合并压缩时遇到了困惑,不知道如何实现,是根据map.json里的pkg对象吗,可是我记得pkg对象是fis3-postpackager-loader产生的吧,自己实现的后端解决方案好像是说不用它了吧,那每个页面中的资源合并关系要怎么处理呢
The text was updated successfully, but these errors were encountered: