1.什么是前段集成解决方案?

将前端研发领域中各种分散的技术元素集中在一起,并对常见的前端开发问题、不足、缺陷和需求,所提出的一种解决问题的方案

2.yeoman

应用的架构,模型!  相当于一个生成器,,通过模具生成框架

安装Yeomen

npm install -g yo

安装anluarjs应用模型(安装模具)

npm isntall -g generator-angular

生成angular项目

yo angular appName

在自动生成过程中有多个选择,按自己的项目需求进行选择获取项目框架。

3.bower

版本管理控制工具

安装bower

npm isntall -g bower

4.grunt

安装grunt

npm  install -g grunt-cli

yeomen是基于node生成的,所以首先访问的是package.json文件;

这个文件是一个对象形式表现的(基本介绍):

name---项目名(并不是文件名)

version---版本号

dependencies---项目在生成环境中依赖的包

devDependcies---开发时候的依赖的包

engines----当前需要的版本

scripts----可以直接使用NPM的脚本命令

生成项目中的其他文件基本介绍:

Gruntfile.js文件---grunt配置文件

bower.json文件-----bower配置文件

.travic.yml文件-----为开源打造的集成环境

.jshintrc文件-----jshin的配置文件

.gitignore--------指定当前要忽略的文件,不上传到git

.gitattrbutes-----git配置文件

.editorconfig-----定义编辑时候的风格

.bowerrc----------bower的配置项

test-------提供自动化测试

.babelrc -------- ec6 向 ec5进行转码

5.grunt配置文件

grunt作为函数的参数传递;

每一个Gruntfile文件 grunt- 都有一个这样最外层结构,require funcation

task 任务

代码压缩、目录清除、创建目录、都称之为任务

initConfig(opt)中配置的单元task,每一task都可以单独存在和执行

sass:将sass文件转换成css文件并生成到对应的文件{
dist:{
  files:[{
    expand:true,
    cwd:'<%= config.app %>/style',
    src:['*.{scss,sass}'],
    dest:'.tmp/style',
    ext:'.css'
  }]
}

registTask(name,funcation(){
  grunt.task.run([
    task,
    task
  ])
})

6.从无到有构建Grunt项目

进入更目录 运行                                   npm init

安装grunt                                          npm install grunt --save-dev

安装load-grunt-tasks                          npm install load-grunt-tasks --save-dev

安装文件copy                                     npm install grunt-contrib-copy --save-dev

安装文件删除                                      npm install grunt-contrib-clean --save-dev

创建Gruntfile文件

module.exports=funcation(grunt){

  require('load-grunt-tasks')(grunt);

  var config={

    app:'app',

    dist:'dist'

  }

  grunt.initConfig({

    config:config,

    //配置copy命令

    copy:{

      //方法一

      files:{

        //将src的文件复制到dist中

        dest:src,

      }

      //方法二

      files:{

        expand:true,                                               //将cwd目录下的所有 .html文件 复制到dest中 后缀名改为 .min.html

        cwd:'<%= config.app %>/',                         //源文件目录

        src:'.html',                            //源文件格式

        dest:'<%= config.dist %>/',                         //目的目录

        ext:'.min.html',                  //目的文件的后缀名

extDot:'first/last'                                          //选中第一个点开始  改后缀名,

        flatten:false/true                                          //true创建对应的文件目录

        rename:funcation(dest,src){          //自定义名称

          retrun dest+"js/"+src;

          }

        }

      },

    clean:{

      dist:{

        src:<%= config.dist %>/**/*,                       //清除所有目录,或者目录下的文件

        filter:'fnName'||funcation(filePath){ retrun true/false },

        dot:true/false                  //.的配置文件

      }

     }

    })

}

7.grunt和grunt任务

npm uninstall -g grunt                             删除grunt

npm install -g grunt-cli                            安装grunt

配置任务

任务都是定义在initConfig中

配置任务和目标 (可以在任务配置多个目标,执行多个任务------concat任务中配置两个目录(执行两个任务),uglify中配置一个目标(执行一个任务))

grunt.initConfig({

   concat: {

    foo: {   concat task "foo" target options and files go here.  },

    bar: {   concat task "bar" target options and files go here.  },  

  },

  uglify: {

    bar: {   uglify task "bar" target options and files go here.  },

  }

})

grunt.loadNpmTasks('grunt-contrib-uglify');        //加载任务的对应grunt插件(先npm install)
grunt.registerTask('default', ['uglify']);               //注册任务,这样才能用grunt命令执行该任务

concat,uglify都可以单独执行它下面的某一个任务

执行单个目标任务        指令:grunt contat:foo (执行目标任务--foo)

*基本的属性介绍

uglify 压缩js文件
concat 合并文件
cssmin 压缩css
jshint 检测JS文件
nodeunit node测试
htmlhint 检测html
watch 监控文件变化
qunit 单元测试
connect 连接服务器

dist 任务
files 配置多个源文件到目标文件的映射
cwd 源文件目录
src 源文件
dest 目标文件
options 默认设置
ext 后缀名
filter 过滤器(函数或者函数名)
nonull 非空
dot 。替换的位置
expand 执行一个动态的 源文件到目标文件的映射

匹配模式

**----任意字符,包括反斜杠
*-----任意字符,不包括反斜杠
?*----任意一个字符
{a,b}-a,b中的任意字符
!----取反

动态创建文件

expand:设为 true 来启用下面这些属性。
cwd:所有的 src 都相对于此路径(但是不包含)。
src:需要匹配的模式,相对于cwd。
dest:目标文件。
ext:在dest中的所有文件后缀都替换掉。
flatten:在dest中的所有路径的片段都替换掉。
rename:每当匹配到一个src时,都会调用此方法(在ext和flatten执行之后)。dest和src属性会被当参数传入,这个函数必须返回一个新的dest值。如果相同的dest被返回超过一次,每一个用它的src都会被添加到一个源数组。

注册多任务

grunt.initConfig({

  log: {

    foo: [1, 2, 3],

    bar: 'hello world',

    baz: false

  }

})

grunt.registerMultiTask('log', 'Log stuff.', function() {
  grunt.log.writeln(this.target + ': ' + this.data);
});

运行             grunt log:foo             打印[1,2,3]

运行             grunt log:bar             打印'hello world'

注册基本任务

grunt.registerTask('foo', 'A sample task that logs stuff.', function(arg1, arg2) {
  if (arguments.length === 0) {
    grunt.log.writeln(this.name + ", no args");
  } else {
    grunt.log.writeln(this.name + ", " + arg1 + " " + arg2);
  }
});

运行           grunt foo:testing:123            打印"foo, testing 123"

自定义任务

grunt.registerTask('foo', 'My "foo" task.', function() {
  可以运行其他任务
  grunt.task.run('bar', 'baz');        //执行bar.baz
});

前段集成解决方案grunt+yeoman初步认识

前段集成解决方案grunt+yeoman初步认识的更多相关文章

  1. Atitit easyui翻页组件与vue的集成解决方案attilax总结

    Atitit easyui翻页组件与vue的集成解决方案attilax总结 ===============使用1 ===========\paggingUtil_easyui_vue.js2 C:\U ...

  2. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  3. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  4. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  5. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)

    前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...

  6. 【转】外部应用和drools-wb6.1集成解决方案

    一.手把手教你集成外部应用和drools workbench6.1 1.         首先按照官方文档安装workbench ,我用的是最完整版的jbpm6-console的平台系统,里面既包含j ...

  7. FIS前端集成解决方案

    FIS前端集成解决方案-文档结构 什么是FIS 部署FIS FIS基本使用 模块定义 加载方式 调用Tangram 2.0 FIS开发实例 --附件下载-- 什么是FIS FIS提供了一套贯穿开发流程 ...

  8. 【转自IT虾米网:www.itxm.net】外部应用和drools-wb6.1集成解决方案

    一.手把手教你集成外部应用和drools workbench6.1 1.         首先按照官方文档安装workbench ,我用的是最完整版的jbpm6-console的平台系统,里面既包含j ...

  9. Jmeter+jenkins如何快速搭建接口和性能测试持续集成解决方案-[基于windows篇]

    最近在用Jmeter本来想写一个详细的使用教程,突然看到有前辈已经写好了不错的教程,特此"借花献佛"整理出来分享给大家! Jenkins + Jmeter 构建接口.性能测试持续集 ...

