fex-team / yog2

A Node Web Framework based on FIS & Express https://fex-team.github.io/yog2/
361 stars 86 forks source link

关于使用fis3合并压缩打包等问题 #184

Open eugeneCN opened 7 years ago

eugeneCN commented 7 years ago

先贴一下我的fis3-conf.js配置。

if (fis.IS_FIS3) {

  fis.set('namespace', 'home');

  // ------utils配置模块化------
  fis.match('utils/**', {
    isMod: true
  });

  fis.match('/client/widget/.{js,es}', {
    packTo: 'widget.js'
  });

  fis.match('/client/widget/**.{css,less}', {
    packTo: 'widget.css'
  });

  // ------配置debug------
  fis.media('debug').match('{client,server}/**', {
    deploy: fis.plugin('http-push', {
      receiver: 'http://127.0.0.1:8085/yog/upload',
      to: '/'
    })
  })

}

在app执行 yog2 release debug --fis3后代码会部署到yog服务里。

问题来了 ...

image

为什么蓝色区域require的资源并不是已经加过hash压缩的资源呢?? 该如何解决 .. @hefangshi

zhiqiang21 commented 7 years ago

yog2中加载非模块化的静态文件资源有两种方式

  1. <script>标签的方式
  2. 就是你是用的方式。

你写的方式并不会在模板里显示hash戳,你去yog/conf/fis目录下会有个xxx.json的文件,那个文件的内容就是require方式加载文件和实际文件的映射关系

比如我这种,你可以编译下,然后在浏览器里面运行下看是否加了hash戳

eugeneCN commented 7 years ago

感谢,确实是这样,解决了我的疑问。

还有个关于打包的问题... 先看一张页面需要的脚本文件.. 如下图

image

  1. mod.js --- 不解释
  2. jquery.js --- 不解释
  3. footer.js --- 该页面的footer组件下的js
  4. swiper.js --- 不解释
  5. util.js --- 全局公共方法
  6. index.js --- 该页面js

有个想法 .. 是否可以将已引用的js分别打包成一个文件。

比如 jquery、swiper合并成一个文件,index、footer合并成一个文件。 之前用过 fis3-packager-deps-pack 此插件,但是有一个问题,多个jq这样的库打包成一个lib.js文件,所有页面都会引入lib.js,我登录页面不需要swiper这个库,但lib.js已经将swiper合并起来了,那打包的意义就不理解了呢,多次请求好,还的载入一个大的文件合适??

还有其他页面,也是如此。。只打包引用到的文件,yog2是否可以做到。

zhiqiang21 commented 7 years ago

其实感觉没有必要哈,如果是lib库我觉得打包成一个,在第一次加载的时候就缓存了,以后的页面使用这个文件使用的也是缓存的文件。但是如果你非得想按照你的想法做的话fis3-packager-deps-pack这个插件是支持语法 的可以在打包的时候排除某些文件。你可以看下这个插件的文档。

eugeneCN commented 7 years ago

谢谢 @zhiqiang21 redis问题