亚信UED前端流程自动化构建工具

.wmd-input, .wmd-input:focus, #md-section-helper {font-size: 14px !important;line-height: 24px !important;}
#wmd-preview {font-size: 14px !important;line-height: 24px !important;}

#wmd-preview h1 {
color: #0077bb; /* 将标题改为蓝色 */
}

亚信UED前端流程自动化构建工具

aiflow 亚信 gulp


项目由亚信CMC UED团队创建,用于解决前端项目构建的流程管理,以及复杂度问题解决。

1. 项目初始化,安装相关依赖

  1. npm install

2. 启动服务

  1. npm start

3. 相关配置说明

3.1 服务端口

配置文件路径:

src/common/config/config.js

  1. export default {
  2. port: 1234
  3. }

框架默认的端口号为:1234

服务启动后,即可通过: localhost:1234 访问

3.2 项目配置

路径:

// 系统初始项目配置

src/common/config/initpro.js

// 以 aipro 为前缀命名

src/common/config/aiproxxxx.js

// 如:

src/common/config/aipro_liyz.js

...

  1. export default {
  2. 'pro': [
  3. {
  4. // 项目编号,值必须唯一,用于标记项目的唯一性属性
  5. sn: '2016-SN12',
  6. // 项目工程名称,必须唯一
  7. name: 'gqkuandai',
  8. // 项目标题
  9. title: '陕西宽带国庆活动',
  10. // 项目类型: web or wap
  11. type: 'web',
  12. // 项目展示平台: pc or phone
  13. dev: 'pc',
  14. // 项目日期
  15. date: '2016-10-09',
  16. // 展示平台为 phone 时, 单位 px 转 rem 时的换算单位。
  17. // 当展示为 phone 外的其他值时,不考虑该配置值。
  18. // 取值以设计稿的最大宽度为依据,分为10份,
  19. // 取其中一份为 remUnit 值。
  20. // 如设计稿最大宽度为 750px,此只 remUnit 的配置值为: 750 / 10 = 75
  21. remUnit: 75,
  22. // less\css\sass\postcss
  23. // 当前仍只支持前两种
  24. compileCss: 'less',
  25. // SVN地址
  26. svn: ''
  27. },
  28. //...
  29. ]
  30. }

多个项目,以数组方式配置在这个数组中。

4. 相关任务流程

任务参数包括:

pro 指定任务所对应的项目名称,对应于项目配置中的 pro.name;

sn 指定任务所对应的项目编号,对应于项目配置中的 pro.sn;

4.1 初始化任务

  1. gulp init --pro gqkuandai
  2. # or
  3. gulp init --sn 2016-SN12

以上两个命令等效。

执行的结果中,会对于项目的文件夹初始结构构建完成,并包含有相关的基础性代码。

  1. src
  2. |-gqkuandai
  3. |-config
  4. |-data.js
  5. |-controller
  6. |-app.js
  7. |-base.js
  8. view
  9. |-gqkuandai
  10. |-public
  11. |-block
  12. |-head_all.html
  13. |-head_wap.html
  14. |-head_web.html
  15. |-frame
  16. |-app_index.html
  17. www
  18. |-static
  19. |-gqkuandai
  20. |-src
  21. |-css
  22. |-less
  23. |-...
  24. |-src
  25. |-...
  26. |-images
  27. |-...
  28. |-js
  29. |-comm.js
  30. |-lib
  31. |-...

4.2 项目监控任务

  1. gulp default --pro xxxx
  2. # or
  3. gulp --pro xxxx
  4. # or
  5. gulp default --sn xxxx
  6. # or
  7. gulp --sn xxxx

用于监控项目开发过程中,项目代码的变动,实现实时编译、刷新及浏览器同步,浏览器的同步服务端口号为:3000

4.3 项目编译任务

  1. gulp make --pro xxxx
  2. # or
  3. gulp make --sn xxxx

用于编译开发过程中,模块化样式编写方式时,将各分文件合并,并解析其样式变量等。