随机推荐

  1. kafka_2.11-0.8.2.2.tgz的3节点集群的下载、安装和配置(图文详解)

    kafka_2.10-0.8.1.1.tgz的1或3节点集群的下载.安装和配置(图文详细教程)绝对干货 一.安装前准备 1.1 示例机器 二. JDK7 安装 1.1 下载地址 下载地址: http: ...

  2. [转]MVC4项目中验证用户登录一个特性就搞定

    本文转自:http://www.mrhuo.com/Article/Details/470/A-Attribute-For-MVC4-Project-Used-To-Validate-User-Log ...

  3. Java 8 (2) 使用Lambda表达式

    什么是Lambda? 可以把Lambda表达式理解为 简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. 使用Lambda可以让你更 ...

  4. DecorView 的创建

    在Activity 的启动过程中,调用ActivityThread 的handleResumeActivity 方法时,先得到一个与Activity 关联的PhoneWindow 对象,然后通过Pho ...

  5. ubantu MongoDB安装

    转 https://blog.csdn.net/flyfish111222/article/details/51886787 本博文介绍了MongoDB,并详细指引读者在Ubuntu下MongoDB的 ...

  6. 如何把mysql的列修改成行显示数据简单实现

    如何把mysql的列修改成行显示数据简单实现 创建测试表: 1: DROP TABLE IF EXISTS `test`; 2: CREATE TABLE `test` ( 3: `year` int ...

  7. C++11:using 的各种作用

    C++11中using关键字的主要作用是:为一个模板库定义一个别名. 文章链接:派生类中使用using别名改变基类成员的访问权限  一.<Effective Modern C++>里有比较 ...

  8. centos 搭建pptp

    很多朋友不会在CENTOS 在安装vpn,因为对于菜鸟来说安装VPN的确是个头晕的事情,特别是安装openvpn,不过安装pptp就稍微简单一点,国内网上有很多安装pptp的教程,但是都很繁杂,我在国 ...

  9. CAD得到多行文本(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::Mx_GetMTextContent 得到多行文本的,不包括格式控制符中的字符串值,详细说明如下: 参数 说明 LONG lId 多行 ...

  10. django在验证登录页面时遇到的数据查询问题

    数据库查询时针对不存在的用户名进行验证 django在查询数据库时,可以使用get和filter两种方法. 两者的区别 当数据库内不存在该数据时,get会返回异常,而filter会返回空. 当数据库内 ...