摆脱混乱的html文件中开发,拥有development与product模式是我们梦寐以求的。

我买的需求是:

1.产出一定格式的目录结构,以供日常开发使用,脚手架功能。
2.在开发模式环境中我们按照文件类型不同分开开发,甚至html也分成小的区块widget化利于协作开发和维护,产出时合并成一个html,外联资源inline化。
3.在编码过程中实时保存并自动刷新浏览器,可以查看结果。
4.编码过程中进行代码检查,单元测试。
5.产出环境我们把这些碎片文件按照逻辑顺序压缩合并打包到一起组合成html,减少请求和代码体积。
6.上线后生成开发文档。

grunt 有没有这样的能力呢,接下来我们一起探索。

1.脚手架功能

grunt-init插件

npm install -g grunt-init

装好后要安装模板

git clone git://github.com/gruntjs/grunt-init-gruntplugin.git ~/.grunt-init/gruntplugin

详细

自己也可以根据要求创建自定义模板。

2.include功能

grunt-incoludes插件 (第三方

npm install grunt-includes
include "content.html"  //注意指令前后不要添加任何符号,会影响正则匹配(本人在最后面添加了一个;被卡了很久)  

详细

3.刷新浏览器

a.自动刷新功能

目前来说只实验了chrome浏览器,有关刷新的插件有两款。

livepage

livereload

这两款插件在chrome store中可以找到,都可以实现修改文件就刷新浏览器的功能。大家可以看看介绍,自行选择。

我选择livepage,因为启动后比较醒目。

b.自动保存我用的是webstorm 。。。。。所以没有去找这个功能。

4.

a.代码检查

grunt-contrib-csslint

grunt-contrib-jshint

b.单元测试

grunt-contrib-qunit

5.压缩、打包

npm install grunt-contrib-cssmin//css压缩

  详细

npm install grunt-contrib-uglify//注明的js压缩工具

  详细

npm install grunt-contrib-imagemin//图片压缩

  详细

npm install grunt-contrib-compress//打压缩包

   详细

6.产出文档

grunt-jsdoc (git被墙了,要用代理才能装)

npm install jsdoc@"<=3.3.0"

   详细

contrib-yuidoc

npm install grunt-contrib-yuidoc

详细

jsdoc的文档请移步

http://usejsdoc.org/

7.常用插件

contrib-clean 清理文件夹

npm install grunt-contrib-clean

详细

contrib-copy 拷贝文件夹

npm install grunt-contrib-clean

详细

这样说来grunt完全能够满足我们日常中的需求。

怎样获取自己想要的插件呢?

  1.grunt官网插件的名字都很明了,ctrl+f直接搜

  2.npm 使用关键字搜索

  3.github

  4.chrome商店,会找到意想不到的好东西

-----

  发现插件还蛮多的,写了不少。约定好的实例讲解只能放到下一讲了。

Gruntjs提高生产力(二)的更多相关文章

  1. Gruntjs提高生产力(三)

    以下例子来自真实项目,有所删减 grunt-test project 目录结构如下 一我的目的: 1.在src-dev目录中开发最终产出于src目录 2.src-dev中的index目录相当于一个wi ...

  2. Gruntjs提高生产力(四)

    思考: 1.grunt以工程为单位安装插件? 如果有新工程就要重新安装插件或者把安装好的插件拷贝过去.这样很麻烦,解决方案是需要用grunt的项目统一放在grunt项目中. 2.每次需要针对项目编写g ...

  3. Gruntjs提高生产力(一)

    gruntjs是一个基于nodejs的自动化工具,只要熟悉nodejs或者又一定js经验就可以熟练应用. 1. 安装 a. 保证已安装了nodejs,并带有npm b.安装客户端命令行工具,grunt ...

  4. [置顶] 提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)

    官方网站:http://jodd.org/ 下载地址:http://jodd.org/download/index.html Jodd=tools + ioc + mvc + db + aop + t ...

  5. [置顶] 提高生产力:Web开发基础平台WebCommon的设计和实现

    Web开发中,存在着各种各样的重复性的工作.为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台. Web开发基础平台的目标和功能 1.提供一套基础的开发环境,整合了常用的框架 ...

  6. js基础提高(二)

    JavaScript基础提高(二) 上篇写的是JavaScript的历史.基本的数据类型和基本的语法进填的话讲的就深入一些了. js的函数 1.js函数定义的方式 (1)普通方式 语法:functio ...

  7. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  8. 提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)

    官方网站:http://jodd.org/ 下载地址:http://jodd.org/download/index.html Jodd=tools + ioc + mvc + db + aop + t ...

  9. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

    复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能.        幸运的是,Apache Commons IO等开源组件已经帮我们实现了.        我们可以不用重复 ...

随机推荐

  1. jQuery—$让渡

    方法1:(取别名) 方法2:(指定作用域) 场景用例: 解决方案:方法1(取别名) 解决方案:方法2(指定作用域)

  2. ruby中的可调用对象--方法

    上一篇讲了ruby中的可调用对象proc和lambda,他们都是块转换成的对象.ruby中的可调用对象还有方法.通过使用method方法,并且以方法名作为参数(字符串或者符号),就可以得到一个方法对象 ...

  3. 48. Rotate Image(旋转矩阵)

      You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise) ...

  4. 28UDP

    UDP通信流程步骤: 服务端: 等待(被动)接收发送 1: 创建 socket:  socket() 2: 绑定端口:      bind() 3: 读取消息:      read() 4: 发送消息 ...

  5. testng失败截图,注解方式调用。

    今天一整天都在研究testng失败截图的方法,参考网上的前辈们的资料,加上自己的理解,终于搞出来了. package com.dengnapianhuahai; /** * 自定义注释 * */ im ...

  6. C++ 顺序表实现

    线性表就是字面上的意思, 顺序表是线性表基于数组的一种实现, “顺序”这个名字怎么来的并不清楚,可以勉强解释为“存储地址是连续.顺序的”. 另外两种线性表实现分别是“基于链表”和“散列存储”. 顺序表 ...

  7. JS动态事件绑定问题

    今天搞一个连环套的动态选项展示,需要给下拉框动态绑定事件,谁知绑定中出现问题,总是执行第一次绑定的时间而后续绑定的事件没有被触发. //重写增加行方法 function initMainItem(gr ...

  8. mouseleave mouseout时候悬浮框不应该消失的时候消失了 css 解决办法

    要实现的效果和代码思路 简单来说就是 用一个div包着喇叭和悬浮框 悬浮事件写在这个div上 鼠标悬浮到div上的时候 悬浮框出现 最终要做成鼠标从小喇叭移动到下面的框上的时候 下面框是不会消失的. ...

  9. 20145321 《Java程序设计》第3周学习总结

    20145321 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 4.1 类与对象 1.定义类:类定义时用关键词 class. 一个原始码中可以有多个类定义,但只能有一个公开 ...

  10. MR案例:内连接代码实现

    本文是对Hive中[内连接]的Java-API的实现,具体的HQL语句详见Hive查询Join package join.map; import java.io.IOException; import ...