4.4 项目发布任务

  1. gulp dist --pro xxxx
  2. # or
  3. gulp dist --sn xxxx

当项目开发完成后,我们模块化开发方式的各文件通过编译及解析,并将相关文件统一打包为ZIP文件,完整输出静态文件,以此来规避发布过程中的犯错机率,以及分发时的方便性快捷性。

4.5 项目归档任务

  1. gulp archive --pro xxxx
  2. # or
  3. gulp archive --sn xxxx

在IDE开发工具中,因各项目不断积累,导致IDE工具建立索引过多,而导致工具变慢,归档操作是将相关的项目源码归档到可以设置为忽略建索引的目录(本项目是设置位置为:./archive)。

项目归档后,我们可以将原项目开发目录删除,减少IDE在索引计算上的开销,以此来提升IDE的响应速度。

为了快速完成该动作,插件中支持了一个快速操作的任务: archive:del,该任务执行的操作是,将项目源码归档到 archive 目录后,再将原开发目录中的相关内容删除。(请慎重使用该任务)

  1. gulp archive:del --pro xxxx
  2. # or
  3. gulp archive:del --sn xxxx

4.6 项目重加载任务

  1. gulp reload --pro xxxx
  2. # or
  3. gulp reload --sn xxxx

这是归档任务的反操作,当我们将某一项目归档处理后,可能后期的某个时间点,我们仍需要处理这个项目,但当前的项目文件已被归档,开发IDE对于它已不工作,因此,这里通过这个任务,重新将已归档的任务重新加载到环境中。

4.7 项目删除任务

  1. gulp delpro --pro xxxx
  2. # or
  3. gulp delpro --sn xxxx

用于删除某一个项目源码。

本操作需要非常小心,除非十分明确,本项目的源码已不再需要,否则请不要执行本任务。本操作的执行结果,会彻底清空该项目的源码,清除后,无法恢复。

当不太确定是否还需要该项目的源码存在于IDE中时,但又不想该项目的相关代码对自己当前工作产生干扰,此种情况下,最好选择归档操作。

4.8 自动化构建工具源码发布任务

  1. gulp release

此时,任务会将当前自动化构建工具源码执行编译打包源码,并使用package.json中的相关配置信息生成相关的版本号等信息命名格式的发布文件。

