本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

时间:2016-10-01 22:18来源:天下彩论坛 作者:118KJ 点击:
【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!,一小时学会webpack

  今天上完班,7天国庆长假就来了,直播,有准备去哪里浪了吗?ok,今天我们继续分享由好奇心日报@齐修带来的前端工程实战。

  正文从这开始~

  怎么设计gulp & webpack构建系统?

  构建系统的目录结构

  我们用单独的appfe目录存放了构建系统的代,以及按前端开发习惯组织的项目代

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  gulp构建系统目录结构

  从上图看出,gulp 构建系统主要分为以下几个部分:

appfe/gulpfile.js:gulp入口文件,除了引入gulp子任务不包含任何逻辑。

appfe/gulp/tasks/*:构建系统的普通子任务和综合子任务,每个文件包含逻辑相关的所有子任务。

appfe/gulp/config.xxx.js:构建系统的配置文件,每个配置文件包含所有子任务需要的参数,不同的配置文件对应不同的项目。

appfe/gulp/libs/*:构建系统的一些工具函数和辅助文件。

  gulp入口文件不要包含任务逻辑

  不要尝试将所有任务的逻辑全部放到gulp入口文件中,那样的话,随着项目变得复杂,gulp入口文件将变得无法维护。

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  拆分子任务到单独的文件

  将子任务拆分成单独的文件,能够加强其复用性。

  此外,个人强烈推荐使用就近原则来组织代码,这样可以让代码更清晰,逻辑更集中,开发体验更舒服。对于一个组件来说,就近原则就是将组件相关的文件全部放到一个目录下,对于一个子任务来说,就近原则就是将相关的任务逻辑全部放到一个文件中。

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  就近原则-组件和子任务

  项目的配置信息不应该放到子任务中

  gulp/config.xxx.js文件包含项目的配置信息,比如要处理的文件,处理后输出到什么地方等。子任务不应该包含这些信息,而是通过配置文件传入。这样做是为了解耦子任务和项目之间的关系,也方便后续对多项目的支持。

  抽离工具函数,开奖,放到单独的目录

  工具函数应该是和子任务逻辑无关的通用逻辑,比如格式化时间,美化日志输出,错误处理等,同样也是为了提高工具函数的复用性。

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  怎么设计gulp普通子任务?

  子任务的设计严格遵循了上文提到了就近原则,这样可以让子任务的逻辑高度集中,便于维护,开发体验也更流畅。

  好奇心日报的构建系统覆盖了常规的gulp子任务,包括:

fonts任务:处理iconfonts文件。

images任务:压缩图片,移动图片。

rails任务:初始化rails项目需要的一些helper/controller/config文件,通常是一些辅助且通用的文件,如果你是PHP项目或者JAVA项目,可以开发对应的辅助文件。

rev任务:生成时间戳信息,解决浏览器JS/CSS/图片的缓存问题。

sprites任务:自动合并精灵图,告别手工时代。

statics任务:处理常规的静态文件,比如404.html、500.html等。

views任务:压缩/预处理/条件编译HTML、移动HTML。

webpack任务:整合webpack到gulp构建系统,用来管理JS/CSS。

  webpack子任务是所有子任务中最复杂的一部分,之前有一篇博文专门介绍过,强烈建议阅读 前端工程化实践 之 整合gulp/webpack

  下面,我挑出几个典型的gulp子任务来分析分析。为了让代码更可读,我在代码中添加了很多注释,同时删掉了不太重要的部分。

  views子任务

  该子任务很丰富,包含了很多功能:压缩/预处理HTML,过滤HTML,多起点目录输入。

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  images子任务

  该子任务比较简单,主要就是压缩图片,然后将图片输出到指定目录中

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  sprites子任务

  该子任务就是自动合并精灵图,生成的文件是作为中间产物,进一步提供给其他任务处理,所以该任务不需要build版本。

  此外有个地方需要注意一下,每个任务都只能返回一个流,如果想处理多个返回多个流的情况,可以通过merge2合并然后返回,很棒的功能。

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  webpack子任务

  该子任务相对来说复杂很多,有很多细节,比如:

  为什么watch:webpack子任务没有callback()回调?如何处理development/production模式?等等...

  更详细的内容可以参考之前写的一篇博客 前端工程化实践 之 整合gulp/webpack

  

报码:【j2开奖】【第718期】想要设计gulp webpack构建系统?看这儿!

  怎么设计gulp综合子任务?

  综合子任务不包含逻辑,都是将前面的子任务拼装起来,以供命令行使用,比如构建、清理,监听。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容