fis与AMD

百度前端团队搞了一个叫fis(http://fis.baidu.com/)的构建工具,逐步被很多团队使用,例如腾讯内部有些项目就是用fis构建了。fis相对grunt等构建工具而言,更加简单易用,并且提供了完整的解决方案。缺点就是bug很多,出现问题往往只能通过看源码来解决。总的来讲,fis还是值得一试的。

前端已经逐渐摆脱面条式编码的过去了,如果现在的新项目还是面条式的js代码,那么实在对不住时代的发展。模块化开发应该成为前端主要的构架方式,在当前的项目我都是使用requirejs帮助实现模块化,但是模块化开发的问题是文件零碎,会产生大量的http请求,所以发布的时候一定要打包。自从使用fis之后,我一直在折腾优雅的AMD打包,走了很多弯路,终于整了一个比较舒服的方式,跟大家分享一下。

下面的配置是AMD模块的基本配置。fis3之后是通过一个叫fis3-hook-amd的插件帮助实现AMD。首先helpers, libs, services文件夹里面的文件应该被打包到一个文件当中。

// 采用 AMD 规范支持模块化组建开发
fis.hook('amd', {
  baseUrl:'.',
  // paths: map.app,
  packages: [
    {
      name: 'helpers',
      location: './helpers',
      main: 'helpers.js'
    },
    {
      name: 'libs',
      location: './libs',
      main: 'libs.js'
    },
    {
      name: 'app',
      location: './modules/application',
      main: 'app.js'
    },
    {
      name: 'services',
      location: './services',
      main: 'services.js'
    }
  ]
});

plugins 文件夹当然配置成非AMD模式,否则会导致很多问题的。

fis.match('/plugins/**.js', {
  isMod: false
});

然后是最终打包的配置,把map独立到一个叫map.js的文件

fis.match('::package', {
  postpackager: fis.plugin('loader', {
    resourceType: 'amd',
    // allInOne: true,
    useInlineMap: false,
    resoucemap: '/map.js',
    include: [
      '/modules/application/**.js'
    ]
  })
});

上述打包方式还有需要优化的地方,待稳定之后再更新到github.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值