发布所在的目录路径为:

  1. releases/0.0.x/*
  2. releases/aiui-frame-0.0.x-2016xxxxxxxxxx.zip

4.9 项目列表任务

  1. gulp list

当整体的项目工程中,任务配置数量经积累较多后,整个工程中的项目会很多,在某个时候我们有可能需要查看工程中所有的项目信息,这时,可以通过该任务查看工程中的项目列表信息。

如:

  1. gulp list
  2. [00:43:54] Requiring external module babel-register
  3. [00:43:54] Working directory changed to C:\project\aiui_dev
  4. ==================================================================
  5. -- 项目列表
  6. [00:43:56] Using gulpfile C:\project\aiui_dev\gulpfile.babel.js
  7. [00:43:57] Starting 'list'...
  8. ------------------------------------------------------------------
  9. -- 框架初始化样例项目 项目信息
  10. ------------------------------------------------------------------
  11. Project title:: 框架初始化样例项目
  12. Project SN:: 2016-PI001
  13. Project Name:: init
  14. Surport Device Type:: pc
  15. ------------------------------------------------------------------
  16. ------------------------------------------------------------------
  17. -- 陕西网厅客户关怀平台 项目信息
  18. ------------------------------------------------------------------
  19. Project title:: 陕西网厅客户关怀平台
  20. Project SN:: 2016-SN03
  21. Project Name:: sxwt
  22. Surport Device Type:: pc
  23. ------------------------------------------------------------------
  24. [00:43:57] Finished 'list' after 11 ms

以上是 list 任务的一个完整输出的实例。

4.10 某项目包含页面列表任务

  1. gulp listpages

用于列出某一项目中,包含的所有页面配置信息。

  1. gulp listpages --pro sxwt
  2. [00:56:42] Requiring external module babel-register
  3. [00:56:42] Working directory changed to C:\project\aiui_dev
  4. ==================================================================
  5. -- sxwt 项目包含页面列表
  6. ------------------------------------------------------------------
  7. -- Gulp task params
  8. ------------------------------------------------------------------
  9. Project title:: 陕西网厅客户关怀平台
  10. Project SN:: 2016-SN03
  11. Project Name:: sxwt
  12. Device Type:: pc
  13. ------------------------------------------------------------------
  14. [00:56:45] Using gulpfile C:\project\aiui_dev\gulpfile.babel.js
  15. [00:56:45] Starting 'listpages'...
  16. ------------------------------------------------------------------
  17. -- 陕西网厅客户关怀平台 项目页面信息
  18. ------------------------------------------------------------------
  19. --
  20. -- Page title:: 陕西网厅首页
  21. -- Page file name:: index.html
  22. --
  23. ------------------------------------------------------------------
  24. ------------------------------------------------------------------
  25. --
  26. -- Page title:: 陕西网厅E币福利
  27. -- Page file name:: fuli.html
  28. --
  29. ------------------------------------------------------------------
  30. [00:56:45] Finished 'listpages' after 176 ms

从以上实例可以看到,当前项目中包含两个页面:index.html fuli.html

4.11 项目信息搜索任务

  1. gulp search --key xxxx

本任务用于在项目列表搜索包含相应关键词的项目。

其中的关键词可以指向的搜索范围是:

项目标题、项目序列号、项目名称

如:

  1. gulp search --key 陕西
  2. [01:00:38] Requiring external module babel-register
  3. [01:00:38] Working directory changed to C:\project\aiui_dev
  4. ==================================================================
  5. -- 搜索项目
  6. [01:00:41] Using gulpfile C:\project\aiui_dev\gulpfile.babel.js
  7. [01:00:41] Starting 'search'...
  8. -- 搜索关键词为:: 陕西
  9. ------------------------------------------------------------------
  10. -- 陕西网厅客户关怀平台 项目信息
  11. ------------------------------------------------------------------
  12. Project title:: 陕西网厅客户关怀平台
  13. Project SN:: 2016-SN03
  14. Project Name:: sxwt
  15. Surport Device Type:: pc
  16. ------------------------------------------------------------------
  17. [01:00:41] Finished 'search' after 3.83 ms

以上为一个搜索关键词为:陕西,的项目搜索命令实例。

5. 项目开发流程

在所有工具提供出来后,所给出的最为重要的是一种解决问题的思路。

在本工具中,在开发项目过程中设计了一种大体的任务流程。

流程为:


  1. 确定项目基本信息,并配置好相关项目信息配置文件;
  2. 执行项目初始化任务,初始化自动生成相关项目目录结构及初始化文件;
  3. 分析项目页面组成,及各页面相关的数据配置;
  4. 项目开发及调试;

5. 开发完成,打包及发布;

以下将以陕西客户关怀项目为例,实例讲解使用过程

5.1 项目信息确定及配置

项目信息为:

  1. 项目编号: 2016-SN03
  2. 项目名称: sxwt
  3. 项目标题: 陕西网厅客户关怀平台
  4. 项目类型: web
  5. 针对设备: pc
  6. 项目日期: 2016-09-18
  7. rem单元: 20
  8. SVN地址:
  9. ...

项目配置文件路径:

  1. src/common/config/aipro_liyz.js

配置信息

  1. export default {
  2. 'pro': [
  3. {
  4. sn: '2016-SN03',
  5. name: 'sxwt',
  6. title: '陕西网厅客户关怀平台',
  7. type: 'web',
  8. dev: 'pc',
  9. date: '2016-09-18',
  10. remUnit: 20,
  11. svn: ''
  12. },
  13. //...
  14. ]
  15. }

5.2 项目初始化

在项目根目录下执行

  1. gulp init --pro sxwt
  2. # or
  3. gulp init --sn 2016-SN03

5.3 分析面组成

首页: index

福利页: fuli

配置文件路径:

  1. src/sxwt/config/data.js

配置文件内容:

  1. export default {
  2. 'pages': {
  3. index: {
  4. action: 'index',
  5. title: '陕西网厅首页',
  6. data: {
  7. 'curr': 'index',
  8. 'userInfo': {
  9. name: '星空',
  10. avatar: '/images/avatar_1.png',
  11. level: 6,
  12. levelName: '高手',
  13. levelImg: '/images/level_06.png',
  14. eNum: 388,
  15. curIntegral: 3001,
  16. nextLevelIntegral: 4000
  17. },
  18. 'duihuanList': [
  19. {
  20. img: '/images/i_p_001.png',
  21. title: '10元话费',
  22. btText: '10E币兑换',
  23. validDate: '2016-09-19至2016-09-30',
  24. zhekou: '9.5折',
  25. count: '4582'
  26. },
  27. //...
  28. ]
  29. }
  30. },
  31. fuli: {
  32. action: 'fuli',
  33. title: '陕西网厅E币福利',
  34. data: {
  35. 'curr': 'fuli'
  36. }
  37. }
  38. }
  39. }
  40. // action 和 title 属性为必须,并且 action 与当前页面名称保持一致。
  41. // 其中的 data 属性为用户随意依需求定义,只需要语法正确即可。

5.4 项目开发及调试

相关的任务

  1. # 控监任务
  2. gulp --pro sxwt

固有变量说明:

  1. // 用于定义项目的所有静态资源路径的前缀,该变量只出现在 HTML 文档中
  2. {{proUrl}}
  3. // 如下图片的输出写法
  4. <img src="{{proUrl}}/images/banner.png"/>
  5. // 用于指定项目的页面访问链接前缀,只与我们定义的各页面链接相关,如 index.html or fuli.html
  6. {{proUri}}
  7. // 如下导航栏上的链接写法
  8. <li class="app-index"><a href="{{proUri}}/index.html">首页</a></li>

页面文件新建路径为:

  1. view/sxwt/xxx.html

页面的命名规范为:

  1. # 以字母开头,字母、数字及下划线组成
  2. # 以 app_ 为前缀
  3. # 命名取配置文件中的名称,如首页的命名为:
  4. app_index.html
  5. # 福利页面的命名为:
  6. app_fuli.html

项目所有的静态资源存放位置:

  1. # 根目录
  2. www/static/sxwt/src/
  3. # 图片
  4. www/static/sxwt/src/images/
  5. # css
  6. www/static/sxwt/src/css/src/main.css
  7. # js
  8. www/static/sxwt/js/comm.js
  9. # 公用库,如:jquery等
  10. www/static/sxwt/lib/

更为详细的语法,可以参考 thinkjs 的官方文档,包括其中的模块化写法,以及各模板变量的语法格式等。

5.5 项目打包发布

当项目代码编写开发完成后,相应的模块化开发的代码编译合并打包整体发布

  1. gulp dist --pro sxwt

发布的文件路径为:

  1. www/static/sxwt/dist
  2. # 压缩文件
  3. www/static/sxwt/dist/2016-SN03.陕西网厅客户关怀平台-20161102104558.zip

5.6 工具自动升级

当在开发过程中,发现在MAC类系统中,当解压文件到某个目录时,发现如若原来目录下不为空时,目录内的相关文件的默认操作不是合并,还是直接覆盖,这样会导致原有文件丢失。

在这种情况下,我考虑到将软件的升级定义成一个自动化或是半自动化的过程。

操作过程:

1. 将最版本升级包(zip)下载到项目目录中的: releases ,目录。

2. 运行以下命令

  1. gulp update
  1. 运行结果类似如下内容
  1. C:\project\aiflow (master) (aiui-automation-workflow@0.0.8)
  2. λ gulp update
  3. [14:30:02] Requiring external module babel-register
  4. ==================================================================
  5. -- 软件升级
  6. [14:30:06] Using gulpfile C:\project\aiflow\gulpfile.babel.js
  7. [14:30:06] Starting 'update'...
  8. -- 当前版本号:: 0.0.8
  9. -- 当前版本发布日期:: 20170215161606
  10. --
  11. -- 当前版本已是最新,无需升级!
  12. ------------------------------------------------------------------
  13. [14:30:06] Finished 'update' after 11 ms

亚信UED前端流程自动化构建工具的更多相关文章

  1. 前端项目自动化构建工具——Webpack入门教程

    参考资料:https://www.webpackjs.com/(中文文档)   https://www.webpackjs.com/(官方文档) 首先有必要说明一下,本文侧重讲解webpack基本配置 ...

  2. 前端打包/自动化构建工具:gulp

    glup可以进行打包,并且可以实现类似/script/test-adsf123.js或者/script/test.js?v=asdf123 参考: http://www.ydcss.com/archi ...

  3. 前端打包/自动化构建工具:fis3

    据说这个可以进行打包,并且可以实现类似/script/test-adsf123.js或者/script/test.js?v=asdf123 先做个记号 参考:http://fis.baidu.com/

  4. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  5. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  6. 前端自动化构建工具 gulp 学习笔记 一、

    一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ...

  7. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  8. 前端自动化构建工具——gulp

    gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...

  9. 前端自动化构建工具 Gulp 使用

    一个月没写博客了,今天有时间,就写个gulp的入门使用吧.. 简介:gulp是一个前端自动化构建工具,可以实现代码的检查.压缩.合并……等等,gulp是基于Node.js的自动任务运行器 一.安装No ...

随机推荐

  1. JS的join方法

    join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 例子 1 在本例中,我们将创建一个数组,然后把它的所有元素放入一个字符串: <script type ...

  2. C# format 日期 各种 符号 实例分析如何精确C#日期格式到毫秒

    摘 自: http://developer.51cto.com/art/200908/141145.htm 实例分析如何精确C#日期格式到毫秒 2009-08-03 10:48 paulfzm jav ...

  3. KRBTabControl

    This article explains how to make a custom Windows Tab Control in C#. Download demo project - 82.4 K ...

  4. [Angular] Extract Implementation Details of ngrx from an Angular Application with the Facade Pattern

    Extracting away the implementation details of ngrx from your components using the facade pattern cre ...

  5. Junit核心——测试类(TestCase)、测试集(TestSuite)、测试运行器(TestRunner)

    首先,把这三个定义简单的说明一下: 1.测试类(TestCase):一个包含一个或是多个测试的类,在Junit中就是指的是包含那些带有@Test注解的方法的类,同一样也被称作“测试用例”; 2.测试集 ...

  6. Win7如何关闭 打开文件-安全警告

    如图所示,运行一个EXE程序就会弹出提示,很麻烦.   在运行对话框中输入gpedit.msc打开组策略编辑器.定位到用户配置--管理模板--windows组件--附件管理器 点中等危险文件类型抱含列 ...

  7. Android开发 之 我的jar包引用方法

    1.在工程上名上右键->Build Path ->Configure Build Path 2.在Libraries选项卡中,选择右侧的Add External JARs,然后选择要导入的 ...

  8. iOS sort array 数组排序里面的对象

    一:如下代码 //对数据按次数排序 NSArray *sortArrays = [pinCiDataArray sortedArrayUsingComparator:^NSComparisonResu ...

  9. com.android.support冲突的解决办法

    All com.android.support libraries must use the exact same version specification (mixing versions can ...

  10. Unity 逻辑层通知UI 通过接口消除他们通信的switch判断

    需求如何:  用户名字长度为2-12之间,  如果错误在界面上弹出一个消息框 写烂一点 public void PostRename(string name) { if (string.IsNullO ...