fex-team / jello

Front End Integrated Solution for J2EE Velocity.
206 stars 49 forks source link

jello是否支持fis-postpackager-simple #30

Closed bodyno closed 9 years ago

bodyno commented 9 years ago

jello是否支持fis-postpackager-simple, 我加了一个自动合并零散资源,但是没有用, 不知道是否支持?

oxUnd commented 9 years ago

jello 支持的方式更牛逼一些,成套的静态资源管理的方法都有了。不需要用静态插件去做合并…

在 2015年5月19日,下午1:36,nobody notifications@github.com 写道:

jello是否支持fis-postpackager-simple, 我加了一个自动合并零散资源,但是没有用, 不知道是否支持?

— Reply to this email directly or view it on GitHub.

bodyno commented 9 years ago

jello 支持的方式更牛逼一些,成套的静态资源管理的方法都有了。不需要用静态插件去做合并…

能否说下是什么方式?

wuanrin commented 9 years ago

同问

oxUnd commented 9 years ago

跑一个 demo 就知道了

jello release -p #打包
bodyno commented 9 years ago

跑一个 demo 就知道了

这并不是一个好的解决办法! :-1: :-1: :-1:

oxUnd commented 9 years ago

好歹你要看看表象吧?那你觉着什么样子的表述是更好的?

bodyno commented 9 years ago

好歹你要看看表象吧?那你觉着什么样子的表述是更好的?

看什么表象? 这样-p 打包并不能达到想要的效果 早就试过了 所以才来寻求更好的解决办法 :hand: :hand: :hand:

2betop commented 9 years ago

simple 只适用于纯前端项目,jello 的打包遵循的是这种理念。

https://github.com/fex-team/fis/issues/488#issuecomment-101989042

没法智能分析出最优解,所以需要自己手动配置。

oxUnd commented 9 years ago

@az8321550

是这样的,jello是为vm,jsp等后端模板的情况下提供的支持,其实后端模板有一个问题,就是无法完全去静态分析 script、 link 来做资源合并,因为有可能 src,href 的值是个变量。

其实想想都是为了引入资源到页面上,索性就想另外一种办法来做引入,比如

#require('./a.js');

甚至于

#require($uri)

$uri 是个变量

剩下的就是搞定合并这个事情了,上面已经说过了静态分析这时候已经不好使了;就如上面的 #require 其实是一个后端接口;我们可以比较轻松的来实现合并资源这个功能;

文件

/a.js
/b.js
/c.js
/pkg.js

引用资源

#require('./a.js')
#require('./b.js')
#require('./c.js')

当这段代码执行时,我们预期的执行结果是引入 pkg.js

怎么样实现这个事情呢,我们只需要有一张表记录这个映射关系就行;

{
  "pkg.js": ["./a.js", "./b.js","./c.js"]
}

数据结构可随意按照需求做调整,比如 jello 里面的就相对复杂的多

当执行 #require('./a.js') 时,去看看在哪个包里就加载它,这时候自然是 pkg.js 了呗;最终吐给浏览器时把收集到的合并信息嵌入页面就可以了。

知道了整个加载合并资源的方法,但是我上面没有说 pkg.js 怎么来的,其实这个在 jello 中是通过用户给的配置;

fis.config.set('pack', {
  'pkg.js': ['a.js', 'b.js', 'c.js']
});

这样合并这儿事情似乎就很 OK 了;

再结合 @2betop 给的这个链接,来解释如果你配置了两个合并包,包与包之间是不会有资源重复的,通俗点讲,假设你想每一个页面只打一个包,通用部分也合并到当前页面的包里,这个操作用这种方式是搞不定的;

wuanrin commented 9 years ago

还是没有回答问题啊。 直接设置 pack 打包这个肯定知道啦。 我想了解的是 fis-pure 方案里面的自动打包零散资源的功能,也就是fis-postpackager-simple插件, 在pure里面是好使的,jello里面无效,这个才是问题。

oxUnd commented 9 years ago

jello 不支持相关做法,如果想用,自己撸

wuanrin commented 9 years ago

好吧。谢谢解答。

2betop commented 9 years ago

你说的零碎资源是哪些?是说 js 和 css 片段吗?

如果是,那么 jello 里面对应的语法就是 #script()#end 和 #style() #end 请查看 http://oak.baidu.com/jello-demo/velocity/index

http://oak.baidu.com/jello-demo/jsp/index